Блог им. vlad1024

Основы статистического арбитража. Коинтеграция.

Собственно, понятие коинтеграции и лежало, в основе статистического арбитража, который только начал появлятся в конце 80-х и позволил первопроходцам из JP Morgan, нарубить не мало денег, пока…, но об этом в конце статьи. Поэтому в этот раз мы поговорим, про коинтеграцию, что это такое, зачем и почему. Но начнем из далека и рассмотрим такие статистически понятия как порядок интеграции процесса, и фиктивной (spurios) регрессии, которые и лежат в основе. 

Рассмотрим для начала простейший процесс, гауссовский шум:
Основы статистического арбитража. Коинтеграция.

 Теперь построим его кумулятивную сумму, то есть возьмем значения и последовательно их сложим, таким образом получим что Y_i = sum k = 0..i X_k, где X_k — это исходный гаусовский шум, Y_i — результирующий процесс. То есть в данном случаи взяли шум и его проинтегрировали, таким образом получив случайное блуждание. Так же мы можем повторить данный процесс еще раз, но на этот раз взяв в качестве исходных значений, полученное нами на предыдущем шаги случайное блуждание. Таким образом получим (сверху — интеграл шума, случайное блуждание, снизу — повторная сумма но на этот раз взятая по случайному блужданию):
Основы статистического арбитража. Коинтеграция.

 Проще говоря мы проделали следующее, мы взяли числовой ряд шума, и применили к нему операцию кумулятивной суммы (интегрирования), после первого применения мы очевидно получили случайное блуждание, после последующего применения получили еще один числовой ряд. Чтобы опять вернуться к шуму нам так же дважды необходимо применить операцию конечной разности к этому числовому ряду(или один раз к случайному блужданию). Тогда количество раз применения операции кумулятивной суммы — мы можем назвать порядком интеграции процесса(числового ряда). То есть порядок интеграции процесса, это то сколько раз мы применили сумму к шуму, или наоборот сколько раз необходим применить конечную разность к процессу чтобы получить шум(гауссово распределенную случайную переменную). В общем случаи, шум заменяется на требование получения стационарного процесса(то есть числового ряда у которого мат ожидание и АКФ не изменяются во времени). Процесс с порядком интеграции k, мы будем обозначать как I(k).

К примеру, график цены можно отнести к I(1) процессу (случайному блуждания), если мы возьмем, приращения, то есть к разницу Close-Open свечек, то получим процесс с порядком интеграции I(0). Если рассмотрим какие-то экономические индикаторы к примеру ВВП или объем различных агрегатов денежной массы, то получим процессы близкие к I(2).

Широко известны случаи, когда между абсолютно не связанными числовыми рядами находилась корреляция, к примеру, между уровнем цен и уровнем осадков в Великобритании, или поголовьем овец и GDP. Все это примеры фиктивной регрессии (spurious regression). Рассмотрим для примера, два независимых случайных блуждания:
Основы статистического арбитража. Коинтеграция.


 Коэффициент корреляции между ними = 0.35, хотя они и не взаимосвязаны. Вспомним, что корреляция связана с линейной регрессии, и рассмотрим взаимный график первого и второго процесса. (по оси x — отложен первый процесс, по оси y — второй):
Основы статистического арбитража. Коинтеграция. 

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

Каким же образом, нам посчитать взаимосвязь между двумя процессами? Для начала дадим простой ответ на этот вопрос. В общем случаи коэффициент корреляции валиден, если два числовых ряда для которых он расчитывается являются независимо распределенными случайными переменными (белым шумом, который мы рассматривали в начале статьи), или по крайней мере стационарными процессами. Таким образом, оба числовых ряда должны быть оба нулевого порядка интеграции (I(0) — белый шум/стационарный процесс). То есть чтобы к примеру, посчитать взаимосвязь между двумя акциями(I(1) процессами), необходимо взять разность (Close — Open) и считать корреляцию между ними. Если мы рассматриваем денежную массу/GDP, или другие процессы близкие к I(2), конечную разность необходимо брать два раза, чтобы привести их общему знаменателю I(0) процесса.

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

