Dear all,

For my master thesis, I would like as a first step to run a Fama-French three factor regression, and compute idiosyncratic volatility for every common stock as the standard deviation of one, three, six, or twelve months of daily error term.

For this, I downloaded permno, date, and return of stocks from CRSP and daily FF 3 factors. I dropped all missing values of return (unbalanced time series data)and merged both datasets based on date.

I created a variable for time :

egen time = group(date)
label variable time "Date Identifier"



My data looks like this :

Array

I declared a time series dataset with a panel variable (permno) :

tsset permno time, generic

I want to save the error terms for each stock every day so that I can later create a loop to compute standard deviation of that error term based on 1,3,6,12 months of daily data. How can I do that ?


I know I can have an output of factor loadings and rmse for every stock by running :


statsby _b[MktRF] _b[SMB] _b[HML] rmse = e(rmse), by(permno) saving(try reg.dta, replace): regress excessretx MktRF SMB HML

but again I would be losing the time dimension that I need to compute monthly idiosyncratic volatility of every stock.