Полировка

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

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

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

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

Стратегия торговли гэпдаунов

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

Так произошло с Netflix (NFLX), которая выпустила отчет 16 июля после закрытия рынка.

Компания показала более медленный по сравнению с ожиданиями инвесторов рост притока новых подписчиков.

16 июля акции Netflix завершили день выше своей 50-дневной скользящей средней — на отметке $400.48. Однако уже на следующее утро они торговалась по $344, что на 14% ниже. В конечном итоге к закрытию дня цена дошла до $379, почти полностью отыграв потерянное.

Исторический анализ

С 2000 года 536 раз акции S&P 500 закрывались выше своей 50-дневной скользящей средней с достаточным объемом, чтобы наутро открыться более чем на 10% ниже.

Анализ показывает, что если бы после каждого такого падения мы открывали позицию в лонг и закрывали ее на закрытии того же дня, то такие сделки были бы успешными в 47% случаев, а средняя прибыль составила бы 0.43% (без учета комиссий).

Вот некоторые результаты , а также кривая баланса, отражающая динамику результатов во времени:

  • Количество сделок: 536
  • Средний размер прибыли/убытка (P/L) на сделку: 0.43%
  • Доходность с поправкой на риск (RAR): 123.34%
  • Процент прибыльных сделок: 47.95%
  • Ср. прибыль: 5.83%
  • Ср . убыток: -4.54%
  • Коэффициент прибыли: 1.21


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

Хотя статистика торговли вполне приличная, по кривой баланса видно, что с 2010 года эта система работает плохо. И это при том, что комиссия не учитывалась.

Чтобы создать приличную систему торговли на основании покупки акций S&P 500 после ночного падения более 10% с выходом на закрытии дня, нужно еще потрудиться.

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

Данную стратегию можно использовать в сочетании со стратегией следования по тренду для акций с микрокапитализацией, входящих в индекс Russell Microcap.

Сложность применения к таким акциям принципа возврата к среднему состоит в том, что объемы торговли в таких бумагах невысокие и новостной поток по ним скудный. Это приводит к тому, что они могут просто находиться в состоянии «дрейфа» в течение длительного времени. Учитывая это, для построения хорошей стратегии торговли необходим какой-то катализатор, чтобы не входить в акции, которые никуда не идут.

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

Полный набор правил выглядит следующим образом:

Покупка:

  • Вчерашнее закрытие < минимальная цена закрытия за 50 дней
  • И сегодняшний оборот > $250 000
  • И сегодняшний оборот > 2 среднеквадратичных отклонения над 20-дневной скользящей средней
  • И IBS > 0.2
  • И сегодняшняя цена закрытия находится между $0.5 и $20

Продажа:

  • Самая высокая цена закрытия за последние 5 баров
  • ИЛИ через 10 дней

Пример сделки

На рисунке показан пример такой сделки для акции OVID:


Здесь видно, что 10 августа 2017 г. OVID формирует новый Low 50 дней. После этого следует всплеск объема 11 августа, а IBS имеет значение 0.72.

Таким образом, можно войти в сделку в лонг на открытии следующего дня (зеленая стрелка). Спустя 7 дней, цена вышла на High 5 баров, поэтому на открытии следующего дня сделка закрывается (красная стрелка). Прибыль составила 32.53% (без учета комиссий).

Тестирование на истории для всех акций из индекса Russell Microcap за период с 8/2008 по 1/2018 дало следующие результаты:

(В результатах учтена комиссия 0.2% за сделку. Размер позиций фиксированный — $250. Все входы и выходы делались на открытии следующего торгового дня. Более ранние периоды не тестировались).

  • Количество сделок: 6052
  • Средний размер прибыли/убытка (P/L) на сделку: 1.02%
  • Ср. длительность удержания, баров: 6.04
  • Доходность с поправкой на риск: 51.13%
  • Процент прибыльных сделок: 53.72%
  • Ср . прибыль: 7.35%
  • Ср . убыток: -6.33%
  • Коэффициент прибыли: 1.35


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

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

