Блог им. ivanovr

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

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

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

Например, функционал вычисления минимума/максимума в заданном окне получает на вход интересующую величину и значение размера окна, а также имеет 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)

★11
14 комментариев
Увидишь такое и думаешь: Вникать или не вникать? Но помогает попытка узнать что автор из себя представляет в трейдинге? В ЛЧИ нет. В разгонах не участвовал. Прогнозы на 100500 пунктов не делал. Теперь ответ ясен:)
Самокритичный трейдер, инвесторов не ищу, потому про результаты не рассказываю. В пример могу привести родаковский счет, на котором торгую только роботами. С 01.11.2013 начал разгон с 800 тыр, сейчас 2.5 млн (было частичное реинвестирование и уплата налогов). Личный счет в разы больше, на нем роботами + немного руками.
Разве кого-то можно удивить такой доходностью на ЛЧИ?
avatar
ivanovr, Нет никого нельзя и роботы там другого порядка:)
Slivu_net, а разве я не привел как вела себя система в 2008? Причем оптимизации на этом участке не было! Или вы про какие-то другие черные лебеди?
avatar
тестер собственный, на чем пишите? какие у вас наборы стратегий арбитраж/парный/баскет, тренд/контр, хфт, ГП?
avatar
MTrader, тестер мой, пишу все на Delphi. Работает на барах и по-возможности оптимизирован. Торгую только алгоритмы т.е. фактически паттерны. Во внутрь алгоритма обычно не заглядываю, ориентируюсь только по эквити и средней прибыли на сделку. Потому делить по трендовости затруднительно. Но по наблюдениям за торговлей большинство трендовые.
В проектах заняться «арбитраж/парный/баскет». хфт —  не мое.
avatar
даже если все ок и алгоритм работет… торговать его не сможешь… т.к 2 боковика в полтора года… что писец как напряжно
avatar
ves2010, у меня одновременно торгуется несколько десятков независимых алгоритмов, так что усредняется. Время от времени какие-то алгоритмы исключаю, новые добавляю. И этот когда ни будь выкину :)
avatar
А как насчет гипотезы эффективного рынка? В нескольких источниках встречал утверждение, что как минимум верна слабая форма этой гипотезы. Т.е. любая прошлая информация уже учтена в текущих ценах. Следовательно, любой ТА и паттерны не должны работать. Или наш рынок неэффективен?
avatar
Кирилл Браулов, эффективность рынка, как и оценка вер-ти какого-то события, это субъективная вещь. Зависит от ваших знаний и возможностей. С точки зрения наблюдателя, у которого нет прибыльного алгоритма, рынок кажется совершенно случайным. Также как многие события мы воспринимаем как случайные, хотя кто-то, возможно знает про них или даже сам их создает.
avatar
ivanovr, 
даже сам их создает

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

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

теги блога Roman Ivanov

....все тэги



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