Вернуть неверные расчеты в данных панели - PullRequest
0 голосов
/ 14 ноября 2018

В настоящее время я работаю с данными панели в Stata и запускаю следующие команды, чтобы определить панель:

encode ticker, generate(ticker_n)
xtset ticker_n time

Где тикер - это строка (тикер котируемой на бирже компании), а время - целое число от 930 (открытие рынка) до 1559 (закрытие рынка). Таким образом, время здесь указывает минуты открытия биржи. На каждую минуту открытия фондового рынка у нас есть все закрытые цены тикеров, перечисленных на фондовой бирже. Образец данных выглядит так:

date        time    open    high    low     close   volume  ticker  ticker_n
09/15/2008  930     33.31   33.31   33.31   33.31   2135    zeus    zeus
09/15/2008  931     32.94   32.94   32.94   32.94   100     zeus    zeus
09/15/2008  930     10.21   10.21   10.21   10.21   4270    bx      bx
09/15/2008  931     10.46   10.5    10.42   10.44   5700    bx      bx

Затем, пытаясь вычислить доходность (используя цену закрытия), я запускаю следующую команду:

gen return = (close - l.close) / l.close

Однако это приводит к странной ошибке, когда каждый целый час (время = 1100, 1200, 1300 и т. Д.) Результаты вообще не рассчитываются, а Stata просто сообщает "-" для результатов.

Теперь я предполагаю, что что-то пошло не так при определении данных панели, так что Stata не распознает, что наблюдение до 1500 должно быть 1459 (оно ищет 1499, я полагаю?).

Следовательно, мой вопрос заключается в том, как правильно определить данные панели, чтобы Stata распознала, что моя временная ось указана в минутах? Я не нашел ничего в официальной документации Stata, которая помогла мне здесь.

1 Ответ

0 голосов
/ 14 ноября 2018

Действительно: ваша переменная time сильно вас запутывает. Если time идет от 1059 до 1100 или от 1159 до 1200, каждый из них - это прыжок с 41 до Stata. Значение для времени, предшествующего 1100, было бы в момент времени 1099, которого не будет в ваших данных; следовательно, все предыдущие значения для 1100 и т. д. будут отсутствовать. Нет никакого смысла, когда Стата будет смотреть на 1100 и говорить: «О! Это время, поэтому предыдущий раз был бы 1059, и я должен использовать значение для 1059». Применение формата отображения времени не изменит этот сбой, чтобы увидеть время таким, каким вы его понимаете.

Вы не объясняете, как ежедневные даты должны входить в ваш анализ. Вот немного техники для часов и минут в одиночку.

clear 
input time 
930
931 
959 
1000
1001 
1059
1100  
end 

gen double mytime = dhms(0, floor(time/100), mod(time, 100), 0) 

format mytime %tcHH:MM

gen id = 1 
xtset id mytime, delta(60000)  

list mytime L.mytime, sep(0)  

     +-----------------+
     |               L.|
     | mytime   mytime |
     |-----------------|
  1. |  09:30        . |
  2. |  09:31    09:30 |
  3. |  09:59        . |
  4. |  10:00    09:59 |
  5. |  10:01    10:00 |
  6. |  10:59        . |
  7. |  11:00    10:59 |
     +-----------------+
...