Стратегия торговли на откате

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

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

Правила данной стратегии очень просты:

Покупка:

  • Цена закрытия > 200-дневной СС
  • И Цена закрытия < 10-дневной СС

Продажа:

  • Цена закрытия > 10-дневной СС
  • ИЛИ по стоп-лосс 10%

Вот результаты тестирования на истории некоторых фьючерсных инструментов:


Как видим, стабильные результаты показали фьючерсы на акции (S&P 500 E-Mini и Dow Jones E-Mini). Хорошими были также результаты для казначейских облигаций (US Two Year и US Ten Year). А на золоте (Gold mini) и нефти (Oil) система работала плохо.

Данные результаты основаны на торговле только одни контрактом и без применения . Учтена комиссия в размере $10 в одну сторону.

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

Дополнение стратегии торговли на откатах шортовой составляющей

Рассмотренную выше стратегию торговли на откатах целесообразно также дополнить шортовыми сделками. Соответствующее тестирование на истории было проведено для ES (S&P 500 E-Mini). Правила торговли в лонг остаются теми же, появляется лишь приведенное ниже дополнительное правило для торговли в шорт. По сути, оно является зеркальным отражением правила для сделок в лонг, только ищутся бычьи откаты на медвежьем рынке.

Продажа в шорт:

  • Цена закрытия < 200-дневной СС
  • И Цена закрытия > 10-дневной СС

Покрытие позиции:

  • Цена закрытия < 10-дневной СС
  • ИЛИ по стоп-лосс 10%
  • Количество сделок: 323
  • Чистая прибыль: $77 445
  • Суммарный годовой доход (CAR): 5.34%
  • Максимальная просадка (MDD): -16.45%
  • Средняя прибыль/убыток (P/L): 3.66%
  • Коэффициент прибыли: 1.49


Как видим, добавление шортовой составляющей улучшило результаты торговли данной стратегии на ES. Чистая прибыль выросла с $53 901 до $77 445 за тот же период времени, при этом максимальная просадка осталась на аналогичном уровне. Кривая баланса тоже выглядит довольно хорошо.

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

Любой индикатор или торговую систему (платные, бесплатные, чужие или созданные самостоятельно) можно ставить на реальный счет только после успешного тест-драйва несколькими способами и в различных торговых условиях. Оптимизация и грамотное тестирование торговых стратегий – необходимый процесс для успешной торговли.

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

Процесс тестирования торговых стратегий означает запуск алгоритма на исторических или смоделированных данных. Тест должен «увидеть» биржевые «сигналы» для генерации сделок покупки/продажи и выдать результат «возможной» торговли – величина дохода/убытка выступает показателем пригодности для реальной работы.

Основные цели и методики

Прежде всего, необходимо выполнить проверку:

  • заложенных в стратегию показателей производительности;
  • рыночных моделей (активы, ликвидность, издержки, скорость, проскальзывание, риск) без реальной торговли;
  • оптимальность параметров по результатам теста на истории;
  • программного кода на ошибки разработки.

Тест должен включать анализ прошлого/прогноз будущего и выдать отчет с графическими и количественными результатами. В тестер можно загрузить:

  • историю - массив ранее сформированных баров с параметрами цен, объемов, индикаторов: тогда для анализа формируется ценовое «прошлое» и «будущее» для того, чтобы на «прошлой» динамике оценить «будущую» реакцию;
  • значения цены, смоделированные сценарием: затем на вход тестера подавать тиковые данные (историю или реальные) и получать прогноз движения.

Первый метод дает легкость, скорость, но слабую точность, а во втором стратегия ведет себя в тестере именно так, как и в режиме реальной торговли. Смоделированные результаты можно хранить в виде внешних файлов, которые можно загрузить в терминал через меню «Файл» - «Открыть автономно».

