Я размещаю данные в моем фрейме, но мои графики такие же - PullRequest
0 голосов
/ 17 мая 2018

У меня есть данные возврата, которые индексируются с помощью DateTimeIndex следующим образом

>ES.head()

Date
2006-01-02 19:15:00   -0.000199
2006-01-02 19:20:00   -0.000199
2006-01-02 19:25:00    0.000000
2006-01-02 19:30:00   -0.000099
2006-01-02 19:35:00   -0.000099
Name: Price, dtype: float64

Когда я строю средние значения за 5 минут, я получаю следующее

fig = plt.figure()
ax1 = fig.add_subplot(111)
plt.plot(ES.groupby([ES.index.hour, ES.index.minute]).mean())
ax1.set_ylabel('Return')
ax1.set_xlabel('5-minute interval')

enter image description here

Когда я теперь отбрасываю все наблюдения с 16:00 до 17:00 и строю изображение, я получаю одно и то же изображение!?

mask =  ~((ES.index.hour > 16) & (ES.index.hour < 17))
ES = ES[mask]

fig = plt.figure()
ax1 = fig.add_subplot(111)
plt.plot(ES.groupby([ES.index.hour, ES.index.minute]).mean())
ax1.set_ylabel('Return')
ax1.set_xlabel('5-minute interval')

С этим графиком

enter image description here

Я застрял в этом вопросе уже более суток, потому что я хочу снять возврат с 16:00 до 17:00 из-зак эффектам открытия / закрытия рынка, создающим чрезмерную доходность.

Почему мой фрейм данных не выполняет правильную поднаборку?

edit:

>ES['2007-01-03 15:30':'2007-01-03 17:30']
Date
2007-01-03 15:30:00    0.000263
2007-01-03 15:35:00    0.000000
2007-01-03 15:40:00   -0.000146
2007-01-03 15:45:00    0.000058
2007-01-03 15:50:00    0.000175
2007-01-03 15:55:00    0.000058
2007-01-03 16:00:00    0.000117
2007-01-03 16:05:00    0.000000
2007-01-03 16:10:00    0.000000
2007-01-03 16:15:00    0.000000
2007-01-03 16:20:00   -0.000175
2007-01-03 16:25:00    0.000175
2007-01-03 16:30:00    0.000000
2007-01-03 16:35:00    0.000000
2007-01-03 16:40:00    0.000000
2007-01-03 16:45:00    0.000000
2007-01-03 16:50:00    0.000000
2007-01-03 16:55:00    0.000000
2007-01-03 17:00:00    0.000058
2007-01-03 17:05:00    0.000292
2007-01-03 17:10:00   -0.000175
2007-01-03 17:15:00    0.000000
2007-01-03 17:20:00    0.000000
2007-01-03 17:25:00    0.000000
2007-01-03 17:30:00    0.000000
Name: Price, dtype: float64

>mask =  ~((ES.index.hour > 16) & (ES.index.hour < 17))
>ES = ES[mask]

>ES['2007-01-03 15:30':'2007-01-03 17:30']
Date
2007-01-03 15:30:00    0.000263
2007-01-03 15:35:00    0.000000
2007-01-03 15:40:00   -0.000146
2007-01-03 15:45:00    0.000058
2007-01-03 15:50:00    0.000175
2007-01-03 15:55:00    0.000058
2007-01-03 16:00:00    0.000117
2007-01-03 16:05:00    0.000000
2007-01-03 16:10:00    0.000000
2007-01-03 16:15:00    0.000000
2007-01-03 16:20:00   -0.000175
2007-01-03 16:25:00    0.000175
2007-01-03 16:30:00    0.000000
2007-01-03 16:35:00    0.000000
2007-01-03 16:40:00    0.000000
2007-01-03 16:45:00    0.000000
2007-01-03 16:50:00    0.000000
2007-01-03 16:55:00    0.000000
2007-01-03 17:00:00    0.000058
2007-01-03 17:05:00    0.000292
2007-01-03 17:10:00   -0.000175
2007-01-03 17:15:00    0.000000
2007-01-03 17:20:00    0.000000
2007-01-03 17:25:00    0.000000
2007-01-03 17:30:00    0.000000
Name: Price, dtype: float64

Кажется, что моя маска не работает,однако, когда я пытаюсь сделать следующее, графики остаются такими же, пока удаляются соответствующие строки.

>ES['2007-01-03 15:30':'2007-01-03 17:30']
Date
2007-01-03 15:30:00    0.000263
2007-01-03 15:35:00    0.000000
2007-01-03 15:40:00   -0.000146
2007-01-03 15:45:00    0.000058
2007-01-03 15:50:00    0.000175
2007-01-03 15:55:00    0.000058
2007-01-03 16:00:00    0.000117
2007-01-03 16:05:00    0.000000
2007-01-03 16:10:00    0.000000
2007-01-03 16:15:00    0.000000
2007-01-03 16:20:00   -0.000175
2007-01-03 16:25:00    0.000175
2007-01-03 16:30:00    0.000000
2007-01-03 16:35:00    0.000000
2007-01-03 16:40:00    0.000000
2007-01-03 16:45:00    0.000000
2007-01-03 16:50:00    0.000000
2007-01-03 16:55:00    0.000000
2007-01-03 17:00:00    0.000058
2007-01-03 17:05:00    0.000292
2007-01-03 17:10:00   -0.000175
2007-01-03 17:15:00    0.000000
2007-01-03 17:20:00    0.000000
2007-01-03 17:25:00    0.000000
2007-01-03 17:30:00    0.000000
Name: Price, dtype: float64
    ​
>ES = ES.drop(ES.between_time('16:00','17:00').index)

>ES['2007-01-03 15:30':'2007-01-03 17:30']
Date
2007-01-03 15:30:00    0.000263
2007-01-03 15:35:00    0.000000
2007-01-03 15:40:00   -0.000146
2007-01-03 15:45:00    0.000058
2007-01-03 15:50:00    0.000175
2007-01-03 15:55:00    0.000058
2007-01-03 17:05:00    0.000292
2007-01-03 17:10:00   -0.000175
2007-01-03 17:15:00    0.000000
2007-01-03 17:20:00    0.000000
2007-01-03 17:25:00    0.000000
2007-01-03 17:30:00    0.000000
Name: Price, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...