Начало в моем блоге.
Для проверки робастности нашего вычисления VPIN мы продемонтрируем применение этой метрики для двух наиболее активно торгуемых фьючерсных контрактов: E-mini S&P500 (торгуемый на СМЕ) и фьючерс на сырую нефть WTI (торгуемый на NYMEX). Выборка взята на интервале с 1 января 2008 года по 6 июня 2011 года, сшитая по точкам наибольшего объема в дни экспираций. Размер пакета возьмем равным 1/50 от среднего дневного объема нашей выборки (V). Параметры вычисляются в скользящем окне размером n=50 ( что эквивалентно одному среднему дню по объему).
S&P500
На графике в заглавии поста показан ценовой график фьючерса E-mini S&P500 и его метрики VPIN. Метрика токсичности в основном стабильна, хотя и демонстрирует значительную волатильность. Отметим, что VPIN достигает наивысшего уровня в выборке 6 мая 2010 года, когда на бирже произошел большой обвал котировок. Такой высокий уровень VPIN согласован с потоком ордеров, который был большей частью односторонним в это время. Такая исключительная токсичность приводит к тому, что некоторые маркет мейкеры вынуждены потреблять ликвидность, вместо того, чтобы предоставлять ее и в итоге прекращают свои операции на рынке.
Продолжая тему тестирования алгоритма Маркет Мэйкера, поделюсь своими результатами и мыслями по его работе:
1. Основной режим работы алгоритма — это маркетмэйкинг (он же арбитраж ликвидности, он же торговля спредом). И конечно же, прибыльность этой стратегии сильно зависит от рыночных условий, скорости получения данных и работы системы исполнения. Средняя прибыль на сделку даже и при идеальном исполнении не будет превышать значение спреда (2-5 пунктов по Si в среднем). А в период сильной волатильности, когда стакан бросает из стороны в сторону на 10-30 пунктов, несмотря на большое количество положительных сделок ( около 70%), алгоритм становится убыточным. В основном из-за комиссий, конечно.
2. Да, математические формулы сильно ограничили многих желание понять, как устроен алгоритм. Но на самом деле, если вдумчиво посмотреть картинки (карты политик), получается все ясно и просто. А будет еще проще, если посмотреть картинки графиков из других статей, лежащих в основе алгоритма (например Guilbaud, Fabien, and Huyen Pham, 2013, Optimal high-frequency trading with limit and market orders). Забудем на минутку про дисбаланс бид/акс объемов и построим карту политик для открытой позиции при разных значениях спреда:
Прошлая часть — в моем блоге.
Стандартный подход к вычислению PIN состоит в нахождении методом максимального правдоподобия ненаблюдаемых параметров (α,δ,μ,ϵ) описывающих стохастический процесс трейдов, и последующем вычислением PIN из этих параметров. Мы представим аналитическую оценку токсичности, не требующую промежуточного вычисления ненаблюдаемых величин. Мы обновляем нашу метрику в привязке к объемам для учета скорости прибытия новой информации на рынок. Эта метрика, которая называется VPIN, предоставляет простую оценку токсичности потока ордеров в высокочастотном окружении.
Природа информации и времени
Информация в модели последовательной торговли в общем виде представляет из себя данные, которые несут сообщение о будущем уровне цены актива. На эффективном рынке, значение цены актива отражает его полную информационную величину, в связи с тем, что информированный трейдер стремится получить прибыль от владения этой информацией. Так как маркет-мейкер может занимать как длинную, так и короткую позиции, будущие движения актива влияют на его прибыльность, и он пытается извлечь информацию из паттернов торговли. Эти его попытки отражаются в устанавливаемых уровнях бида и аска.
В статьях об индикаторе PIN мы определили, что на рынке присутствуют два типа трейдеров — информированные и неинформированные. Заявки неинформированных трейдеров всегда подвержены adverse selection risk со стороны информированных. Ситуация, когда после исполнения таких заявок цена движется в невыгодную для неинформированных участников сторону, называется токсичностью потока ордеров. Индикатор PIN служил для измерения этой токсичности, в данной статье мы рассмотрим усовершенствованный индикатор VPIN, который применим и для высокочастотной торговли. Цикл статей основан на публикации Maureen O’Hara "Flow Toxicity and Liquidity in a High Frequency World". Будет все описываться очень подробно, потому что, кроме нахождения непосредственно VPIN, в этой публикации много интересных выводов и фактов.
Ли́нии (по́лосы) Бо́ллинджера(англ.Bollinger bands) — технического анализа финансовых рынков, отражающий текущие отклонения цены акции, товара или валюты.
Индикатор рассчитывается на основе стандартного отклонения от простой скользящей средней. Обычно отображается поверх графика цены. Параметрами для расчета служит тип стандартного отклонения (обычно двойное) и период скользящей средней (зависит от предпочтений трейдера).
Индикатор помогает оценить, как расположены цены относительно нормального торгового диапазона. Линии Боллинджера создают рамку, в пределах которой цены считаются нормальными. Линии Боллинджера строятся в виде верхней и нижней границы вокруг скользящей средней, но ширина полосы не статична, а пропорциональна среднеквадратическому отклонению от скользящей средней за анализируемый период времени.
Окончание цикла статей. Начало и другие алгоритмы биржевой торговли смотрите в моем блоге и на сайте.
В прошлой части мы продемонстрировали обучение модели Маркова на данных, полученных с помощью симуляции. В данной статье рассмотрим производительность модели на реальных данных. Будем тестировать трендследящую стратегию на индексе S&P500.
В большинстве задач с использованием машинного обучения требуются обучающие данные с разметкой классов (состояний). В нашем случае такой разметки нет, поэтому сначала сгенерируем классы для обучающей выборки.
Мы хотим создать трендследящую стратегию, поэтому должны выбрать участки на выборке цен S&P500, которые соответствуют восходящему и нисходящему трендам ( также можно отметить участки, где тренды отсутствуют). Можно это сделать вручную, а можно применить программу, которая автоматически расставит метки в соответствии с вашими определениями тренда.
В этой части рассмотрим обучение модели скрытых состояний Маркова на языке R. В прошлых статьях мы изучили математическую основу модели, которая воплощена в библиотеке RHmm. Есть два способа распознавания режимов с помощью модели Маркова, первый — использование одной модели, каждое состояние которой отражает режим, в каком находится рынок. Второй способ подразумевает построение нескольких моделей, каждая из которых создана для одного режима, задача состоит в том, чтобы выбрать ту модель, которая генерирует данные, наиболее соответствующие текущему состоянию рынка. Рассмотрим оба эти способа.
Метод первый — одна модель с несколькими состояниями.
Для обучения модели будем использовать исходные данные, полученные симуляцией из нормального статистического распределения N(mu,sigma), где mu — медиана, sigma — среднеквадратичное отклонение. Распознавание будем производить для двух режимов — бычьего (bull) рынка, на котором наблюдается восходящий тренд и медвежьего (bear) рынка, на котором тренд нисходящий. Соответственно, сгенерируем приращение значений из двух нормальных распределений - N (mu.Bull,sigma.Bull) и N(mu.Bear,sigma.Bear). На рисунке показан результат такой генерации на 300 наблюдений, 100 первых из которых получены из бычьего распределения, 100 вторых — из медвежьего и 100 последних — из бычьего с другими параметрами mu и sigma (каждое приращение будем считать дневным):
Трейдеры, которые приобрели мою программу robot_uralpro (см. пост на смарт-лабе), спрашивают, можно ли доработать алгоритм для применения его на современном рынке? Напомню, стратегия робота основана на взаимоотношении цен синтетического индекса, составляемого динамически из рыночных цен акций, входящих в индекс РТС, и фьючерса RI. Идея «одноногого» статистического арбитража, реализованного в роботе, будет работать и сейчас, только в том случае, если научиться правильно определять, какой актив опережает другой в смысле динамики их цен. Эта статья посвящена правильному выявлению такого взаимодействия, которое в англоязычных источниках называется «lead-lag relationship» -опережение-отставание между разными активами.
Те алготрейдеры, кто не приобретал robot_uralpro, тоже сочтут эту статью полезной, так как lead-lag relationship может использоваться в стратегиях парного трейдинга и им подобным. Например, определив такое взаимодействие, можно исключить из парного трейдинга один из активов ( с учетом того, конечно, что отношение торгуемых инструментов было описано четкой моделью) и значительно увеличить тем самым прибыльность стратегии.