楼主: 愤怒阿美
2653 3

[编程问题求助] stata循环命令执行很慢,求改进方法# 事件研究法 #carhart四因子模型 [推广有奖]

  • 0关注
  • 0粉丝

硕士生

3%

还不是VIP/贵宾

-

威望
0
论坛币
287 个
通用积分
2.9000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
401 点
帖子
13
精华
0
在线时间
239 小时
注册时间
2017-12-2
最后登录
2024-5-14

88论坛币
是这样的,我想用carhart 四因子模型计算预期的异常回报。总共事件有160347个,交易日的数据总规有九百多万条,现在已经得到了估计的回归系数。我写了下面的命令,但是运行速度十分缓慢,求改进方法。因为数据很多,本想dataex一个例子的,但是发现不论怎么做都不具有代表性,所以只能口头描述:在九百多条交易日的数据中,有十六万条的event=_n,其他event都为缺失,只有event不为缺失时,此观测值的带有回归系数b_x,其他均为缺失。但是其他数据所有观测值完整。命令如下:

sort Stkcd date2
forvalue i=1/160347 {
qui sum date2 if event==`i'
local t=`r(mean)'  //得出事件时间
qui sum Stkcd if event==`i'
local id=`r(mean)'    //得出事件影响的企业id
qui sum n if event==`i'                                                   
local nn=`r(mean)'   //定位到行数
forvalue j=1/90{
gen v=1+b_mkt_rf[`nn']*mkt_rf[`nn'+`j']+ b_smb[`nn']*smb[`nn'+`j']+ b_hml[`nn']*hml[`nn'+`j']+ b_umd[`nn']*umd[`nn'+`j']+cons[`nn']  //求出异常回报率,其中b_是由事前窗口得出的回归系数,没有b的是1-90天的值
qui sum v
local w=`w'*`r(mean)' //连乘求出bhar
drop v
}
replace k=`w' if event==1  //将结果填入k
display " finish `i' "
}


拜托各位大神帮忙看看了!

关键词:STATA循环命令 carhart Stata 事件研究法 事件研究
沙发
蓝色 发表于 2019-8-20 16:41:34 |只看作者 |坛友微信交流群
1、慢只要能执行,没有错误,就可以了
2、想改进,还是需要部分数据,别人才能知道数据结构,才能尝试改进
比如只截取出前5个event的数据,别人也能知道你的是什么
才能改进

使用道具

藤椅
愤怒阿美 发表于 2019-8-20 19:46:08 |只看作者 |坛友微信交流群
蓝色 发表于 2019-8-20 16:41
1、慢只要能执行,没有错误,就可以了
2、想改进,还是需要部分数据,别人才能知道数据结构,才能尝试改进 ...
谢谢老师,可能是我的电脑太差了,我换个机器尝试一下!

使用道具

楼主,我觉得你可以这样算AR:在循环里面reg+predict来估计正常收益,你现在的代码太繁琐了,电脑负担太大了,自然就会慢下来了

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-21 09:34