Тестирование торговых стратегий можно выполнять с помощью:

  • любого математического ПО (Matlab или MS Excel с плагинами для биржевой торговли);
  • систем создания механических систем (MetaStock, Wealth-Lab, Omega);
  • языков программирования Java, Scala или C++/C# для создания и теста торговых роботов;
  • тестеров, встроенных в торговые платформы.

Традиционно для получения стабильных и корректных результатов в процессе тестирования последовательно применяются:

  • Визуальный тест индикатора или системы: требует просмотра истории цены за длительный период (один - два года). Этот трудоемкий процесс упрощается с помощью ПО тестера ручных стратегий.
  • Создание, тестирование и оптимизация советника.
  • Тест на длительной истории в автоматическом режиме.
  • Тест на демо-счете или на центовом счете: выполняется после получения стабильных результатов по двум первым методам – продолжительный, но самый точный расчет. Разница между демо и центовым счетом - только психологическая.

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

Тестеры торговых стратегий

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

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

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

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

Основные требования к настройкам при тестировании торговых стратегий:

  • скачать данные всех периодов; диапазон истории – не менее 5 лет, с обязательным включением периодов с кризисной/нестандартной динамикой (например, 2008-2009 гг.);
  • если используете меньший период, то он должен включать периоды трендового и флетового движения;
  • количество смоделированных сделок менее 300;
  • тест алгоритма на нескольких ликвидных инструментах.

При настройке параметров теста необходимо учитывать:

  • торговые издержки (спреды, комиссии);
  • проскальзывание/задержки срабатывания;
  • влияние ликвидности актива (объемную динамику);
  • изменение рыночных условий;
  • типы торговых приказов, которые планируется использовать (market или limit ордера).

Если market-ордер исполняется сразу, но его конечная цена для теста неопределена, то limit-приказы могут «ждать» самую подходящую для сделки цену. Limit-ордер считается пассивным средством, так как может быть неисполнен или частично исполнен, если будет мало заявок. Если поведение очереди заявок (Order book) смоделировать неточно, тест в реальном времени покажет худшие результаты, чем тест на истории.

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

Обычно используются три способа расчета:

  • По ценам открытия: самый быстрый, но самый неточный метод, большинство стратегий при тестировании на периоде до 1 года могут вообще не открыть ни одной сделки;
  • По контрольным точкам: наиболее сбалансирован по точности и времени, но уровень доверия к полученным данным низкий;
  • По всем тикам: самый точный метод, приближенный к реальности.

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

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

Тестирование торговых стратегий корректно моделирует все тайм-фреймы, включая данные объема. Во время теста расчет индикаторов выполняется в режиме онлайн.

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

Результаты тестирования можно выгрузить в Excel или любое иное ПО в виде последовательности данных с разделителями.

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

И в качестве заключения …

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

Социальные кнопки для Joomla

Популярное:

  • 14.11.2013 06:32 | Индикатор разворота - определяем конец тренда 55948
  • 02.04.2015 10:04 | Индикатор VSA читает рынок как открытую книгу 53422
  • 23.09.2014 11:08 | Конструктор советников форекс позволит создать любой торговый робот 48882

Каждая потеря депозита ставит трейдера перед вопросом – что делать дальше? Оптимизировать свою торговую стратегию? Лучше контролировать эмоции при торговле? А может быть поступить радикально и приобрести торгового советника?

Именно третье решение в последнее время становится наиболее популярным. Хотя и здесь есть свои преимущества и недостатки. Действительно, советники не подвержены эмоциям, имеют четкие критерии открытия и закрытия позиций, мгновенно реагируют на изменяющуюся рыночную ситуацию. Что говорить – любая торговая стратегия в исполнении робота всегда эффективнее той же самой стратегии в ручном исполнении трейдера.

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

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

Таким образом, основными целями тестирования служит проверка таких параметров:

  • показатели производительности, заложенные в стратегию;
  • рыночные показатели торговой стратегии – ликвидность, риск, проскальзывание, издержки;
  • оптимальность исходных параметров стратегии;
  • ошибки программного кода.

Результатом должен стать отчет со статистическими и графическими данными результатов тестирования.

