uralpro
uralpro личный блог
22 сентября 2015, 08:58

Проверка эффективности модели Маркова на фьючерсах FORTS

RTS-9.15_1

Ранее на моем сайте была опубликована статья по марковским моделям скрытых состояний (НММ) — часть 1, часть2, часть 3, часть 4. Мною разработана программа на основе этой публикации, с помощью которой была протестирована предсказательная способность HMM на некоторых инструментах рынка FORTS. Программа написана на языке C#, с применением сторонней библиотеки Accord.NET.

На вход программы подаются ценовые ряды фючерсов, представляющие собой последовательность свечей со значениями Open, Close, High, Low. Количество входных свечей можем задавать произвольно, эта величина является первым параметром. На выходе получаем прогноз на будущее направление движения цены. Горизонт прогноза в виде интервала, также измеряемого в количестве свечей, является вторым параметром. Третий параметр — это временной интервал самой свечи, определяется входным файлом. Исходные данные я брал с сайта Финам в виде текстовых файлов для каждого инструмента.

Модель Маркова обучается на выборке, которая получается путем деления исходного ценового ряда на две части с соотношением 70/30. Первые 70% последовательности берутся как тренировочная выборка, вторые 30% — как выборка out-of-sample, на ней проверяется устойчивость полученной модели и отсутствие подгонки. В качестве входных значений для HMM берутся логарифмические отношения Close/Open, High/Low, Close/Low, High/Close. Строится три модели Маркова для каждого из состояний — рост цены, падение, флэт.

Результаты тестирования представлены в виде следующих числовых значений:

  • Probability — вероятность верного предсказания направления движения цены на горизонте прогнозирования (в процентах);
  • Profit — прибыль, полученная при следовании предсказаниям модели ( в процентах от начальной цены актива);
  • MaxDD — максимальная просадка по тестируемой выборке (в процентах).

Также в программе строится график кумулятивной прибыли по прогнозам в пунктах, в расчете на один контракт актива.

Итак, полученные результаты тестирования:

1. Фьючерс RTS-9.15, ценовой ряд на периоде 16.06.2015- 16.07.2015, интервал свечи — 5 мин.

RTS-9.15_1

На графике прибыли синия линия — это результат модели на тренировочной выборке, красная линия — выборка out-of-sample.

Как можно видеть, при вероятности предсказания направления цены равным 50,79% на тренировочной выборке, мы получаем прибыль в размере 26,86% примерно за 22 календарных дня. На выборке out-of-sample показатели даже лучше — вероятность предсказания 51,43% и прибыль 30,45% за 7 календарных дней. При этом максимальная просадка в обоих случаях не превышает 9%. Все указанные результаты получены при подаче на вход 40 свечей и горизонте прогноза в 3 свечи.

Посмотрим, не является ли такая производительность нашей модели результатом подгонки. Для этого проверим обученную модель на этом же инструменте, но возьмем выборку за следующий месяц — с 17.07.2015 по 16.08.2015:

RTS-9.15_2

На данном отрезке вероятность предсказания упала ниже 50% и составила 48,95%. Но прибыльность осталась положительной — 30,98% за месяц. Это означает, что абсолютная прибыль при верном предсказании направления цены превышает абсолютный убыток при неверном предсказании. Максимальная просадка возросла до 11,45%.

Для лучшего понимания работы модели посмотрим, как двигалась цена инструмента в рассматриваемые периоды. Для периода 16.06.2015- 16.07.2015:

RTS-9.15_price_1

Для периода 17.07.2015 — 16.08.2015:

RTS-9.15_price_2

Можно отметить, что и в том, и в другом случае наблюдаются как периоды роста цены, так и периоды ее снижения, а также моменты неопределенности — флэта. В связи с этим можно предположить, что вероятность подгонки на данных диапазонах мала.

2. Фьючерс Si-9.15, период 16.06.15 по 16.07.15, интервал свечи 15 мин.

