I have a dataset of companies' stock returns on a daily basis. It is easy to
calculate the standard deviation of the returns for each company per year,
using:
egen sigma = sd(ret), by (firmyear)
However, if I wish to do a rolling estimate giving the standard deviation of
the last actual rather than calendar year (e.g. if today is 22 March I want
the standard deviation from 22 Mar 04 to 21 Mar 05, not from 1 Jan 04 to 31
Dec 05), is there an easy way to do that? If I know there are 252 trading
days per year, can I just ask it to calculate the std dev of the last 252
options? I'd like to do something like
egen sigma = sd(ret[_n-252]:ret[_n-1]) if firm[_n-252] == firm[_n]