京竹天 发表于 2016-3-17 11:45 
请问楼主后来是怎么解决的?
这是利用股票日收益率数据进行的FF三因子回归,将回归残差保存到sd_residual,可以参考一下,希望有帮助。。。

gen b_x1=.
gen b_x2= .
gen b_x3= .
gen b_cons=.
gen sd_residual=.
local max=0
local min=1
qui {
count
local total=r(N)
levels stockcode, local(levels)
foreach l of local levels {
sum return stockcode==`l'
local max=r(N) + `max'
disp `l'
forv i=`min'/`=`max' -4' {
local j=`i' + 4
if `j'<=`total' {
reg return index smb hml in `i'/`j'
tempvar res
predict `res' if e(sample), res
sum `res'
replace sd_residual = r(sd) in `j'
replace b_x1 = _b[index] in `j'
replace b_x2 = _b[smb] in `j'
replace b_x3 = _b[hml] in `j'
replace b_cons = _b[_cons] in `j'
}
}
local min = `min' + `max'
}
}