Более сложный ответ на вопрос, «как посчитать взаимосвязь между двумя процессами», привел Клайва Грэнджера и сотоварищи, к Нобелевской премии, революционизировал статистический анализ/эконометрику, и название ему — коинтеграция. 

Рассмотрим все те же два случайных блуждания Y1, Y2 (I(1) процесса). Теперь подумаем над тем, как будет вести себя разность между ними S = Y1 — b*Y2(где b какой-то коэффициент, для простоты возьмем = 1). Если процессы не взаимосвязаны, то эта разность S так же должна быть случайным блужданием, то есть I(1) процессом. Если же взаимосвязь есть, то S должна быть «чем то меньшим» в статистическом смысле чем случайное блуждание. К примеру если мы представим два числовых ряда которые недалеко отходят друг от друга, то разница между ними будет белым шумом. В этом и заключается смысл коинтеграции, если для какого то коэффициента b спред S = Y1 — b*Y2, будет иметь меньший порядок интеграции, чем исходные процессы, тогда процессы коинтегрированны. В расмотренном выше случаи, это будет обозначать что для двух I(1) процессов, порядок интеграции спреда S должен быть I(0) (то есть белым шумом/стационарным), для какого-то значения коэффициента b. 

Рассмотрим, так же для примера, разность двух случайных блужданий, для которых мы ранее насчитали корреляцию 0.35. Получим, такое же случайное блуждание:

Основы статистического арбитража. Коинтеграция.

 Теперь рассмотрим два случайных блуждания, но на этот раз взаимосвязанные, и разницу между ними, которая в данном случаи очевидно является стационарным I(0) процессом. (сверху — первое случайное блуждание, посередине — второе, снизу — разница/спред между ними).
Основы статистического арбитража. Коинтеграция.


То есть логика коинтеграции, сводится к тому что, необходим найти какой-то коэффициент b, и построить спред S = Y1 — b*Y2, такой что порядок интеграции спреда меньше чем у исходных процессов. Если мы рассматриваем два I(1) процесса, то спред должен быть стационарен.

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

Хорошо, мы предположим знаем что два процесса коинтегрированны, но что нам это дает, какую математическую модель можно использовать чтобы отразить их динамику? Существует теорема о репрезентации коинтеграции, которая говорит нам следующее, что для двух коинтегрированных числовых рядов, существует ECM(error correction model) модель, а так же что если для двух рядов существует ECM модель то они коинтегрированны. Проще говоря коинтеграция <-> ECM модель, то есть существование коинтеграции влечет наличие ECM модели, и наоборот. В простейшем случаи, она описывает следующие соотношения, предположим что мы построили спред S между двумя рядами. Тогда каждый процесс будет стараться вернуть спред к нулю, то есть приращения процессов должны быть скоррелированны с положением спреда. Таким образом мы приходим к следующей модели, для двух рядов Y1 и Y2, мы строим спред S = Y1 — b*Y2, и разности каждого из них dY1, dY2. Чтобы спрэд не «уходил далеко», разности процессов должны быть с ним скоррелированны. То есть постоянно подстраиваться, как в примере пьянице и собакой, там действует по сути один процесс пьяница, а собака к нему привязанна, в общем случаи мы расмматриваем — двух пьяниц но связанных резинкой, когда спред расходится, то соответственно начинают действовать силы возвращающие его к равновесию. Таким образом мы приходим к следующей модели корректирвки ошибок (ECM модели):
dY1 = -a1*S + lagged(dY1, dY2)
dY2 = -a2*S + lagged(dY1, dY2)
то есть, наличие коинтеграции одназначно обозначает, скоррелированность приращений процессов и спреда. Если спред расходится, то есть к примеру становится положительным, то приращения одного процесса обратно скоррелированного с ним возвращают его к нулю, так же как и приращения другого. В этом смысл ECM модели, а так же коинтеграции, так как наличие ECM модели эквивалентно коинтеграции и наоборот. Коинтеграция — показывает что какая-то зависимость между числовыми рядами есть, ECM модель — дает конкретное выражение этой зависимости в виде их динамики. 

В общем случаи, коинтеграционной зависимостью могут связаны больше чем две переменные, а так же таких зависемостей между ними может быть несколько, что приводит нас к VECM модели (vector error correction model) — тягловой лошадки современной эконометрики.

