凌云1009 发表于 2016-12-9 18:28
楼主后来怎么求的啊?
gen b_mpt1_36 =.
gen b_smb_36= .
gen b_hml_36 = .
gen b_ff_cons_36=.
gen sd_ff_residual_36=.
gen sd_ff_skew_36 =.
local max = 0
local min = 1
qui {
count
local total = r(N)
levels stockcode, local(levels)
foreach l of local levels {
sum ex_return if stockcode == `l'
local max = r(N) + `max'
disp `l'
forv i = `min'/`=`max' -35' {
local j = `i' + 35
if `j' <= `total' {
reg ex_return mpt smb hml in `i'/`j'
tempvar res
predict `res' if e(sample), res
sum `res',detail
replace sd_ff_residual_36= r(sd) in `j'
replace sd_ff_skew_36 = r(skewness) in `j'
replace b_mpt1_36= _b[mpt] in `j'
replace b_smb_36= _b[smb] in `j'
replace b_hml_36 = _b[hml] in `j'
replace b_ff_cons_36= _b[_cons] in `j'
}
drop `res'
}
}
}
其中:数据都是使用过去3年(36个月),FF三因子:mpt(市场组合),smb(规模因子),hml(账面因子),ff_cons为常数项,sd_ff_residual为残差,sd_ff_skew为残差偏度。。。