Как выжать больше из оптимизации торгового алгоритма

Тестирования алгоритмов

Проведя оптимизацию торговой стратегии, мы можем узнать, как на истории себя вели сотни и даже тысячи вариантов алгоритма. Вот только запуск лучшего варианта в боевой режим почти всегда оборачивается потерями — лучшая настройка легко может быть подогнана под исторический тест (все это называется overfitting). Скорей всего, из-за изменчивости рынков она не будет побеждена окончательно. Однако будут появляться методы, позволяющие приблизиться к решению. Об этих методах — в статье.

Содержание

Видео

Кому будет полезен данный материал

Статья предназначена для разработчиков торговых алгоритмов, сталкивающихся с проблемами оптимизации, описанными выше, а также для трейдеров, желающих автоматизировать свою торговлю.

В первой части опишем, как проходит оптимизация торговой стратегии и какие проблемы она ставит перед разработчиком. Эта часть будет полезна трейдерам, которые только задумываются о переходе с торговли ручной на торговлю автоматизированную.

Вторую часть посвятим методу, который, надеемся, позволит трейдеру-разработчику алгоритмов ответить на целый ряд вопросов:

  • как найти устойчивую настройку алгоритма
  • когда его запустить
  • и когда остановить

В нашем Telegram-канале есть то, чего не публикуем на сайте 📈

Как провести оптимизацию в домашних условиях

Для оптимизации возьмем один торговый алгоритм, к нему выберем инструмент (или несколько), зададим диапазон настроек робота и их шаг.

Испытаем стратегию Sudden Death на валютных парах EUR/USD, USD/JPY на исторических котировках с 05.01.2015 по 07.06.2019, всего четыре с половиной года. Подробнее об исторических тестах — в статье Тестирование торговых стратегий на исторических данных (бэктест) — почему это так важно? или в видео ниже.

На какой платформе лучше оптимизировать стратегии

Платформ много. Чаще используют Metatrader 4/5 либо платформу JForex от Дукаскопи. Мы проводили тесты в JForex. Ее главное отличие от МТ5 — возможность сохранить результаты единичных бэктестов и подробно проанализировать журналы сделок из них.

Как оптимизировать ТС
Для четырех параметров заданы диапазоны и шаг. Выходит 225 конфигураций.

Настроив оптимизацию, на выходе получаем 225 конфигураций. При желании можно расширить диапазоны и уменьшить шаг, доведя количество комбинаций до нескольких сот или тысяч. Но такое детальное прочесывание комбинаций усложняет и замедляет процесс и ненамного увеличивает шансы найти что-то прибыльное.

Когда оптимизация закончится, платформа сохранит каждый бэктест как hmtl-файл. Эти файлы дадут подробную статистику о настройках робота.

Как создавать торговые стратегии на основе статистики и данных, способных работать 24/5

Не упустите возможность получить прибыльные торговые стратегии.

Что выдал перебор настроек алгоритма

По евро/доллару из 225-ти комбинаций топовая дает 9.1% годовых. Распределение всех годовых доходностей на изображении.

Распределение доходностей
Распределение доходностей стратегии по EUR/USD.

Здесь, кстати, смещение распределения влево (negative skewness) — то есть толстый хвост в сторону убытков. Это плохо. Если перевести на простой язык, получается, что вероятность получить крупный убыток выше, чем вероятность получить крупную прибыль. Напомним, что это именно по валютной паре EUR/USD. Подробнее о распределениях и толстых хвостах — в статье Как использовать математику в трейдинге, если вы вообще не математик или же в видео ниже:

А вот по доллару/иене лучшая настройка робота за 4.5 года выдала 15.2% годовых дохода.

Распределение доходностей
Распределение доходностей стратегии по USD/JPY.

Здесь распределение уже приближенно к нормальному распределению Гаусса. То есть вероятности и значения прибылей/убытков примерно одинаковы.

Лучшие комбинации по выбранным парам проявили себя так:

Топовые комбинации
Лучшая кривая доходности по EUR/USD.
Топовые комбинации
Лучшая кривая доходности по USD/JPY.

Видим, что наши “топы” ведут себя весьма нестабильно, потому процент риска на сделку можно уменьшить с 1%, но тогда падает потенциальная доходность.

Метод повышения доходности

К вопросу о повышении доходности можно подойти “в лоб” и перебрать все возможные настройки робота, посмотреть на их результативность. Так мы только что и сделали.

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

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

