Найти тему

Тестирование торговых стратегий на исторических данных (бэктест)

Оглавление

Начинающие частные трейдеры чаще всего теряют деньги по следующим причинам:

  • поддаются излишней самоуверенности;
  • следуют чужим прогнозам;
  • не придерживаются правил риск-менеджмента;
  • не тестируют торговые стратегии в базовом виде на исторических данных — не проводят бэктесты.

Именно о важности последнего фактора мы и будем говорить в этой статье.

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

Современные стартапы Кремниевой Долины имеют одну полезную привычку: тестировать сотни различных гипотез (пускай иногда и совершенно диких), выискивая в них эффективные закономерности для своих продуктов. Такой подход называется growth hacking, или “взлом роста”. Этот метод помогает протестировать сотни или тысячи идей, опираясь на качественные и количественные исследования. И чем больше и качественней команда проведет таких исследований, тем с большей вероятностью они найдут точки роста бизнеса.

Бэктестинг в трейдинге — что-то вроде growth hack у стартапов. Вы берете гипотезу (торговую стратегию, которую хотите запустить с реальными деньгами) и пропускаете через количественные и качественные исследования (тестируете стратегию на исторических котировках с разными настройками). Пускай изначально у вас может и не быть сотен идей торговых стратегий, но для начала и парочки будет достаточно.

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

Финансовые рынки “вынуждают” действовать многих трейдеров и инвесторов иррационально. В это иррациональное поведение входит как раз и применение стратегий, которые не прошли ни одной “тренировки” перед соревнованиями. Шансы на получение какой-либо системной прибыли с такими стратегиями стремятся к 0.

За 1 час поможем разобраться с факторами успеха и причинами неудач на финансовых рынках. Бесплатно 📈📊

Преимущества тестирования торговых стратегий и важные этапы

Вот с чем поможет вам бэктест:

  1. Объективно оценить любую торговую идею или гипотезу — без эмоций и предубеждений.
  2. Выявить (или не выявить) статистическую ценность торговой стратегии.
  3. Оптимизировать и улучшить стратегию, которая заслуживает право на лайв-трейдинг.
  4. Увидеть сильные и слабые стороны стратегий.
  5. Получить опыт в процессе тестирования. Вы будете понимать, какие подходы имеют больше шансов на успех, а от каких лучше отказаться.

Разделим процесс тестирования торговых стратегий на несколько важных шагов:

Этапы, через которые будет проходить любая стратегия.
Этапы, через которые будет проходить любая стратегия.

  • Фильтрация. На данном этапе вы формируете гипотезу стратегии, которую хотите проверить на работоспособность. Это можно делать хоть на бумаге.
  • Моделирование. Теперь можно формировать выбранную гипотезу уже в стратегию, используя доступные программы и методы. Скоро об этом поговорим.
  • Оптимизация. Любая стратегия имеет множество настроек — от различных параметров индикаторов, до уровней стоп-лосса и тейк-профита. Именно их и нужно оптимизировать, выявляя наиболее удачные настройки.
  • Выявление. Теперь вы можете видеть результаты стратегии с различными параметрами на истории и выбирать наиболее оптимальную настройку.
В рамках бэктеста этих шагов достаточно. Для полного же цикла стратегию необходимо пропускать еще и через форвард-тест. Подробнее о форвард-тесте — в конце статьи в разделе “Материалы”.

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

Как создавать торговые стратегии на основе статистики и данных, способных работать 24/5 — подскажет курс "Системный трейдинг" 📊

Как провести бэктест. Программы, которые понадобятся в ходе тестирования торговых стратегий

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

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

  • Python — язык программирования с огромной библиотекой данных. С этим языком можно создать любую стратегию, визуализацию, да и все, что душе угодно — ограничения лишь в вашей фантазии и навыках программирования. Считается одним из самых доступных языков в плане его изучения
  • С++ — уже более сложный язык. Говорят, что C++ больше подходит для высокочастотных стратегий (HFT), так как он имеет очень высокую скорость исполнения любых алгоритмов
  • MQL4 — сформировался в процессе роста популярности платформы MetaTrader 4. Трейдеры, активно торгующие на этой платформе, часто используют MQL4 для автоматизации стратегий

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

Факторы, влияющие на успех бэктеста и будущих стратегий

Чтобы рационально подходить к тестированию торговых стратегий, нужно фокусироваться на 3-х критериях:

  1. Фактор оптимизации.
  2. Фактор “выживания” стратегии.
  3. Психологический фактор.

Пройдемся по списку.

Шпаргалка по историческим тестированиям есть в нашем Telegram 📊

Фактор оптимизации

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

Ниже бэктесты двух похожих стратегий. Доходность первой — 48% за год, доходность второй — 37%.

Стратегия с доходностью 48%.
Стратегия с доходностью 48%.
Стратегия с доходностью 37%.
Стратегия с доходностью 37%.

Если бы мы выбирали стратегию только по признаку доходности, тогда первая стратегия победила бы. Вот только вторая стратегия лучше адаптирована и оптимизирована под рыночные условия — ее кривая значительно плавнее, хоть и доходность ниже на 11%. Разумные инвесторы точно не выберут первый вариант в попытке заработать дополнительные 11%.

Фактор "выживаемости" торговой стратегии

Здесь нам важно протестировать торговую стратегию на длительном временном периоде. В нашем случае — это около 11-ти лет исторического тестирования.

Два важных параметра, на которые мы смотрим по завершению исторического тестирования:

  1. Максимальная просадка в % от капитала.
  2. Просадка по времени.

Максимальная просадка в % от капитала

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

Так выглядит просадка на кривой доходности.
Так выглядит просадка на кривой доходности.

Просадки и финансовые рынки — две стороны одной медали. Кривая капитала никогда не будет расти под 45 градусов без каких-либо снижений. Все, что нужно делать трейдеру — контролировать максимально допустимый уровень просадки. Под “максимально допустимым” считаются разные параметры — у кого-то это 30%, у кого-то 50%, а кому-то сложно пережить и 10%. Здесь выбор субъективен и зависит от рисковых предпочтений самого трейдера.

Именно просадка может повлиять на финальный выбор стратегии. На примере ниже — неплохой бэктест, но просадка в конце исторического тестирования не позволила перевести стратегию в следующую фазу. И проблема тут не в самом размере просадки, которая составила 11,25% (что, в целом, вполне допустимо), а именно в резком снижении капитала.

Резкая просадка в конце испортила всю красоту.
Резкая просадка в конце испортила всю красоту.

Такое резкое снижение капитала может говорить о следующем:

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

Вариантов может быть много. Не стоит искать ответы на все вопросы, проще обращать внимание на такие вот бэктесты.

Просадка по времени

С просадкой по времени все проще. Бывает, что кривая капитала на бэктесте сильно не проседает в денежном эквиваленте, но стратегия стагнирует по времени. К примеру, как на рисунке ниже.

Просадка по времени.
Просадка по времени.

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

Хуже, что может быть, это просадка по времени и просадка в денежном эквиваленте. Вот как на примере ниже.

Здесь плохо все: и резкое снижение в %, и последующая просадка по времени.
Здесь плохо все: и резкое снижение в %, и последующая просадка по времени.

Психологический фактор

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

Вариант 1.
Вариант 1.
Вариант 2.
Вариант 2.

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

Заключение

Так как рынки имеют значительную долю неопределенности, мы не знаем, что на них будет происходить завтра. Все что у нас может быть — статистическая модель за прошлый период времени (те самые 10, 15 или 20 лет исторических тестов), риск-модель (заданный уровень максимальной просадки, риск на одну сделку) и “холодный” ум.

Бэктест не дает 100% гарантий, что стратегия будет вести себя именно так, как на историческом тестировании, но это лучшая статистическая основа, с которой нужно начинать.

Основные тезисы статьи:

  • Внедрите тестирование торговых стратегий в свою практику уже сейчас. И неважно какие способы вы для этого будете использовать вначале, — даже если это простейший визуальный тестер — уже хорошо. В процессе вы обязательно освоите новые методы тестирования и увлечетесь этим.
  • Стремитесь к объективной оценке стратегий и подходов. Часто бывает, что вроде как логичная стратегия не приносит результатов, тогда как примитивный метод позволяет получать системную прибыль. Финансовые рынки — область парадоксов. Иногда хорошие результаты находятся там, где меньше всего их ждешь.
  • Настраивайте риски торговых стратегий так, чтобы они не приносили вам стресс и неуверенность. Мы рекомендуем настраивать максимально допустимую просадку в районе 15% на капитал.