Что такое тестирование на исторических данных (или – бэктестинг)?

computer-1209641_640Бэктест – это применение торговых правил стратегии к набору исторических данных по цене.

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

Было сказано однажды, что «все модели неверны, но некоторые из них полезны». То же самое верно в отношении бектестов. Так для чего они нужны?

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

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

Существует два основных типа программного обеспечения для бэктеста – системы «цикл с фиксированным числом итераций» и «основанная на событиях».

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

Подводные камни бэктэстинга

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

  • Тестирование в пределах выборки. Это происходит, когда для обучения вашей модели вы используете те же данные, что и для тестирования. Это почти всегда увеличивает результативность стратегии по сравнению с той, которая будет при реальной торговле. Это потому, что она не была проверена на новых данных, которые, скорее всего, будут заметно отличаться от обучающих данных. По сути, это форма переобучения.
  • Систематическая ошибка выжившего. У индексов фондового рынка, таких как S&P 500, периодически происходит процесс включения в перечень и исключения из него компаний, т.е. состав с течением времени меняется. Не принимая во внимание это изменение структуры во время бэктеста, торговые стратегии будут автоматически «выбирать победителей» в силу игнорирования всех компаний, которые выпали из индекса из-за низкой рыночной капитализации. Поэтому всегда необходимо использовать данные, свободные от систематической ошибки выжившего при проведении долгосрочных бэктестов.
  • Систематическая ошибка опережения. Будущее данные могут «проникнуть» в бэктесты незаметно. Рассмотрим расчет коэффициента линейной регрессии за определенный промежуток времени. Если этот коэффициент затем используется в той же выборке, то мы косвенно принесем будущие данные и, таким образом, скорее всего, получим завышенную результативность. Во многом эта проблема решается бэктестами, основанными на событиях.
  • Изменение режима рынка. Это касается того, что «параметры» фондового рынка не неизменны. То есть у основного процесса, вызывающего движения акций, нет параметров, которые остаются постоянным во времени. Это затрудняет обобщение параметрических моделей (в которых многие торговые стратегии являются элементами) и, таким образом, результативность в бэктесте может быть выше, чем в реальной торговле.
  • Операционные издержки. Многие бэктесты по принципу «цикла с фиксированным числом итераций» не принимают во внимание даже основные операционные издержки, такие, как сборы или комиссионные. Это особенно характерно для научных работ, где бэктесты проводятся в основном без операционных издержек. К сожалению, очень просто найти стратегии, которые весьма прибыльны без операционных издержек, но показывают значительные потери при применении на реальном рынке. Типичные расходы включают спрэд, влияние рынка и проскальзывания цены. Все они должны учитываться в реалистичных бэктестах.

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

  • Данные OHLC (open-high-low-close). Это тип ежедневных данных, взятых с бесплатных сайтов, таких как Yahoo Finance, часто является объединением нескольких обменных каналов. Поэтому маловероятно, что некоторые из более экстремальных значений (в том числе высокая и низкая цена дня) можно получить с реальной торговой системой.
  • Ограниченность потенциала. При бэктестинге легко использовать «бесконечный» мешок денег. Однако в действительности капитал, а также маржа, жестко ограничены. Необходимо также думать об ограничениях среднедневного объема (ADV), особенно для акций с маленькой капитализацией, где возможно, что наши торги действительно могут сдвинуть рынок. Влияние таких «рыночных последствий» необходимо учитывать для целей управления рисками.
  • Выбор контрольного параметра. Насколько хорошо контрольный параметр, относительно которого тестируется стратегия? Например, если вы торгуете товарными фьючерсами и вам безразличен индекс акций S&P500, имеет ли смысл использовать S&P 500 как контрольный параметр? Может быть для этого лучше подойдет набор других сырьевых товаров?
  • Надежность. Если вы измените время начала вашей стратегии в бэктесте, насколько сильно изменится результат? Для долгосрочной стратегии не должно иметь значение, начинается бэктест в понедельник или во вторник. Однако если он чувствителен к «начальным условиям», то как вы можете надежно предсказать будущую результативность при реальной торговле?
  • Переобучение/компромисс между смещением и дисперсией. Мы выше немного говорили об этом. Однако переобучение – это более широкая проблема для всех контролируемых методов машинного обучения. Единственный реальный путь «решить» эту проблему – посредством тщательного использования методов перекрестной проверки. Даже тогда мы должны быть очень осторожны, что мы не просто приспособили наши торговые стратегии к шуму в обучающем наборе данных.
  • Психологическая толерантность. Психология часто игнорируется в финансовой математике, поскольку (предположительно) она исключается путем создания алгоритмической системы. Однако она всегда вклинивается, потому что кванты имеют тенденцию «чинить» или «переопределять» систему после того, как она была применена в реальности. Кроме того, что может показаться терпимым в бэктесте, может быть ужасным в реальной торговле. Если ваша кривая капитала на бэктесте показывает просадку в 50% в какой-то момент торговой истории, вы выдержите такое в режиме реального времени?

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

А еще можно опубликовать статью в своем блоге:

  Опубликовать в своем блоге livejournal.com     Опубликовать в twitter.com  
Получайте свежие статьи
блога на ваш e-mail!
Вы можете прокрутить страницу вниз и оставить комментарий. Пинг в настоящее время не разрешен.

Ваши комментарии к статье:

ВКонтакте
FaceBook

Оставьте Сообщение