Как уже было сказано выше, тестирование может производиться на двух видах данных:

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

Для тестирования можно использовать несколько различных способов. Широко используется математическое программное обеспечение, например от компании MatLab или MS Excel с биржевыми плагинами, механические системы MetaStock, Wealth-Labили Omega, языки программирования или тестеры, встроенные в торговые платформы. Последние получили наибольшее распространение в среде трейдеров в силу своей простоты и доступности.

Тестирование проводится в несколько этапов:

  • проводится визуальный тест торговой системы или индикатора на достаточно длительном промежутке исторических данных с помощью тестера ручных стратегий;
  • создается торговый советник;
  • проводится тест советника на длительном промежутке истории в автоматическом режиме. В процессе тестирования подбираются параметры индикаторов – советник оптимизируется;
  • после получения стабильных положительных результатов тестирования в автоматическом режиме проводится тест советника на демо или центовом счете.

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

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

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

Механизм тестирования торговых стратегий «Форвард» очень полезен при оптимизации торговой стратегии. Алгоритм его работы заключается в делении исторических данных на две части, на первой из которых проводится оптимизация, а на втором результаты этой оптимизации проверяются. Часто в алгоритм тестера закладывается методика распределенного тестирования, когда вычисления производятся с помощью сетевых средств.

Для качественного тестирования необходимо тщательно отобрать исторические данные. Период истории должен быть достаточно протяженным – не менее 5 лет. При этом в истории должен присутствовать период с кризисной динамикой, например с кризисом 2008-2009 годов. При использовании меньшего периода история должна включать как трендовые, так и флетовые участки.

Тестирование проводится на большом количестве сделок. Считается, что их должно быть не менее 300. Обязательным условием является тестирование стратегии на нескольких высоколиквидных инструментах.

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

Тестирование может различаться по способам расчета:

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

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

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

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

Рис. 1. Оптимизация многомерного пространства алгоритмов торговых стратегий.

Оптимизация торговых стратегий

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

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

Большинство таких алгоритмов хорошо известны: метод Монте-Карло , метод градиентного спуска , метод имитации отжига , эволюционные алгоритмы и т.д. При этом существуют различные модификации данных алгоритмов оптимизации. В алготрейдинге, как правило, встречаются реализации генетических алгоритмов и Монте-Карло. Так или иначе все эти алгоритмы используют «магию случайных чисел» или научно говоря нелинейную стохастическую оптимизацию.

Классическая проблема стохастических алгоритмов оптимизации заключается в том, что при не больших объемах фактических исследований и малых выборках они не репрезентативны. Например, Монте-Карло не эффективен в многоэкстремальном пространстве, он акцентирует исследование на глобальном экстремуме упуская из вида локальные, но не менее интересные экстремумы. Алгоритм не ставит перед собой таких задач, ему просто нужно найти самую прибыльную стратегию. Генетический алгоритм также может пойти не удачной веткой мутаций и остановиться на каком-нибудь локальном экстремуме и т.д.
Все потому, что данным алгоритмам оптимизации на начальных этапах приходится принимать решения на ограниченном объеме данных в еще не изученном пространстве и из исследования могут легко выпасть важные области. Чтобы этого избежать нужно увеличивать выборки данных и время исследования, а в нашем случае время на вес золота. Нужно при минимальных затратах времени максимально подробно исследовать экстремумы пространства. При этом в быстро меняющихся условиях биржевой торговли важно уделять внимание не только прибыльным, но и стабильным параметрам торговых стратегий. Под стабильными понимаются параметры формирующие кластеры с похожими результатами. Прибыльные стратегии, находящиеся вне кластеров, могут оказаться не стабильными и привести к серьезным убыткам. В свою очередь стратегия из кластера в меньшей степени подвержена изменениям на рынке.

Метод стохастической кластерной оптимизации

Учитывая особенности оптимизации биржевых стратегий был разработан гибридный алгоритм (см. ) у которого оказался один приятный побочный эффект - он успешно выделял и исследовал кластеры. Я дал название полученному алгоритму - «Метод стохастической кластерной оптимизации».

