Трейдеры, которые приобрели мою программу robot_uralpro (см. пост на смарт-лабе), спрашивают, можно ли доработать алгоритм для применения его на современном рынке? Напомню, стратегия робота основана на взаимоотношении цен синтетического индекса, составляемого динамически из рыночных цен акций, входящих в индекс РТС, и фьючерса RI. Идея «одноногого» статистического арбитража, реализованного в роботе, будет работать и сейчас, только в том случае, если научиться правильно определять, какой актив опережает другой в смысле динамики их цен. Эта статья посвящена правильному выявлению такого взаимодействия, которое в англоязычных источниках называется «lead-lag relationship» -опережение-отставание между разными активами.
Те алготрейдеры, кто не приобретал robot_uralpro, тоже сочтут эту статью полезной, так как lead-lag relationship может использоваться в стратегиях парного трейдинга и им подобным. Например, определив такое взаимодействие, можно исключить из парного трейдинга один из активов ( с учетом того, конечно, что отношение торгуемых инструментов было описано четкой моделью) и значительно увеличить тем самым прибыльность стратегии.
Могу сразу отметить, что на современной бирже в большинстве случаев изменение цены фьючерса в направлении последующего движения рынка происходит раньше, чем изменение значения синтетического индекса. Объясняется это тем, что фьючерс торгуется активнее, его волатильность больше, порог входа меньше. Однако это знание ничего не дает в плане построения алгоритма, потому что нам надо точно определить, когда эти случаи происходят, сколько времени длятся, и когда все-таки индекс начинает идти вперед. Обычно для этого предлагается использовать кросс-ковариацию приращений цен активов, получаемую путем расчета ковариации, когда выборка приращений цен одного из активов сдвинута во времени на некоторую величину, называемую лагом:
, где
γ(k)- кросс-ковариация для лага k;
— текущие приращения цен первого и второго активов.
Если кросс-ковариация положительна при положительном k, то делается вывод, что актив q опережает актив p, если кросс-ковариация положительна при отрицательном k, то актив p опережает актив q.
Однако правильное вычисление кросс-ковариации возможно, если данные о приращении цены поступают через равные интервалы времени t и не содержат пропусков. Ни то, ни другое условие не выполняется для высокочастотных данных, которые требуются для HFT и просто intraday алгоритмов. Обычно эту проблему решают так — разбивают выборку на равные интервалы и если между ними не происходило изменение цены, то полагают приращение цены равным 0. Это приводит к сильной зависимости ковариации от частоты разбиения и в общем к неправильному ее вычислению в динамическом режиме. Кроме того, ковариация зависит и от величины приращения цен, что в случае большой разницы между ценами активов, также приводит к неверным результатам.
Более точный подход к определению lead-lag relationship предлагают авторы работы "Intraday Lead-Lag Relationships between the Futures-, Options and Stock Market". Для получения правильного значения кросс-ковариации берутся приращения цен, взятые между двумя наблюдениями, между которыми может быть более одного изменения цены. Рассмотрим всю процедуру вычисления более подробно.
Обозначим наблюдения цены pt индексом i, цены qt индексом j, и общее число наблюдений N и M соответственно. Разница между двумя разными уровнями цены может быть записана как сумма приращений ненаблюдаемого процесса изменения цены в интервале между наблюдениями:
где ti означает временную метку i-го наблюдения. Кросс-произведение приращения цен между двумя активами запишем как:
Математическое ожидание этого кросс-произведения есть линейная комбинация кросс-ковариаций:
и это выражение зависит от наблюдаемых моментов времени. Далее обозначим xij(k) число раз, когда γ(k) появляется в выше приведенном выражении:
Важной особенностью xij является то, что эти значения зависят только от моментов времени наблюдаемых изменений ценыи не зависят от цены активов. Таким образом, мы можем записать E(yij) как линейную комбинацию ковариаций γ(k), k=−K...K:
Вышеприведенное выражение может рассматриваться как выражение регрессии с неизвестными кросс-ковариациями γ(k) в виде параметров и коэффициентами xij в виде объясняющих переменных. В векторной записи:
Таким образом, кросс-ковариации могут быть вычислены методом наименьших квадратов по наблюдениям yij и рассчитанным значениям xij.
В рассмотренном методе могут быть использованы любые интервалы между наблюдаемыми ценами, в зависимости от требуемой вами частоты сделок. Также достаточно ограничиться интервалами, где, где К — максимальный требуемый лаг.
В заглавии поста приведен график кросс корелляции между приращениями цены индекса AEX амстердамской биржи и фьючерса на этот индекс. Минимальный шаг лага k взят равным пяти минутам. Максимальное значение K=6, то есть приращения цен измеряются внутри пересекающегося интервала длительностью 30 мин. Из этого графика видно, что на интервалах от 0 до 15 минут фьючерс опережает индекс с максимальным значением корреляции в районе 5 мин.
Кстати, очень перспективно выявления lead-lag relationship между фьючерсом и его опционами. Кто сможет правильно произвести все вычисления, получит очень интересный алгоритм статистического арбитража.
Также дам рекомендацию тем, кто улучшает алгоритм robot_uralpro. Не стремитесь к очень высокой частоте сделок, увеличьте немного интервалы расчетов, там уйдут многие микроструктурные особенности, которые и не учитывались в 2010 году этой стратегией, но имеют сильное влияние сейчас. Это значительно облегчит вашу работу. Но помните, что слишком большой интервал между сделками тоже приведет к уменьшению статистической достоверности. По моим испытаниям этого алгоритма в тестировании на современных данных выходило около 500 сделок в день при объеме 5 контрактов RI, ориентируйтесь на это значение.
Другие алгоритмы, применяемые в алгоритмической торговле и биржевых роботах смотрите в моем блоге и на сайте.
----
Такие есть?? :)
Разность Pt(i+1) — Pt(i) а не Pt(i-1) — Pt(i)
Это же проще и, почти наверное, не хуже, а то и лучше.
В каком диапазоне задержек Вы оцениваете, кто кого опережает,
минуты, как у автора, или секунды или миллисекунды?
Практический, меньше математики больше «инженерного» подхода, почти всегда когда виден лес формул, есть чисто «инженерный» способ, который делает тоже самое или почти тоже самое и при этом интуитивно понятен. «Всё следует упрощать до тех пор, пока это возможно, но не более того.»
Философский, рынки стремятся к эффективности то что кто-то зарабытывает на рынке, это не их «победа», а чья-то недоработка. Соответственно, есть две ветки развития «оптимизация скорости» и «оптимизация интелекта». «Оптимизация интеллекта» означает, что нужно уметь делать эффективный ресёч. Мастерство как и в любом деле имеет несколько градаций, которые и определяют некоторый возможный путь:
1. «Подражательство», взял книжку, статью, прочитал что там написанно, воспроизвел, не разобравшись откуда это все взялось, как автор к этому пришел, какие предпосылки и идеи заложил в основу.
2. «Рождение понимания», способность «гнуть» модели, понимание предпосылок которых в них заложены, понимание как изменение тех или иных предпосылок влияет на модель, способность «пересобрать» модель изменяя предпосылки или добавляя новые.
3. «Мастер», когда и формул чаще всего писать не надо, достаточно предпосылок и идей, все остальное и так становится понятно.
Каждая серьезная «брешь» в модели, это с одной стороны возможность манипулировать некоторой «популяций ботов» построенных по этой модели, с другой это возможность ее улучшить и оторваться от преследователей-«подражателей».
Просто я последнее время ковыряю в этом направлении, но пока вижу что инструменты стянуты весьма плотно. Осознавая глубину подхода (математическую сторону) хотя бы на примере ваших публикаций, я пока прихожу к неутешительным выводам что заработать там очень непросто, по крайней мере такими прямолинейными безрисковыми стратегиями. При интенсиности сделок 500 в день и целевой доходности 100-150% (что очень мало) — комисси, вероятно, занимают ключевую роль. Вероятно настолько ключевую, что отсутствие брокерских комиссий является обязательным условием.