2015-02-27 2 views
2

Мне нужно рассчитать для S & P500 компании, еженедельные возвраты и волатильность от ежедневных цен и сохраняйте результаты.Рассчитать еженедельную доходность и волатильность от дневных цен в Stata

данных:

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 дней.

+1

Ваш код сравнивает цену наблюдения '_n' к первой цене в' ticker' панели. Поэтому для любого конкретного «тикера», похоже, вы сравниваете, например, 'price' в' 26feb2011' с 'price' в' 03jan2011'. Многие из нас не могли сказать, это то, что вы ищете. Некоторые люди могут задавать вопрос не по теме, поскольку вы только спрашиваете, правильно ли вы делаете что-то. –

+1

См. Раздел «Запросить» в [справочном центре] (http://stackoverflow.com/help). –

ответ

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) 
+1

Стата недели не соответствуют неделям, используемым где-либо еще, поэтому рекомендация 'wofd()', вероятно, будет сомнительным советом. По сути, вам лучше определять недели в определенный день, их начала, конца или середины. Для более полной истории см. Http://www.stata-journal.com/sjpdf.html?articlenum=dm0052 и ее продолжения в _Stata Journal_. –

Смежные вопросы