Перевод. Программа с генетическим алгоритмом с открытым исходным кодом

Перевод. Программа с генетическим алгоритмом с открытым исходным кодом

Трейдерам, работающим вручную, постоянно приходится покорять новые рыночные рубежи. Не только для того, чтобы получить лучшие результаты, но и для того, чтобы иметь возможность работать более чем с одной системой. Наилучших результатов в торговле можно достичь, применяя несколько несвязанных систем торговали одновременно. К сожалению, большинство трейдеров применяют все те же неэффективные механизмы рынка: некоторые трейдеры отслеживают тренды, другие придерживаются закона чередования и так далее. Это потому, что научиться использовать один механизм - уже достаточно сложно, освоить их все – невозможно. Было бы неплохо иметь программное обеспечение, которое создает множество несвязанных систем.


Недавно я выпустил Genotick – программу с открытым исходным кодом, которая может создавать и управлять группой торговых систем. В основе Genotick лежит прозрение: если возможно написать некую программу с несколькими инструкциями в коде ассемблера, то должна быть возможность создать торговые системы с таким же набором простых инструкций. Эти простые и бессмысленные сами по себе инструкции становятся чрезвычайно мощными, когда объединяются вместе. Правильные инструкции в правильном порядке могут использовать любой принцип работы механической системы: следование тренду, закон чередования, или даже работать на основе фундаментальных данных.

Движущая сила, стоящая за работой Genotick - это генетический алгоритм. Текущая версия довольно проста, но имеет некоторые особенности. Например, если какая-либо из систем действительно плоха – она будет применяться в ряду других, но ее прогнозы окажутся в самом конце. Это еще одна уловка, позволяющая распознать предвзятые торговые системы: система может быть удалена, если она не дает зеркального предсказания на зеркальных данных. Так, например, позиция по паре GBP/USD должна быть противоположной позиции USD/GBP. Genotick также поддерживает факультативную элитарность (когда лучшие системы всегда остаются в списке, в то время как другие устаревают и выбывают), защиту новых систем (чтобы избежать удаления систем, которые не получили шанс проявить себя) и наследование веса исходной системы от родительских. Эти параметры дают пользователям много возможностей для экспериментов.

Когда Genotick запускается в первый раз, в нем еще нет систем. Они создаются при старте с использованием случайно выбранной инструкции. Затем вступает в действие генетический алгоритм: каждая система запускается для проверки своего прогноза, основанного на исторических данных. Системы, которые давали верные предсказания, набирают вес для будущих прогнозов, системы, которые сделали неправильные предсказания – теряют вес. Постепенно, день за днем, количество систем растет. Плохие системы удаляются и остаются только хорошие. Предсказания на каждый день рассчитывается исходя из прогнозов всех систем, доступных в это время. Genotick не использует одни и те же исторические данные более одного раза – тренировочный процесс выглядит точно так же, как если бы он происходил в реальной жизни: один раз в день. На самом деле, нет никакой отдельной фазы “обучения” - программа понемногу учится каждый день.

Примечательно, что Genotick не проверяет логическое обоснование создаваемых систем. Поскольку каждая система создается из случайных инструкций, вполне возможно (и очень вероятно), что некоторые системы используют странную логику. Например, вполне возможно, что система даст сигнал на покупку, если объем торгов был положительным 42 дня назад. Другая система может занимать короткие позиции каждый раз, когда третья цифра во вчерашнем максимуме совпадает со второй цифрой в сегодняшней позиции открытия. Конечно, такие системы никогда не выживают в реальном мире и они не проживут долго в списке Genotick. Поскольку первоначальный вес каждой из систем равен нулю, они никогда не получат значительный вес и поэтому не испортят совокупные предсказания, которые выдаст вам программа. Это может показаться немного глупым - позволять существовать таким системам, но в первую очередь это позволяет Genotick проводить тестирование алгоритмов, вне зависимости от ожиданий трейдеров, ошибочных мнений и личных ограничений. К сожалени, рынок не волнует, какую систему вы используете и сколько пота и слез вы в нее вложили. Рынок делает то, что хочет – он не задает вопросов и пленных не берет. Рынок даже не волнует, какой интеллект вы используете, искусственный или настоящий. Поэтому единственным обоснованием каждой торговой системы должен быть очень простой вопрос: “работает ли она?”. Ничего больше. Это единственный критерий, который Genotick использует для оценки систем.

Каждый запуск программы будет немного отличаться. График текущего остатка на торговом счете, представленный ниже, показывает один из возможных вариантов. Здесь показаны годы с 2007 по 2015, а фактическое обучение началось в 2000 году. В 2007 году нет ничего особенного, помните, – Genotick учится во время работы. Однако я подумал, что будет важно посмотреть, как программа вела себя в период финансового кризиса. Существовали следующие биржевые рынки:

USD/CHF, USD/JPY, 10 Year US Bond Yield, SPX, EUR/USD, GBP/USD и золото.

(В некоторых случаях я тестировал систему на рыночных индексах, таких как SPX, а не инструментах, которые отслеживали такой индекс, как SPY, но разница должна быть небольшой). Все рынки были зеркальными, что позволило удалить предвзятые системы. Вот некоторые важные цифры:

СГТР: 9.88%

Максимальное снижение: -21.6%
Самое долгое снижение: 287 торговых дней
Прибыльные дни: 53.3 %
Коэффициент CALMAR: 0.644
Коэффициент Шарпа: 1.06
Среднегодовой прирост: 24.1%
Убыточный год: 2013 (-12%)




Кумулятивная доходность (%) с 2007 года

Эти цифры представляют собой лишь “направления”, предлагаемые программой. Не было никаких стоп-лоссов, кредитного плеча или определений позиции, которые могли бы значительно улучшить реальные результаты. Результативность предполагает, что в конце каждого дня позиции сбалансированы так, что каждый инструмент начинается с равной долларовой стоимости. (Т. е. это постоянно перебалансируемый портфель).

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

На данный момент Genotick - это скорее доказательство концепции, чем готовое решение.

Возможности его использования очень ограничены, он не прощает ошибок и лучше хорошо подумать, прежде чем использовать его для реальной торговли. Вам понадобится Java 7, чтобы запустить программу. Она проверена на Linux и Windows 10. Она включает примерные исторические данные. Приветствуются любые вопросы или комментарии.


Оригинал

08:58
719

2 комментария

05:10
Была у меня мечта когда-то такая. С этого начался Stock Pattern Viewer.
Обязательно вернусь к автоматическому подбору прибыльных стратегий во время торговли. Красивая, даже утопическая идея. Надо делать!
19:32
идея совсем не утопическая.Просто понять смысл свечного анализа не просто.Оттолкнемся от главной мысли — если бы свечной не работал, то японцы не рисовали бы свечки в блокнот! Значит свечной работает.Осталось чуть чуть -понять.Мне на это понадобилось 20 лет. Пришлось прибавлять к пазлу по малому осколку полезности. Вам тоже надо пройти свой путь через тесты алгоритмов(я через Метасток 7.2), волно проги EWA 3.0-6.0, квадрат 9 Ганна, теорию VSA и тд. Дерзайте.Я бываю в чате comon.ru(раздел торговля) на сайте Финама.Там под настроение я разбрасываю граали. Даю подсказку.Это работа Миллера -компьютерное моделирование волн Эллиота.Считаю эту работу самой полезной в понимании торговли. ИИ сам не поймет теории свечей.Ему нужны подсказки.