Единственный вопрос, который мы пока не затронули, это то каким образом, строить спрэд (то есть числовой ряд S). Если нам дан набор числовых рядов Y1..Yn между которыми присутствует единственная коинтеграционая зависимость, то для оценки параметров b1-bn спреда вида S = Y1 — b1*Y1 — b2*Y2… — bn*Yn, достаточно построить линейную регрессию между Y1 ~ Y2..Yn, коэффициенты которой(как доказывается в мат. статистике) дадут консистентную оценку параметров b1..bn. В простейшем случаи когда процесса всего лишь два, необходимо той же простейшей линейно регрессией Y1 ~ b*Y2, определить значение коэффициента.

Почему коинтеграция так важна? Потому что подавляющее большинство макро экономических переменных/индикаторов нестационарны, и поэтому трудно поддаются анализу классическими статистическими методами, но в тоже время имеют очевидную схожесть между собой (не разбигаются далеко, как в примере с пьяницей и собакой) и поэтому могут быть валидно описанны при помощи коинтеграции и соответствующих моделей (VECM etc). 

Но применительно к рынку, наличие настоящей коинтеграции означает — наличие абитража, что противоречит базовому постулату эффективных рынков — no arbitrage. Настоящий спред для коинтегрированных процессов, всегда (!) сходитя, так как является стационарным I(0) процессом. Так же для двух коинтегрированных процессов, всегда должна существовать ECM модель(то есть приращения активов должны быть обратно скоррелированны со спредом, возвращая его к нулю). Для рыночных спредов не наблюдается ни того ни другого, поэтому хотя они и ограничены, и могут проходить тесты на коинтеграцию, у них есть главное отличие — рыночные спреды не стационарны.

Клуб алготрейдеров StockSharp
Роботы на заказ

Ссылки на статьи про коинтеграции:
http://lipas.uwasa.fi/~sjp/Teaching/Afts/Lectures/etsc33.pdf
http://advances.mse.ac.in/lecture/notes3.pdf
http://www.uh.edu/~bsorense/coint.pdf 
★72
40 комментариев
Спасибо, хорошо растолковал :)
avatar
avatar
karapuz, ты хотел сказать, что здесь описана элементарная идея, но очень сложным языком? :-)
avatar
Евгений Александрович, видишь ли в чем штука… какая тут описана идея — мне понять не удалось )) в виду слабости моего мозга))
avatar
правильно, пусть начинающие все попробуют
офигеть. спасибо. придется несколько раз прочитать, чтобы загрузить в мозг эту информацию. Это целая статья. Я бы сказал как минимум курсовая. В таком случае хотелось бы увидеть список используемой литературы.
avatar
Евгений Александрович, я ее из головы писал, но сейчас добавил в конце ссылки на статьи, но там действительно сложно написано. я и так уже старался разжевать как мог.
avatar
vlad1024, Дружище у меня один вопрос, я не разбирался конечно, но так понимаю что на подобных моделях работает хренова туча ропатов на всех рынках, дак вопрос их можно победить? урвать у них копейку?
avatar
ФИО: Vialcola, «если очень захотеть можно в космос полететь», многое о чем я тут рассказываю позволяет начать думать в правильном направлении. а так, конечно можно, но для этого нужно приложить голову и работать.
avatar
Пойду с собакой случайно поблуждаю. График блужданий выкладывать?
avatar
ФИО: Vialcola, коинтегрированный )
avatar
karapuz, скоро в беседу должен подключиться А.Г.. Вот тогда, мозг точно откажется понимать суть.
avatar
Евгений Александрович, для пятницы это было бы в самый раз. вместо сериала. бутылем запасся — и можно читать их дискуссию)) почти как футбол даже))
avatar
ФИО: Vialcola, Я так понял для чистоты эксперимента надо водки накатить из расчета пиквадрат миллилитров на сантиметр радиуса талии?
avatar
Роман Некрасов (123insaider), А.Г. — бог, от него сияние исходит… (?))))
avatar
пробояню
Здание на Уолл Стрит, конец рабочего дня, в лифте едет трейдер: на лице небритость недельная, на голове — просто дурдом (все, как обычно, после рабочей недели). Лифт останавливается на очередном этаже, и в него заходит аналитик. Трейдер поднимает на него измученный взгляд и говорит:
— Ну хоть теперь ты мне скажешь КУДА? Вверх или вниз?
avatar
А в стокшарпе ты смог закодировать такого робота?
ЧТобы еще и с мартингейлом позу набирал
Не осилила, но добавила в избранное и буду читать еще раз перед сном.
+
это видимо истинный грааль!
avatar
Спасибо за статью! Отличный пример публикации, которые хотелось бы видеть на данном ресурсе. И не подскажите, screenshots у вас из какой программы?
avatar
Trader_Joe, из python, matplotlib
avatar
vlad1024, Thanks!
avatar
Trader_Joe, vlad1024 постит свои статьи в клубе алготрейдеров (спасибо, Влад), потом уже тут. Читайте форум, там и другие его статьи есть и не пропустите новые.

stocksharp.com/forum/yaf_postst1964_Osnovy-statistichieskogho-arbitrazha--Kointieghratsiia.aspx
avatar
Горбунов Алексей, Спасибо!
avatar
Действительно, бесполезный пост. Все понятно, как 2x2. А найти пару с ликвидным устойчивым спредом, который покрывает издежки не просто.
avatar
где то в середине наверняка есть фраза «тому кто дочитал до этого места ставлю бутылку коньяка»… :)
avatar
Как всегда, мало что понял, но плюсанул :)
avatar
не люблю когда говорят сложно о простом, а тем более начинают приплетать ряды и интегралы. Обычно за сложными моделями пытаются скрыть афёры.
П.С.
всех этих роботехов которые чистую математику торговали, наебали ещё в 2008м…
так что ребята расходимся, здесь нечего ловить.
СвидетельКапитализма, конечно, чтобы сделать ракету или самолет, много думать вообще не надо, нарисовал там на листочке в клеточку, пару линий — и оно полетело, а Boeing и Airbus — это просто аферисты.
avatar
vlad1024, не вижу ничего общего между игрой в напёрсток с аэродинамикой…
СвидетельКапитализма,
товарисч, ступайте строить каналы, читать онолитегов и следить за поводырями ) не мешайте умным людям общаться :)
и таки да, в 2008 роботы, особенно трендовые, заработали пожалуй в разы больше чем люди.
avatar
trader_notes, какой красивый миф…
может ещё устроим конкурс на количество нарубивщих и обонкротившихся хедж фондов управлявших деньгами и торговавших математику?
уверяю вас, количество сливших робо-фондов тогда просто зашкаливало — при чём сразу за очень короткий период.
бувально обнулялись за пару дней.
а то я смотрю сейчас полно умников, которые начали торговать с 2009го года, и опять науши присидают, о том что нужно математику торговать — типа дело верняк…
: ))))
Влад, статья вводная, поэтому для меня много пользы не принесла. Но думаю многим будет полезно с чего то начать.
Меня заинтересовало:
«что приводит нас к VECM модели (vector error correction model) — тягловой лошадки современной эконометрики.»
Ты планируешь раскрывать эту модель, методы работы с ней применительно к ФР? Может литературу посоветуешь?
Спасибо
avatar
trader_notes, она интересна в основном в разрезе экономических данных/макроэкономики, но пока писать про это не планировал.
Ключевое в понимание это простая ECM модель, про которую здесь писал, а VECM ее расширение на многомерный случай. Есть хорошая книжка про практическую эконометрику и коинтеграцию:
narod.ru/disk/47587366001.1e96e7340b38649dc75093148623a20b/Using%20Cointegration%20Analysis%20in%20Econometric%20Modelling%20.zip.html
В R пакете vars есть имплиментация VAR/VECM моделей.
avatar
Интересная статья. Спасибо.
А Горчаков вскользь упоминал, что рыночные спрэды можно считать стационарными. Что думаете?
Мне кажется, что как минимум спрэд на спот-фьючерс стационарен, и это не противоречит гипотезе эффективного рынка, т.к. эта неэффективность быстро устраняется hft роботами, и на ней уже нельзя много заработать.
avatar
Добрый день! Подскажите, как рассчитать b в формуле спреда S = Y1 — b*Y2?
avatar

теги блога vlad1024

....все тэги



UPDONW
Новый дизайн