Блог им. SciFi

Применение ARIMA для предсказания цены на RIM6 на R (Часть 2)

    • 09 июня 2016, 12:28
    • |
    • SciFi
  • Еще
Вчера написал пост Применение ARIMA для предсказания цены на RIM6 на R

Но в нем было всего 2 сделки. Непрезентативно. 

Попробовал сегодня еще раз руками поскальпить, предсказывая цену с помощью R на ближайшие 5 минут. В принципе, заработал 500 р за 17 сделок (34 операции) 1 лотом RIM6.  

Применение ARIMA для предсказания цены на RIM6 на R (Часть 2)

Выводы

1. ARIMA работает как я ожидал в том плане, что когда цена сильно падает, модель предсказывает цену ниже, когда цена стоит — предсказание примерно как цена закрытия. Спред считается хорошо — заявки исполняются. Когда модель предсказывает цену ниже текущей, нужно ставить заявку только на шорт. А то я ловил ножи и выходил с убытком несколько раз. 

2. Я закрывал сделку по цели, не давал прибыли течь. Может быть стоит сначала предсказывать цену на следующие 5 минут и если цена ниже, то шорт не закрывать, а держать дальше, двигая заявку на выкуп. Тогда будет экономия на комиссии и может быть удастся ловить крупные движения. 

3. Поизучал GARCH, но применять ARIMA + GARCH сложно, GARCH часто не сходится и модель не работает. Это не удобно. Пока оставлю только ARIMA. РТС падал с нефтью. Нужно попробовать добавить в ARIMA модель еще внешние регрессоры — нефть и S&P / DAX. 

4. Вроде бы мат. ожидание положительное и на мат. моделях можно делать деньги.

5. Выходил не по стопу, а двигал заявку на выкуп по новому предсказанию. И это работает. То есть проходит свеча, если я в минусе, то я пересчитываю следующее предсказание и двигаю заявку на закрытие. Это еще одно преимущество мат. моделей — не надо бить по стакану. Все делается лимитированными заявками.
★9
6 комментариев
Если добавить час, 4 часа и день. Может еще интереснее получиться. Общее направление понимать.
avatar
1) Используйте в качестве предсказания хотя бы X*_{t+1} — X_{t} > const. Лучше рассматривать что-то а-ля VaR, т.е. брать некоторую квантиль, с которой гарантированно по прогнозу получаете прибыль. X*_{t+1} имеет нормальное распределение, параметры распределения известны (интервальные оценки как раз на них строятся).
2) Увеличение горизонта прогнозирования ухудшало поведение модели (по крайней мере в моих изысканиях).
3) ARIMA+GARCH вполне сносно фитится. Для этого используйте fGarch или rugarch. Правда, ньюанс выбора модели в том, что сложность подбора адекватной модели ARIMA-GARCH высока — де-факто требуется зафиттить p*q*s*e*(количество используемых распределений) моделей. Обычно порядок GARCH берут не выше (2,2). А вот распределения надо проверять методом отсечки незначимых коэффициентов распределений. Т.е. возможна такая последовательность: sstd->std->norm. или sged->snorm и т.п. Внешние регрессоры проще добавлять уже тогда в модели VAR/VECM и их обобщения.
4) Положительное мат.ожидание чего? С учётом комиссий надо смотреть. 
5) На сильных движениях рынка можно много оставить в таком случае.
Бобровский Дмитрий, 
1. Хорошая идея. Попробую. 
2. Горизонт у меня 1 свеча, потом пересчет. Пересчет быстрый на фоне 5 минутного интервала.
3. На GARCH я пока не ставлю точку, надо плотнее изучить это сочетание. Fit достаточно медленный для ARIMA-GARCH. 
4. Положительное мат. ожидание такой торговли с учетом комиссии. Маржа за 34 операции (17 сделок) 513, биржевой сбор -34 (2 р. на сделку или 1 р. на лот) и комиссия брокера -24 (0.71 руб на лот). При этом у меня стандартный тарифный план у брокера Открытие. Называется Универсальный.
5. На сильных движениях все равно будут потери, если бить по стакану. Модель кстати предсказывает цену ниже последнего закрытия, поэтому заявка на закрытие ставится ниже и это похоже на то, чтобы ударить с проскальзыванием. Просто более аккуратно получается. Но посмотрим. Вот сегодня РТС упал почти на 2000 пунктов пока я торговал. И я даже лонговал несколько раз, но все равно вышел в плюс.
avatar
SciFi, в принципе, фиттинг модели ARIMA-GARCH не сильно дольше фиттинга обычной модели ARIMA. Правда, порядок количества моделей для фиттинга возрастает сильно.
Дальше, важно брать достаточно большую выборку большую, т.к. тесты единичных корней могут сильно врать на малых выборках (сходимость порядка sqrt(N) вроде для классических тестов единичного корня). 
Насчёт движений и т.п. — попробуйте торговать на границах. Смысл такой — стационарный случайный процесс всегда тяготеет к среднему значению. Т.о. продавая и покупая на соответствующих квантилях, а закрывая сделку на уровне X*_{t+1}, можно быть в плюсах.
Да, классически DF и ADF использовать в случае ARIMA-GARCH нельзя. Тут вроде kpss или pp тесты можно использовать, которые учитывают возможный эффект гетероскедастичности e_{t} в МА-части. 
Думаю результат будет сильно лучше в часы когда не выходит никакая статистика.
avatar
Кстати, фиттинг ARIMA-GARCH моделей с разными параметрами распределения ошибки и порядками моделей можно неплохо реализовать через parLapply из пакета «parallels». Плюс, надеюсь, у Вас стоит MRO, а не базовый R с cran-r.

Да, порекомендую ещё один хороший пакет — arfima. Он позволяет фиттить arfima-модели с разными предположениями относительно спектра процесса, моделируя тяжёлые хвосты распределений для прогнозов. Написан толково, мощный, удобный. Коэффициент d для фрактальной части можно взять посредством wmtsa библиотеки, там есть методы оценки данной размерности.

теги блога SciFi

....все тэги



UPDONW
Новый дизайн