Процесс исследования поэтому алгоритму проходит в два этапа:

  1. Исследование пространства стратегий с удалением убыточных и подверженных риску областей
  2. Подробное исследование экстремумов и кластеров пространства
Этап 1. Исследование пространства стратегий с удалением убыточных и подверженных риску областей.

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

Работа ведется в следующем порядке:

  • Формируется многомерное пространство из всех возможных параметров торговой стратегии.
  • Из пространства случайно выбираются стратегии и тестируются на исторических данных с указанными параметрами.
  • По результатам тестирования вокруг самых убыточных стратегий удаляются пограничные микрообласти. Тем самым уменьшается пространство исследования и делается акцент на более прибыльные и стабильные области в дальнейших итерациях.
  • Итерации тестирования проводятся до тех пор, пока пространство стратегий не будет исследовано в нужной степени
На Рис. 2 видно, как исследование смещается в сторону экстремумов при этом риск упустить маленькие кластеры с возможно хорошими и стабильными параметрами минимален.
Рис. 2. Первый этап алгоритма «Stochastic Cluster Optimization» - исследование пространства стратегий.

Этап 2. Подробное исследование кластеров и экстремумов.

После первого этапа исследования становятся хорошо виды экстремумы. Однако, в силу особенностей алгоритма (вырезается множество микрообластей) пространство получается «рваным» и некоторые экстремумы могут быть исследованы не очень подробно. Чтобы полностью изучить все интересные кластеры алгоритм оптимизации начинает процесс исследования в точности наоборот. Для этого выбираются все лучшие стратегии и вокруг них дополнительно выделяются микрообласти. Если в этих областях обнаруживаются еще не исследованные стратегии, то они дополнительно тестируются (см. Рис. 3).


Рис. 3. Второй этап алгоритма «Stochastic Cluster Optimization» - подробное исследование экстремумов.

В результате после работы алгоритма исследуются все интересные нам области пространства и подробно тестируются кластеры с прибыльными стратегиями. При этом фактический объем исследования, как правило, составляет не более 25-50% от общего объема пространства вариантов стратегий (см. Рис. 4).

Рис. 4. Скорость исследования алгоритма «Stochastic Cluster Optimization» (слева) в 2-4 раза выше скорости алгоритма «Brute Force» (справа).

Walk Forward оптимизация

Казалось бы оптимизировали параметры и можно начинать торговать. Однако на этом процесс иссдедования еще не завершается. Процесс оптимизации подвержен риску «подгонки» или переоптимизации параметров под используемые в процессе исторические данные, поэтому нужно дополнительно проверить полученные результаты. Для этого используется метод Walk Forward . Суть метода заключается в том, что параметры стратегий тестируются на исторических данных отличных от тех, которые использовались в процессе оптимизации.

Для этого весь диапазон исторических данных разбивается на выборки, состоящие из наборов:

  • IS («In Sample») - выборка, используемая для оптимизации
  • OOS («Out Of Sample») - выборка, используемая для тестирования результатов оптимизации
Причем диапазоны выборок формируются таким образом, чтобы данные OOS следовали последовательно друг за другом (см. Рис. 5).
Рис. 5. Схема Walk Forward оптимизации.

Для уменьшения объемов исследования на этапах проверки результатов, можно после оптимизации сразу отфильтровать стратегии с плохими показателями, тем самым сокращая общее время тестирования. В результате такой проверки мы получим объективные параметры торговых стратегий, защищенные от переоптимизации (см. Рис. 6 и Рис. 7).


Рис. 6. Результаты оптимизации на данных «In Sample».
Рис. 7. Проверка результатов оптимизации на данных «Out Of Sample».

Анализ результатов

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

Для комфортного анализа полученных результатов я визуализировал многомерное пространство стратегий по каждому параметру в формате тепловой карты (см. Рис. 8 ). По карте визуально оцениваются форма и размеры кластеров, положение экстремумов, проверяется влияние параметров на результативность стратегии, оцениваются изменения после проверки на переоптимизацию и т.д.


