Roman Ivanov
Roman Ivanov личный блог
29 января 2016, 19:39

Синтез торгового алгоритма методом генетического программирования

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

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

Например, функционал вычисления минимума/максимума в заданном окне получает на вход интересующую величину и значение размера окна, а также имеет 4 выхода: минимум/максимум, позиция точки минимума/максимума в окне.

ГП должен подобрать функционалы и связать их входы и выходы так, чтобы в итоге получился единственный выход типа сигнал (сигнал есть либо нет), который и будет являться сигналом на покупку/продажу. Связанные функционалы с общем случае образуют граф. Целевой функцией является критерий Шарпа с поправкой — наказанием за информационную сложность алгоритма.

Пробовал разрабатывать алгоритмы по этому методу, но позже забросил, поскольку выхлопа получалось меньше чем от более простых способов описания алгоритмов. Да и вычислительная сложность оказалась чрезмерно велика. К тому же алгоритмы с точки зрения человека получались мягко говоря странные и поверить в их устойчивость было трудно.

Но недавно, проверяя на новой истории уже давно разработанные алгоритмы, обнаружил довольно неожиданный экземпляр. Питается он 5-минутными барами. Эквити изображена на рисунке. Синими вертикальными линиями показана область использованная при оптимизации ГП. Справа от черной линии новые данные, которые никак не могли использоваться при разработке стратегии. На новых данных пока 24 позиции, но с довольно убедительной статистикой. 16 последних позиций уже отработано в реале (естественно в полюс). Будем посмотреть.

Синтез торгового алгоритма методом генетического программирования

Ниже показан граф алгоритма. Из него в первом приближении понятно как происходит вычисление. Число в начала строки — условный номер функционала. В скобках показано с чем связываются входы данного функционала. (<номер функционала — источника>, <номер выхода>).

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

0 TGF_PriceData
 ValueIndex = viClose
1 TGF_BarNumber
 Value = 33
2 TGF_MinMax (0,0)(1,0)
3 TGF_BarNumber
 Value = 34 TGF_Delay (2,0)(3,0)
5 TGF_PriceData
 ValueIndex = viLow
6 TGF_MovingAverageFunc (5,0)(3,0)
7 TGF_MovingAverageFunc (6,0)(3,0)
8 TGF_DFaverage0 (7,0)(3,0)
9 TGF_Subtractor (4,0)(8,0)
10 TGF_BarNumber
 Value = 9
11 TGF_MinMax (9,0)(10,0)
12 TGF_BarNumber
 Value = 5
13 TGF_DFaverage0 (11,0)(12,0)
14 TGF_MovingAverageFunc (13,0)(12,0)
15 TGF_One
 Value = 0.18
16 TGF_IsGreateThen (14,0)(15,0)
17 TGF_Delay (16,0)(12,0)
18 TGF_BarNumber
 Value = 91
19 TGF_SignalTail (17,0)(18,0)
20 TGF_BarNumber
 Value = 53
21 TGF_SignalTail (19,0)(20,0)
22 TGF_SignalFrontDetector (21,0)
Results (22,0)

14 Комментариев
  • Увидишь такое и думаешь: Вникать или не вникать? Но помогает попытка узнать что автор из себя представляет в трейдинге? В ЛЧИ нет. В разгонах не участвовал. Прогнозы на 100500 пунктов не делал. Теперь ответ ясен:)
  • MTrader
    29 января 2016, 20:21
    тестер собственный, на чем пишите? какие у вас наборы стратегий арбитраж/парный/баскет, тренд/контр, хфт, ГП?
      • ves2010
        29 января 2016, 21:23
        даже если все ок и алгоритм работет… торговать его не сможешь… т.к 2 боковика в полтора года… что писец как напряжно
  • Кирилл Браулов
    01 февраля 2016, 10:25
    А как насчет гипотезы эффективного рынка? В нескольких источниках встречал утверждение, что как минимум верна слабая форма этой гипотезы. Т.е. любая прошлая информация уже учтена в текущих ценах. Следовательно, любой ТА и паттерны не должны работать. Или наш рынок неэффективен?
      • Кирилл Браулов
        01 февраля 2016, 12:45
        ivanovr, 
        даже сам их создает

        Верите в кукла? 

        А сколько параметров в алгоритме из исходного поста? Нет ли там переподгонки? А то в одной книге в разделе про опасность оверфиттинга прочитал смешную шутку: «дайте мне 4 параметра, и я нарисую вам слона (подберу соответствующий функционал), дайте мне 5ый параметр — и я заставлю этого слона махать хоботом» :)

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

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