Своим опытом в построении высокопроизводительных торговых систем с использованием генетического программирования делится Dr Jonathan Kinlay в своем блоге.
Увеличение времени, стоимости и риска разработки стратегий заставило трейдинговые компании исследовать возможности итенсификации процессов разработки. Одним из таких подходов является генетическое программирование.
Генетическое программирование (ГП) это эволюционная методология разработки, которая может быть использована для идентификации паттернов или зависимостей в структурах данных. ГП это набор инструкций ( обычно простые операторы, сложение и вычитание) для исходных данных и функция соответствия для определения, насколько хорошо система способна комбинировать функции и данные для достижения определенной цели.
В применении к торговой стратегии исходные данные могут включать не только цены, но также волатильность, скользящие средние, и набор других технических индикаторов. Функция соответствия может быть простой, например, чистая прибыль, но может представлять собой и другие измерения прибыльности или риска, с такими факторами, как прибыль/убыток на один трейд, вероятность предсказания или максимальная просадка. В порядке уменьшения опасности подгонки нужно ограничить типы функций такими, как функции с простыми операторами (+, -, /, *), экспоненциальными и тригонометрическими. Объем программы также может быть ограничен в терминах максимально допустимого числа строк.
Представим, что мы собираемся сделать с помощью графика в заглавии статьи. В этом примере ГП система представляет собой комбинацию простых операторов с тригонометрическими функциями - синус и косинус, для создания сигнала, состоящего из двух переменных X и Y, которыми могут быть, например, цены акций, скользящие средние или импульсные технические индикаторы.
Эволюционный аспект процесса ГП исходит из идеи, что существующий сигнал или модель может быть видоизменена перемещением узлов в ветвях дерева, или даже замены одной целой ветви на другую. Производительность системы пересчитывается с использованием функции соответствия и наиболее прибыльные мутации выбираются для дальнейших поколений.
Результирующие модели обычно сильно нелинейны и могут быть представлены в очень общей форме.
Внутридневная ГП стратегия
Последние 15 лет видны значительные достижения в области генетического программирования, как в теории, так и на практике. Применение многоядерных процессоров позволило генерировать сигналы для ГП намного быстрее, чем это было ранее. Разработчик может создавать и просчитывать десятки миллионов возможных торговых алгоритмов в течение нескольких часов. Доработка до боевого применения тщательно исследованных стратегий сейчас может занимать время, измеряемое неделями. Нет сомнений в потенциале ГП в смысле значительного уменьшения времени и стоимости разработки. Но работают ли эти стратегии?
Для ответа на этот вопрос приведем ниже результаты созданной с помощью ГП внутридневной стратегии, которая торгует девять разных фьючерсных рынков: сырая нефть (CL), евро (EC), E-mini (ES), золото (GC), топочный мазут (HO), кофе (KC), природный газ (NG), десятилетние облигации (TY) и бонды (US). Система торгует один контракт на каждом рынке раздельно, входя в длинные и короткие позиции несколько раз в день. Торгуется только наиболее ликвидные периоды в течение дня, которые обычно соответствуют открытию/закрытию торгов, с выходом из открытых позиций к концу сессии с помощью маркет-ордеров. Кроме рынков NG и HO, где вход осуществляется по стоп ордерам, на остальных рынках для входа и выхода в/из позиции применяются лимитные ордера, по ценам, определенным алгоритмом.
Система была создана с использованием 15-минутных баров с января 2006 года по декабрь 2011 года и протестирована на out-of-sample данных с января 2012 года по май 2014 года. Тренировочный набор данных выбирался как с учетом периодов сильной активности рынков, так и чтобы были включены периоды со слабой волатильностью. Длина тестовой выборки составляет почти половину тренировочной для определения устойчивости системы.
Out-of-sample тестирование производилось по принципу " вслепую", то есть данные для тестирования не использовались для тренировки модели, также как и вычисление производительности осуществлялось до выбора модели.
Результаты получились следующие - средняя чистая прибыль за вычетом комиссий = 6 долларов на сделку, и в случае HO и NG дополнительное проскальзывание в размере 2 тика на сделку.
Самая поразительная особенность стратегии - это высокая степень прибыльности, выраженная коэффициентом Шарпа, который превысил 5 как в тренировочном, так и в тестовом периоде. Это отражение того факта, что в то время, как чистая прибыль упала со среднегодового значения 29% в тренировочной выборке до 20% в тестовой, волатильность тоже снизилась с 5,35% до 3,86% в следующем периоде. Уменьшение риска в тестовом периоде также отражено в уровне просадки.
Уменьшение средней прибыли за сделку с 25$ до 16$ (без вычета комиссии) объясняется некоторым увеличением количества сделок, с 42 до 44 в день в среднем, в то время как вероятность предсказания и процент прибыльных сделок остались постоянными - 65% и 56% соответственно.
В общем, система не только высокоприбыльна, но и очень устойчива. Это впечатляет, при условии, что модель не обновлялась на данных после 2011 года, оставаясь статичной в течение периода, равным половине тренировочной выборки. Разумно ожидать, что тестовая производительность может быть улучшена, если обновлять модель на более свежих данных.
Преимущества и риски ГП подхода к созданию торговых систем
Потенциальные преимущества ГП подхода включают скорость разработки, гибкость дизайна, общность применения на различных рынках и быстрое тестирование и использование в бою.
Что же с другой стороны? Очевидный недостаток - это риск подгонки. Позволяя системе создавать и тестировать миллионы моделей, мы сталкиваемся с существенным риском того, что результирующий алгоритм может быть сильно зависим от исходных данных тренировочной выборки, и будет неспособен продемонстрировать прибыльность, столкнувшись с новыми рыночными состояниями. Вот почему мы используем большой период тестирования, чтобы определить устойчивость торговой системы. Даже в этом случае, из-за огромного количества моделей, остается значительный риск подгонки.
Другой недостаток это то, что из-за природы процесса моделирования, бывает очень трудно понять, или объяснить инвесторам, идею, лежащую в основе конкретной модели. "Мы протестировали и оно работает" - это недостаточно убедительное объяснение для инвесторов, которые привыкли к более подробным теоретическим обоснованиям. К несчастью, во время просадок, сложно убедить себя или инвесторов, что это временное явление.
В сравнении с другими техниками моделирования, ГП модели страдают от невозможности быстро обновить параметры модели, основываясь на новых исходных данных, как только они станут доступны. Обычно, ГП модель перестраивается с нуля, каждый раз, часто, с очень разными результатами.
Заключение
Несмотря на многие ограничения ГП подхода, преимущества в плане скорости и стоимости разработки торговых сигналов и стратегий делают его очень привлекательным.
В связи с несколькими хорошо описанными успехами генетического программирования в областях генетики и физики, его применение для исследований финансовых рынков внушает большой оптимизм.
0.11% в день/44 число трейдов= 0.0025% средняя сделка