Рис. 8. Пример сечения пространства по оптимизируемым параметрам и целевой функции.

Для комплексной оценки результатов Walk Forward оптимизации строится матрица со всеми шагами и параметрами, прошедшими фильтрацию. Зеленым цветом выделяются шаги, на которых параметры подтвердили свои показатели и красным, соответственно, если не подтвердили. Параметры, показавшие себя хорошо на большом количестве шагов можно считать более пригодными для торговли (см. Рис. 9).


Рис. 9. Матрица Walk Forward со всеми результатами провеки на данных OOS.

В случае необходимости полученные результаты можно экспортировать в сторонние системы анализа для более детального исследования. Например, в R, Excel или Mathlab (см. Рис. 10).


Рис. 10. Экспорт результатов оптимизации в Excel.

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


Рис. 11. Подробный анализ параметров торговой стратегии.

Заключение

После оптимизации и всех проверок у нас останутся стратегии потенциально пригодные к реальной торговле на Бирже.

Наконец мы все перепроверили, наверное, уже можно начинать торговать? На самом деле мы только на полпути, еще рано отправлять торговые алгоритмы в бой. Далее предстоит:

  • Проверить стратегии на «живых» данных с Биржи для подтверждения показателей, полученных во время тестирования.
  • Сформировать портфель из торговых стратегий для диверсификации рисков. Кстати, его тоже нужно оптимизировать.
  • В процессе реальной торговли периодически сводить полученные результаты с результатами тестов для корректировки настроек тестера-оптимизатора.
Но об этом, наверное, в другой раз.
Всем удачной торговли!

Теги: Добавить метки

В данной статье мы покажем результаты тестирования простой торговой стратегии в 3-х режимах: "OHLC на M1 " с использованием только цен Open,High, Low и Close минутных баров; затем детальное моделирование в режиме "Все тики ", и самое достоверное тестирование в режиме "Каждый тик на основе реальных тиков " с использованием записанных тиков из истории.

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

Какую торговую стратегию мы тестировали

Мы создали простую торговую стратегию на основе прорыва диапазона за последние RangeLength баров. Правила торговли в нем таковы: на новом только что открывшемся баре вычисляется диапазон самых высоких и самых низких цен за последние N баров. В приложенном советнике параметр RangeLength по умолчанию равен 20 барам и означает ширину окна, в котором мы строим диапазон.

После первого же прорыва диапазона вверх или вниз начинает накапливаться статистика поступающих тиков: сколько тиков оказалось выше уровня пробитого диапазона, и сколько - ниже. Как только пришедших тиков станет больше или равно TicksForEnter =30, принимается решение о входе в рынок по текущей цене. Если диапазон был пробит вверх, то количество тиков выше уровня пробития должно быть больше количества тиков ниже этого уровня. В этом случае совершается покупка. Для входа в короткую позицию всё наоборот.

Выход из открытой позиции происходит по времени, через BarsForExit баров. Как видите, правила торговли простые. Для наглядности они представлены на рисунке:

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

Как мы тестировали

Торговая стратегия была протестирована на EURUSD на H1 на первых 6 месяцах 2016 года - с 01.01.2016 по 30.06.2016. Все параметры советника были установлены в значения по умолчанию, ведь нашей задачей было простое тестирование стратегии в разных режимах моделирования.


Сравнение результатов при разных режимах тестирования

Результаты тестирования в разных режимах сведены в таблицу. В первую очередь в глаза бросается различие в количестве торговых операций. Соответственно, и все остальные показатели тестирования тоже разные. При этом тестирование в режиме "OHLC на M1" прошло за 1.57 секунды, что в 23 раза быстрее, чем в режиме "Все тики". Такая разница будет иметь большое значение при оптимизации входных параметров торговой системы.

