У меня есть набор данных временного ряда для ежедневных цен закрытия акций.Данные представлены в следующем формате:
+---------------------+
| date close |
|---------------------|
1. | 01sep2008 9210.15 |
2. | 02sep2008 9229.51 |
3. | 03sep2008 9239.15 |
4. | 04sep2008 9239.26 |
5. | 05sep2008 9342.19 |
|---------------------|
6. | 08sep2008 9296.23 |
7. | 09sep2008 9279.62 |
8. | 10sep2008 9315.68 |
9. | 11sep2008 9263.39 |
10. | 12sep2008 9253.92 |
+---------------------+
Поскольку торговля не происходит в течение всей недели из-за выходных и даже в течение недели, акция не может быть продана.Поэтому пробелы во временных рядах неизбежны.
Мне нужно использовать следующую формулу для генерации результатов:
gen returns = ln(close/l.close)
Однако из-за пробелов во временных рядах генерируется много пропущенных значений.
Как мне решить эту проблему?
l.close
должно быть предыдущим значением цены закрытия независимо от ее даты.
Вывод ниже дает представление о том, что я хочу (сначала я сгенерировал переменную задержки):
+-------------------------------+
| date close lag |
|-------------------------------|
1. | 01sep2008 9210.15 . |
2. | 02sep2008 9229.51 9210.15 |
3. | 03sep2008 9239.15 9229.51 |
4. | 04sep2008 9239.26 9239.15 |
5. | 05sep2008 9342.19 9239.26 |
|-------------------------------|
6. | 08sep2008 9296.23 9342.19 |
7. | 09sep2008 9279.62 9296.23 |
8. | 10sep2008 9315.68 9279.62 |
9. | 11sep2008 9263.39 9315.68 |
10. | 12sep2008 9253.92 9263.39 |
+-------------------------------+
Вместо этого я получаю следующее:
+-------------------------------+
| date close lag |
|-------------------------------|
1. | 01sep2008 9210.15 . |
2. | 02sep2008 9229.51 9210.15 |
3. | 03sep2008 9239.15 9229.51 |
4. | 04sep2008 9239.26 9239.15 |
5. | 05sep2008 9342.19 9239.26 |
|-------------------------------|
6. | 08sep2008 9296.23 . |
7. | 09sep2008 9279.62 9296.23 |
8. | 10sep2008 9315.68 9279.62 |
9. | 11sep2008 9263.39 9315.68 |
10. | 12sep2008 9253.92 9263.39 |
+-------------------------------+
Значение в 08sep2008
отсутствует, но здесь должно быть взято значение 05sep2008
.
Пример данных:
* Example generated by -dataex-. To install: ssc install dataex
clear
input float(date close)
17776 9210.15
17777 9229.51
17778 9239.15
17779 9239.26
17780 9342.19
17783 9296.23
17784 9279.62
17785 9315.68
17786 9263.39
17787 9253.92
17790 9233.21
17791 9223.77
17792 9216.23
17793 9202.31
17794 9200.6
17797 9200.22
17798 9199.51
17799 9190.75
17800 9184.15
17804 9182.8
17805 9179.68
17811 9178.97
17812 9181.48
17813 9178.73
17814 9181.35
17815 9181.35
17818 9184.24
17819 9184.24
17820 9184.24
17821 9184.24
17822 9184.24
17825 9184.75
17826 9186.9
17827 9183.74
17828 9182.88
17829 9182.88
17832 9182.88
17833 9182.88
17834 9182.88
17835 9182.88
end
format %td date