我需要为S& P500公司计算每周回报和每日价格的波动率并保持结果。
数据:
ticker Date Price
A 03jan2011 41.88
A 04jan2011 42.00
...
AAPL
我使用一个看起来像这样的表达式(以相同的方式表示波动性):
gen return = log(price[_n] / price[1]), by(ticker)
collapse return, by(ticker)
但我不确定什么是正确的形式,因为有些星期有4天,有些则有5天。
答案 0 :(得分:0)
你说你想要每周回报,所以我会这样做:
gen weeknumber=wofd(date) //this gives you the week number starting from jan1960
sort ticker date
bysort ticker weeknumber:gen temp=_n
bysort ticker weeknumber:gen temp2=_N
drop if temp!=temp2
drop temp temp2
***Now you have only weekly returns***
gen return = log(price[_n] / price[_n-1]), by(ticker)