В свою очередь, режим "Каждый тик на основе реальных тиков" был еще затратнее по времени - 74 секунды против 36.7 секунд в режиме "Все тики". Это легко объясняется тем, что при использовании реальных тиков было смоделировано более 34 миллионов тиков, что почти в 2 раза больше, чем в режиме "Все тики". Таким образом, чем больше тиков мы используем при тестировании, тем больше времени требуется на один проход в тестере стратегий.

Параметр
OHLC на M1
Все тики
Каждый тик
на основе реальных
Тиков
731 466
18 983 485
34 099 141
Чистая прибыль
169.46 -466.81
-97.24
Трейдов
96
158 156
Сделок
192
316 312
Просадка по эквити (%)
311.35 (3.38%)
940.18 (9.29%)
625.79 (6.07%)
Просадка по балансу 281.25 (3.04%)
882.58 (8.76)
591.99 (5.76%)
Прибыльные трейды (%)
50 (52.08%) 82 (51.90%) 73 (46.79%)
Средняя непрерывная серия выигрышей
2
2
2
Время тестирования, включая вермя генерации тиков
1.6 секунды
36.7 секунд
74 секунды (1 минута 14 секунд)

Отчеты тестирования в разных режимах моделирования мы собрали в виде анимированных GIF-рисунков, чтобы можно было видеть разницу в статистике.


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



Торговые системы, зависящие от поступления тиков

Продемонстрированная торговая система очень сильно зависит от способа моделирования - от количества поступающих тиков и порядка их поступления. При тестировании в режиме "OHLC на M1" у нас моделируется меньше всего тиков, и для входа в рынок их не всегда может оказаться достаточно. Режимы "Все тики" и "Каждый тик на основе реальных тиков" могут иметь совершенно различный порядок поступления тиков. При моделировании "Все тики" у нас может получиться монотонно возрастающая или монотонно убывающая последовательность тиков, что практически гарантирует вход в рынок при прорыве диапазона. При тестировании же в режиме "Каждый тик на основе реальных тиков" используется записанная история тиков, и там динамика изменения цены может быть совершенно неожиданной.

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



Четыре режима генерации тиков

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

Далее по точности моделирования идет режим "OHLC на M1 ", при котором моделируются цены Open, High, Low и Close каждого минутного бара, входящего в тестируемый диапазон истории. Таким образом, при тестировании на таймфрейме H1 в течение часа эксперт будет вызван 240 раз: на каждом из 60 минутных баров обработчик OnTick() будет вызван 4 раза - по разу для каждой цены OHLC. При таком моделировании уже можно использовать Trailing Stop, просматривать развитие цены на других таймфреймах и индикаторах, если это необходимо. Например, тестировать стратегии типа "3 экрана Элдера ".

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

Начните разработку системы с режима "OHLC на M1"

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

Прежде чем приступить к тестированию торговой стратегии, необходимо четко отдавать себе отчет в том, что от выбранного режима моделирования зависит точность результатов и объем времени, затрачиваемый на их получение. Если необходимо быстро оценить и проверить торговую стратегию, используйте режим "OHLC на M1". В нем вы сможете быстро оценить потенциал торговой системы.

Следующий этап - отладка и режим "Все тики"

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

Точность тестирования против скорости

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

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

Между этими двумя крайними режимами находятся "OHLC на M1 " и "Все тики ", которые работают быстрее, чем "Каждый тик на основе реальных тиков ", но дают меньшую точность тестирования. В общем виде можно сформулировать закон, описывающий время и точность тестирования:

Чем быстрее проходит тестирование, тем ниже точность моделирования торговли. Чем детальнее и точнее моделируется развитие цены на истории, тем больше времени требуется на проведение тестирования.

Торговые сервера уже много лет накапливают реальную тиковую историю, и тестер стратегий в MetaTrader 5 в режиме "Каждый тик на основе реальных тиков" скачает всю необходимую историю автоматически. Но чем достоверней проводится тестирование, тем больших ресурсов оно требует. Поэтому выбирайте баланс между точностью и скоростью.

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

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