lz这里没有个股的数据呀,如果有个股的数据,可以直接写循环,每个股票估计一次四因子模型得出残差,然后按照年度计算其标准差即可
*******写循环部分
levelsof 股票代码, local(stocks)
gen resid_of_stock_i = .
foreach stock of local stocks{
cap reg return_of_stock_i RiskPremium2 SMB2 HML2 UMD2 if 股票代码 == "`stock'"
//这里的 return_of_stock_i 就是你下载的股票回报率
cap predict x, r
cap replace resid_of_stock_i = x if 股票代码 == "`stock'"
cap drop x
}
********计算标准差部分
sort 股票代码 year
bysort 股票代码 year: egen sd_residual = sd(resid_of_stock_i)
duplicates drop 股票代码 year,force
//这样每年每个股票就有一个sd_residual 了