Период обучения и применения робота

В практике оптимизации в любой сфере, не только финансовой, имеющиеся наборы делят на 2-3 периода:

  1. Тренировочный — на нем торговый алгоритм обучается, а в нашем случае из 225-ти комбинаций мы выбираем лучшую.
  2. Тестовый — он следует за тренировочным, обычно он короче, и на нем проверяется выбранная лучшая настройка робота. Обычно на тестовом отбрасывается большинство кандидатов. Если же кто-то проходит тестовый период, его переводят на следующий.
  3. Валидационный — это еще один участок исторических котировок, на котором испытывают лучшие настройки алгоритма. Считается, что успех на этом этапе позволяет запустить робота в лайв.

В методе форвардного анализа (walk forward analysisWFA) используются 2 набора. Цель у этих подходов одна — избежать подгонки алгоритма под исторические данные и найти устойчивые стратегии.

Оптимизация тренировочного и тестового периода

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

Перебор периода обучения (learn) робота и его применения (test) по EUR/USD. Обе шкалы в неделях.

Рассмотрим изображение. Здесь показано, какую доходность мы получим за 4.5 года, если перепробуем период обучения робота от 4 до 52 недель с шагом 4, а также период его применения с 2 до 20 недель с шагом 2.

Например, лучший вариант — это “учить” алгоритм 32 недели, а применять 20. Так, выбирая самую доходную настройку из 225-ти, мы на истории получили 5.1% годовых. Что не лучше топовой настройки, давшей 9%.

Однако вся таблица оказалась красной, с такими соседями применять данный метод не стоит. Даже желтая подсветка, которая указывает на центр самого прибыльного участка из 9-ти клеток, не помогает. Средняя доходность этого участка -4% (см. верхний левый угол изображения).

Переходим к иене.

Перебор периода обучения (learn) робота и его применения (test) по USD/JPY. Обе шкалы в неделях.

Пик в таблице — это 28 на 16 недель. То есть, если каждый 28 недель выбирать лучшую из 225-ти настроек, а затем применять ее 16 недель, то получим 13.5% годовых, что, кстати, недотягивает до 15.2% годовых от топовой настройки за весь период.

Центр лучшего участка из 9-ти клеток приходится на 32х16 недель. Средняя годовая доходность при этом 5.1% (см. в верхнем левом углу изображения).

Топовые конфигурации не всегда работают — как это исправить?

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

Но, поскольку работа оптимизатора очень скучная, иногда хочется развлечься и испытать какой-нибудь идиотский подход. Например, ставить на самую худшую настройку робота! Раз топы не хотят работать, может, аутсайдеры на что-то способны.

Проверим, что будет после перебора величин тренировочного и тестового набора.

Перебор периодов обучения и применения, ставка на худшую настройку EUR/USD.

По евро эксперимент явно не удался. Ставки на топов оказались выгоднее ставок на аутсайдеров. Лучший результат -21.2%, а средняя клетка в лучшем регионе из 9-ти клеток дает -16.2%.

Теперь иена.

Перебор периодов обучения и применения и ставка на худшую настройку, USD/JPY.

Та-дам! Лучшая ячейка выдала 49.6% годовых, которые стали возможными на 36 неделях обучения и 2 применения. А лучшая область из 9-ти ячеек имеет среднее значение 36.3%.

Отобразим доходность за каждые 4 недели применения робота.

Доходность по 4 недели с октября 2015 по июнь 2019, USD/JPY, ставка на худшую настройку робота из 225-ти.

Предварительное заключение

Ни один уважающий себя трейдер-управляющий не скажет своему инвестору, что он ставит на худшие настройки своего алгоритма.

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

Материалы

Поделиться статьей

С радостью ответим на ваши комментарии

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читайте также

Поп-ап

В поиске прибыльных торговых стратегий на финансовых рынках?

Тогда вам по одной из кнопок ниже

Не пропустите лучшие статьи и видео о трейдинге — подписывайтесь на наш Telegram

До 30% скидок на все курсы. Только для тех, кто прошел вступительный материал до конца

  1. Стоимость любого курса можно разделить на 4 части. Без переплат, комиссий или кредитных договоров.
  2. Если курсы вам не подойдут — вернем деньги без вопросов.

Знания и практика — это то, что нужно для прибыльного трейдинга. Начните трейдинг-эволюцию уже сейчас