Интервью с квантом: Секреты построения торговых стратегий

Методы количественных исследований получили огромное распространение в сфере биржевого трейдинга. В связи с этим, MarketLab представляет вам перевод интервью кванта-управляющего из хедж-фонда. Оригинал материала находится на портале Quandl по адресу https://www.quandl.com/blog/interview-with-a-quant-part-one

Подход кванта к построению торговой системы. Часть 1.

 

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

 

Можешь рассказать нам как ты разрабатываешь новые торговые стратегии?

 

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

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

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

Если модель проходит этот фильтр, то наступает время двигаться через “голубое небо” исследования к формальному анализу.

Что ты имеешь в виду под “формальным исследованием”? Почему это важно?

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

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

Я не хочу чтобы это случилось с моей моделью. Я буду рисковать настоящими деньгами. Так что спустя годы я создала и усовершенствовала медленный, устойчивый, систематический подход, который минимизирует риск одурачивания самомго себя. Его-то я и называю “формальный анализ”.

Какие шаги вы включили в ваш формальный процесс анализа?

Вначале самым большим моим страхом был недостаток данных. История является ограниченным ресурсом. Как только вы использовали все исторические данные для теста, вы не сможете сгенерировать еще. Я параноик насчет недостатка данных вне области обучения. Я начала делить мои данные на непересекающиееся блоки. Потом я перемешала их таким образом, что теперь не знаю какая часть когда происходила. (Это защищает против подсознательных предубеждений, например излишней осторожности в 2008 году и агрессивности в 2009).

Я делаю один блок калибрационным. Обычно я использую Python для калибрации. Использую как уже имеющиейся библиотеки, так и пишу свои. Предположим, мои параметры ограничены и коррелируют. Тогда я использую ЕМ-алгоритм (алгоритм, используемый в математической статистике для нахождения оценок максимального правдоподобия параметров вероятностных моделей, в случае, когда модель зависит от некоторых скрытых переменных). Оптимизация может быть чувствительна  к начальным условиям, так что я использую Монте-Карло для выбора начальных точек области решения. Все это довольно просто делать в Python. 

Результатом калибровки (обучения) должен являться набор “модельных параметров” - численных значений, которые в сочетании с текущей рыночной ситуацией должны предсказывать рыночные цены.

Как только модель откалибрована, она тестируется на данных вне выборки калибрации. Прогнозы верны и случайные компоненты стационарны? Если нет, то ваша модель не работает. Все просто. Я использую специальные приемы, чтобы сломать модель. Например, я оптимизирую на месячном периоде, а тестирую на дневном. Или я проверяю параметры полученные на рынке США для Канады. Если модель на самом деле отражает экономическую реальность, она должна быть честно робастна к такомму типу атак. (Экономика не меняется, если вы пересекаете границы).

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

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

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

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

Звучит исчерпывающе. Что дальше? 

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

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

Excel также позволяет видеть мои предположения открытыми, что достаточно легко потерять если вы работаете с кодом. Он позволяет мне визуализировать статистику (риск, прибыль, просадки, эффективность на капитал, коэффициент Шарпа и т.д.) легко и просто. Даже если моя модель “работает”, нет гарантии, что торговая стратегия на ее основе экономически жизнеспособна.

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

 

Часть вторая