Si-9.15_1

На тренировочной выборке вероятность предсказания направления составила 48,71%, прибыль — 7,05% за 22 календарных дня. На выборке out-of-sample результаты лучше — вероятность предсказания 57,06%, прибыль 11,68% за 7 календарных дней. Модель принимает на вход 30 свечей, горизонт прогноза — 3 свечи. Мы видим, что параметры модели достаточно близки к предыдущей, хотя у нас другой инструмент и другой интервал свечи — 15 мин.

Проверим, имела ли место подгонка, на периоде 17.07.2015 — 17.08.2015:

Si-9.15_2

Вероятность предсказания — 54,17%, прибыль — 20,58% за один календарный месяц. Однако максимальная просадка получилась достаточно большой — почти 18%. Выводы по данному инструменту получаются неоднозначные — вроде бы сохраняется приличная прибыльность и вероятность предсказания, однако волатильность прибыли значительная.

Сделаем еще одну проверку — имитируем скользящее окно для модели. Для этого просто еще раз обучим модель с теми же параметрами, уже на втором периоде — 17.07.2015 — 17.08.2015, и результат для выборки out-of-sample (30% последней части диапазона) продемонстрирует нам эффективность скользящего окна, то есть если бы мы  двигались за текущим временем, постоянно переобучая модель:

Si-9.15_3

Как видим, показатели неплохие — вероятность предсказания 51,21%, прибыль 8,48% на одной неделе и просадка — 6,38%.

Проверим графики цены. Для периода 16.06.15 — 16.07.15:

Si-9.15_price_1

Для периода 17.07.2015 — 17.08.2015:

Si-9.15_price_2

Мы видим, что графики цены похожи на обоих диапазонах — цена демонстрирует рост. Поэтому для данного инструмента вероятность подгонки остается высокой, хотя на 15 мин интервалах существуют как периоды роста, так и падения цены. Применение модели Маркова для данного варианта требует дополнительного тестирования.

Выводы. Модель скрытых состояний Маркова вполне применима для предсказания направления будущего движения цены актива, в том числе и на внутридневных интервалах торговли. Для меня была сюрпризом достаточно высокая эффективность модели, при том, что ее параметрами были исторические данные все того же ценового ряда актива. Близкие значения параметров для разных инструментов также добавляют уверенности в устойчивости модели. Однако при тестировании были отмечены и недостатки — диапазон применяемых параметров достаточно узок, и их изменение на 20-30% ( речь идет о количестве входных свечей и горизонта прогноза) может привести к резкому снижению предсказательной способности.

Повысить эффективность и устойчивость модели возможно путем добавления неценовых параметров — объема покупок/продаж, состояния книги заявок и т.п., а также правильного выбора статистического распределения этих параметров (оно используется при составлении модели Маркова, и в рассмотренном случае выбиралось нормальное распределение с нулевым средним и среднеквадратическим отклонением, вычисляемым по выборке).

Другие стратегии и алгоритмы автоматической торговли смотрите на моем сайте — www.quantalgos.ru

33 Комментария
  • П М
    22 сентября 2015, 09:33
    интересно. но честно говоря интуитивно не верится что на большой выборке, вне рамок обучения, точность угадывания будет сильно выше 50%
    я про эти модели читал старую статью, можно погуглить по запросу «модель маркова валюты perl», даже слямзил оттуда несколько хороших идей
  • Сергей Иконников
    22 сентября 2015, 09:35
    Некоторые теории утверждают, что встретить динозавра на улице можно примерно с той же вероятностью — 50%.
    Точность предсказания 50% даёт обычное подбрасывание монеты
  • Marco
    22 сентября 2015, 09:37
    О, круто. Я сам пробовал HMM, но хорошего результата не получил. Похоже, стоит перепробовать. :)
  • Marco
    22 сентября 2015, 09:39
    P.S.: Почему не пишете, куда завтра пойдет доллар/нефть/fRTS? :)

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн