Арбитраж и все все все

Арбитраж и все все все
Atom
12/12/2011
gambler_max


Бодрого дня, уважаемые коллеги и примкнувшие к ним товарищи. Ветка это есть продолжения краткой дискуссии про тематические парки и куртизанок, что была в скайпе.
Предлагаю обсудить тему арбитража. Но прежде чем начать, хотел бы сразу попросить «выступить» всех у кого есть, что сказать по делу и они готовы это сказать. Утверждения типа «на этом можно хорошо зарабатывать имея и пару лямов» и прочие утверждения в стиле Капитана Очевидности лучше пока оставить для скайпа. Если готовы обсуждать открыто (благо форум закрытый – значит можно палить граали), то давайте попробуем.
Так же хочу отметить, что я в этой теме пока как свин в апельсинах. Это связано в первую очередь с возможно не самыми глубокими познаниями в статистике и рядом других причин.
Но для затравки попробую выступить первым.
Хочу сразу поставить все точки над «и» в вопросах терминологии. Есть много разных обзывательств, касательно арбитража. Я предлагаю утвердить слудующее:
- математический арбитраж – арбитраж при котором вероятность благоприятного исхода (гарантированного схождения)близка к 100% - это например игрища со спрэдами между ближним и дальним фьючом. Конечно говорить о 100% удаче не совсем корректно – черных леблядей никто не отменял.
- риск-арбитраж – арбитраж между акциями компаний, затеявших сделку по слиянию (поглощению). В рамках данной темы предлагаю это не трогать ибо на нашем рынке это не актуально, а для буржуйского имеет смысл при наличии больших денег, кучи времени и хорошего понимания фундаментальных факторов.
- межрыночный арбитраж – купили на ММВБ, продали на LSE. Трогать не будем ибо это дорого.
-статистический арбитраж (парный трейдинг) – это именно то, что нам нужно. Назовем это арбитражем при котором ожидается, что спрэд (у нас вроде как это раздвижкой зовется) вернется к своему среднему значению в случае отклонения. При этом «среднее» может быть как и реально mean-reversing, так и 0-reversing (написал с ошибками наверно). Что брать за среднюю обсудим чуть позднее.
«Участниками» парной торговли могут быть – акция+акция (для РФ работает), акция + индустриальный ETF (для РФ не работает), фьючерс-фьючерс (корзина фьючерсов – на РФ возможна, хотя и не всегда приятна), фьючерс-акция (возможна в РФ), ряд других вещей, которые на скудном рынке РФ никак не реализуются.
Нас будет интересовать только два варианта: акция-акция (в том числе и американский рынок) и фьюч-фьючи (в том числе и американский рынок)
Теперь посмотрим из каких «частей» складывается правильная «парная» торговля:
- определение торгуемых инструментов
- определение веса каждого инструмента в паре
- определение точки (причины) входа в позицию
- определение причины выхода из позиции
-ведение позиции в течении сделки

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

1.Определение торгуемых инструментов.
Для буржуев пары подбираются с учетом следующих факторов: акции должны находиться в одном секторе\индустрии, их корреляция должна быть как можно ближе к 1(-1). Первое требование обусловлено тем, что акции одного сектора будут одинаков реагировать на рыночные риски, имеют схожие операционные модели, ну и «слабые» всегда будут стремиться за «сильными». При работе с фьючерсами обычно также ищут фундаментальные взаимосвязи (например Нефть разных марок, индексы разных стран и т.д.) Что касается корреляции – тот тут я не встретил в литературе единого мнения – как правило указывается, что акции должны коррелировать и значения в 0.5 типа как уже достаточно. «Пацаны» на буржуйских форумах все-таки склоняются к тому, что это значение не должно быть ниже 0.7-0.8. Для нашего рынка это не актуально  ибо акции которыми можно торговать у нас имеют 0.9 и называются Газпромосбербанк.
Некоторые продвинутые участники упоминают еще и необходимость коинтеграции, но мой скудный статистических багаж подсказывает, что добиться коинтеграции у высоко коррелированных инструментов гораздо проще. Но тут я могу быть не прав.

2.Определение веса инструмента. Тут опять же есть несколько подходов. Самый простой и самый неправильный – поделить один инструмент на другой и полученное значение будет множителем для определения веса инструмента в паре. Более продвинутые предлагают использовать формулу (цена А/бета А)/(цена Б/ бета Б). Даная фишка применима исключительно для акций, торгуемых в штатах (и условно применима для наших). Такой формулой мы учитываем волатильность инструментов относительно «эталона» которым в данном случае выступает индекс. Не могу сказать какие тут минусы ибо «глубоко» протестить это дело трудно так как самому бету считать заманаешься, а исторических данных найти в свободном доступе трудно.
Еще одним способом является простое ATR A/ATR B. Работает для акций и фьючей но не совсем подходит для торговле фьюч-корзина фьючей (использует товарищь Кауфман).
Попадались и иные способы (например с учетом исторической волатильности), но так или иначе все они учитывают волатильность инструментов и гораздо точнее работают нежели простая «дележка» инструментов.
Для корзинки фьючей наибольший интерес предлагает метод предложенный (но не до конца раскрытый) Тарасом в его публикациях на русском трейдере.

3.Определение точки входа. Тут так же есть туча вариантов. Одни строят график спрэда и при отклонении на величину более 1.5-2-2.5(кто как) стандартного отклонения за некий промежуток времени открывают позу в надежде на возврат цены к своему среднему (стоит отметить что ст-откл. также можно посчитать по разному), кто-то в качестве фильтра еще считает Density curve. Однако у данного метода есть один неприятный момент – спрэд может не возвращаться к своему среднему значению достаточно продолжительное время. Нам же интересен короткий горизонт – не далече 3дней (ну или интрадейные колебания).
Другие товарищи считают спрэд не по цене, а через формулу стохастика (без усреднения) и спрэдом для них являются разница двух стохастиков (это предлагает делать Кауфман) или же стохастик построенный по этой разнице взятый за несколько дней (автор он же). Тут у нас решается проблема возврата к «0».
Есть и более изощренный вариант «от Тараса», где цена нормируется с целью избавления от «трендовой» составляющей и предполагается торговля при отходе от среднего.

4.Выход из позиции и управление позицией. Выход прямо зависит от причины входа – это или возвращение к «0» или к средней. Так же используется стоп при достижение порогового значения риска или стоп по времени удержания позы.
Управление позой предполагает добавление к позиции с целью смещения точки безубыточности в случае неверного движения. Однако этот метод весьма требователен к депозиту и устойчивости задницы трейдера.

Ну вот собственно у меня все. Предлагаю высказаться по пунктам у кого есть что сказать.


1 2 3  > >>
Church

Avatar
Date: 12/12/2011
Reply


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

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

Code
library(rusquant)

getSymbols("SBER", from=Sys.Date()-30, src="Finam", period="15min")
getSymbols("SRZ1", from=Sys.Date()-30, src="Finam", period="15min")

spread <- OpCl(SBER) - OpCl(SRZ1)*100
plot(spread)

a = cbind(OpCl(SBER), OpCl(SRZ1))
cor(a, use="complete.obs")


Корреляция:
OpCl.SBER OpCl.SRZ1
OpCl.SBER 1.000000 0.906915
OpCl.SRZ1 0.906915 1.000000


Разумеется, это не совсем корректный способ, зато простой и интуитивно понятный. Статистически более корректная процедура: http://quanttrader.info/public/testForCoint.html
Rplot.jpg 46 KB (329)
Thanks:

Mikhail Sukhov

Avatar
Date: 12/12/2011
Reply


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


А зачем такое условие? Почему не взять корреляцию и только? Пары будут ходить вместе. Ну да, разойдутся когда-то и не сойдутся. Но можно же поставить "парный стоп лосс" (херасе я придумал[cool]). Тоесть на определенному участке времени они у нас будут работать. Даже в реале. Ну протухнет их парность через пол года, так и что с того? Может через год они опять вернутся по стечению обстоятельств.

Да, а ты чем рисует спред?
Thanks:

gambler_max

Avatar
Date: 12/12/2011
Reply


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

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

Code
library(rusquant)

getSymbols("SBER", from=Sys.Date()-30, src="Finam", period="15min")
getSymbols("SRZ1", from=Sys.Date()-30, src="Finam", period="15min")

spread <- OpCl(SBER) - OpCl(SRZ1)*100
plot(spread)

a = cbind(OpCl(SBER), OpCl(SRZ1))
cor(a, use="complete.obs")


Корреляция:
OpCl.SBER OpCl.SRZ1
OpCl.SBER 1.000000 0.906915
OpCl.SRZ1 0.906915 1.000000


Разумеется, это не совсем корректный способ, зато простой и интуитивно понятный. Статистически более корректная процедура: http://quanttrader.info/public/testForCoint.html


1.это на R? Блин я его вааще не понимаю...этоб...в экселе там....или еще куда :-(
2.По поводу ссылки. Не совсем понял почему предлагается в начале считать спрэд а потом проверять его? В книге на которую он ссылается более правильный ИМХО подход
Thanks:

gambler_max

Avatar
Date: 12/12/2011
Reply


Mikhail Sukhov
Church
Для простого варианта статарба (парный трейдинг, расширенный до корзин) нужно найти "коинтегрированные ряды". Грубо говоря, коинтегрированность означает, что два ряда не обязательно все время ходят вместе, но имеют тенденцию время от времени сходиться (за точность не ручаюсь).


А зачем такое условие? Почему не взять корреляцию и только? Пары будут ходить вместе. Ну да, разойдутся когда-то и не сойдутся. Но можно же поставить "парный стоп лосс" (херасе я придумал[cool]). Тоесть на определенному участке времени они у нас будут работать. Даже в реале. Ну протухнет их парность через пол года, так и что с того? Может через год они опять вернутся по стечению обстоятельств.

Да, а ты чем рисует спред?

вот какраз то по теории вечного свинства в этот протухлый период и можно влететь
Thanks:

Church

Avatar
Date: 12/12/2011
Reply


Mikhail Sukhov
Church
Для простого варианта статарба (парный трейдинг, расширенный до корзин) нужно найти "коинтегрированные ряды". Грубо говоря, коинтегрированность означает, что два ряда не обязательно все время ходят вместе, но имеют тенденцию время от времени сходиться (за точность не ручаюсь).


А зачем такое условие? Почему не взять корреляцию и только? Пары будут ходить вместе. Ну да, разойдутся когда-то и не сойдутся. Но можно же поставить "парный стоп лосс" (херасе я придумал[cool]). Тоесть на определенному участке времени они у нас будут работать. Даже в реале. Ну протухнет их парность через пол года, так и что с того? Может через год они опять вернутся по стечению обстоятельств.

Да, а ты чем рисует спред?

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

Комнтеграция тоже не страхует от того что модель рассыплется. В 2008 за пару месяцев статарб хеджфонды просели На 30-40% ак раз потому что конъюнктурные изменения разорвали коинтеграцию по некоторым инструментам.

График строился встроенными средствами R plot(spread)
Thanks:

Church

Avatar
Date: 12/12/2011
Reply


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

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

Code
library(rusquant)

getSymbols("SBER", from=Sys.Date()-30, src="Finam", period="15min")
getSymbols("SRZ1", from=Sys.Date()-30, src="Finam", period="15min")

spread <- OpCl(SBER) - OpCl(SRZ1)*100
plot(spread)

a = cbind(OpCl(SBER), OpCl(SRZ1))
cor(a, use="complete.obs")


Корреляция:
OpCl.SBER OpCl.SRZ1
OpCl.SBER 1.000000 0.906915
OpCl.SRZ1 0.906915 1.000000


Разумеется, это не совсем корректный способ, зато простой и интуитивно понятный. Статистически более корректная процедура: http://quanttrader.info/public/testForCoint.html


1.это на R? Блин я его вааще не понимаю...этоб...в экселе там....или еще куда :-(
2.По поводу ссылки. Не совсем понял почему предлагается в начале считать спрэд а потом проверять его? В книге на которую он ссылается более правильный ИМХО подход

R - та еще сволочь, там реализованы все стат методы в мире, поэтому решение задачи сводится к поиску нужного пакета и чтению доков, чтобы разобраться, как именно автор предполагал использование его пакета. В результате получается быстро, но больно (сначала). Кроме того, предполагается статистическая подготовка.

В статье я сам не разбирался, нагуглил и линканул. Но я знаю, что робастое тестирование коинтеграции - не самая простая штука.
Thanks:

Church

Avatar
Date: 12/12/2011
Reply


Кстати, высокая коинтеграция при низкой корреляции означает что спреды больше, а значит и профит mean reversion стратегий выше.
Thanks:

gambler_max

Avatar
Date: 12/12/2011
Reply


Church
Кстати, высокая коинтеграция при низкой корреляции означает что спреды больше, а значит и профит mean reversion стратегий выше.

следовательно сильно выше и риск.
а в принципе, если взять и составить "блок-схему" вычисления коинтеграции, то наверно можно силами того же Си-шарпа реализовать ее в виде ДЛЛ к софту по трейдингу - тому-же Амиброкеру к примеру.
http://quanttrader.info/...rHedgeRatios-slides.pdf - очень интересно (там есть еще и текстовый вариант) Но в любом случае -
он считает спрэд как разницу двух инструментов (как я понял) и вопрос перевода из R в приятное что-то не отпадает
Thanks:

Church

Avatar
Date: 12/12/2011
Reply


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

gambler_max

Avatar
Date: 12/13/2011
Reply


Church
library(rusquant)
getSymbols("SBER", from=Sys.Date()-30, src="Finam", period="15min")
getSymbols("SRZ1", from=Sys.Date()-30, src="Finam", period="15min")
spread <- OpCl(SBER) - OpCl(SRZ1)*100
plot(spread)
a = cbind(OpCl(SBER), OpCl(SRZ1))
cor(a, use="complete.obs")

Вернемся к нашему гондурасу. В начале пара вопросов по коду. ВОт это
spread <- OpCl(SBER) - OpCl(SRZ1)*100
как я понимаю "в простом" языке говорит "Из сбера вычесть фьюч). Вопросы
1.OpCl - это как правильно интерпретировать?
2.Почему фьючь умножается на 100? Ведь во фьюче и так 100 акций?. Не правильнее ли умножать сам сбер
Thanks:
1 2 3  > >>

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy