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


Бодрого дня, уважаемые коллеги и примкнувшие к ним товарищи. Ветка это есть продолжения краткой дискуссии про тематические парки и куртизанок, что была в скайпе.
Предлагаю обсудить тему арбитража. Но прежде чем начать, хотел бы сразу попросить «выступить» всех у кого есть, что сказать по делу и они готовы это сказать. Утверждения типа «на этом можно хорошо зарабатывать имея и пару лямов» и прочие утверждения в стиле Капитана Очевидности лучше пока оставить для скайпа. Если готовы обсуждать открыто (благо форум закрытый – значит можно палить граали), то давайте попробуем.
Так же хочу отметить, что я в этой теме пока как свин в апельсинах. Это связано в первую очередь с возможно не самыми глубокими познаниями в статистике и рядом других причин.
Но для затравки попробую выступить первым.
Хочу сразу поставить все точки над «и» в вопросах терминологии. Есть много разных обзывательств, касательно арбитража. Я предлагаю утвердить слудующее:
- математический арбитраж – арбитраж при котором вероятность благоприятного исхода (гарантированного схождения)близка к 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 4  > >>
Mikhail Sukhov

Фотография
Дата: 13.12.2011
Ответить


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


И нужно добавить, что время расхождения пар будет много больше, чем при высокой корреляции. А следовательно растут и риски.
Спасибо:

Church

Фотография
Дата: 13.12.2011
Ответить


gambler_max Перейти
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 акций?. Не правильнее ли умножать сам сбер

OpCl это Close/Open. И да, вы правы, этот код неправильный (писал второпях). Правильный:

Код
#install.packages("quantmod")
#install.packages("rusquant", repos="http://R-Forge.R-project.org")

library(rusquant)

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

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

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


Правильная картинка:
Rplot.jpg 48 KB (236)
Спасибо:

gambler_max

Фотография
Дата: 13.12.2011
Ответить


А можно ли пример результата по такому арбитражу - чтобы бэнчмарк какой-то иметь. Я тут поупрожнялся немного
Пока посчитаем спрэд «по колхозному» - берем формулу =(Закрытие-МИН(закрытий за предыдущие 8 баров))/(МАКС(Хай за 8 баров)-МИН(Лоу за 8 баров)) и вычисляем для Сбера и его Фьюча.
После этого берем эти два значения и вычисляем разницу (спрэд) между ними. Берем этот спрэд и через формулу=100*(спрэд на текущем баре-МИН(спрэд за 8 баров))/(МАКС(спрэд за 8 баров)-МИН(спрэд за 8 баров)) получаем значение спрэда который колбасится в виде стохастика.
Далее пишем, что если этот стохастико_спрэд меньше 5 баим сбер и селим фьюче_сбер и если он больше 95 то наоборот. Выход при пересечении спрэдом 50 в ту или иную сторону.
Далее достаем из широких штанин бабло в размере достаточном для торговли 100 лотами акций (100*100=10000 акций) и примерно 100 штук фьюча. Соотношение ног ходит в диапазоне от 90 до 130 контрактов фьюча к 100лотам живых акций.
Имеем просто граальную картинку
Задерг в самом конец вызван скорее всего какими то кривостями в котировках.
Грааль нарисован на промежутке в 3 месяца на 5 минутках.
В итоге вот что имеем: профит 252 000рублей. Комиссии и проскальзывание не учитываем (для чистоты эксперимента) При этом около 154000 принес «живой сбер» и 94000 его фьюч. Если прикинуть в рублях сколько денег вливается в сделки то доходность этого грааля около 20% за 3 месяца или что-то коло 80% без реинвестирования в год
А теперь печалько. Было совершено 1292 входа в позу. Учитывая что мы оперируем 100 лотов на акции 100 контрактов фьюча – мы имеем то, что спрэд + комиссия +прочая хрень делает этот вариант арбитража на 5 минутках не самым благодарным занятием.
Ну вот поэтому хотелось бы понять какой на какой резалт стоит обратить внимание
sberbanki.PNG 12 KB (237)
Спасибо:

Church

Фотография
Дата: 14.12.2011
Ответить


Не понял логику таких вычислений. Да и зачем так. Главный игрок у нас тут - спред, т.к. именно от него образовывается Финансовый результат. Думаю для классического арбитража нужно что-то такое:
Построить временной ряд спреда за последние дни, убедиться (визуально) что он стационарный
Вычислить средний спред и сатандартное отклонение
Выбрать порог входа и порог выхода. Например, входим когда спред уходит в +1 станд.откл. от средней, выходим когда он уходит в -0.5 - и наоборот. Так же выбрать стоп, например, 5 стд. откл.
Все что нужно для бэктеста есть (лучше на тиках).

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

gambler_max

Фотография
Дата: 14.12.2011
Ответить


Church Перейти
Не понял логику таких вычислений. Да и зачем так. Главный игрок у нас тут - спред, т.к. именно от него образовывается Финансовый результат. Думаю для классического арбитража нужно что-то такое:
Построить временной ряд спреда за последние дни, убедиться (визуально) что он стационарный
Вычислить средний спред и сатандартное отклонение
Выбрать порог входа и порог выхода. Например, входим когда спред уходит в +1 станд.откл. от средней, выходим когда он уходит в -0.5 - и наоборот. Так же выбрать стоп, например, 5 стд. откл.
Все что нужно для бэктеста есть (лучше на тиках).

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


ну так расчет и строится на спрэде. Ты в своем примере делишь опен на клоуз, я делю приращение закрытия на диапазон. Другое дело что у тебя спрэд в последствии должен усредняться (как ты и говоришь в последнем посте) я же его перевожу в вариант стохастика. У нас фьючи тяготеют не к направленному движению а к "расколбасу" (хотя не так ярко выраженно как тот же Рассел или Сиплый), поэтому логично вполне делать его вокруг "0". Хотя я не настаиваю что вариант едиснтвенно верный и правильный.

А если у вас результат отрицательный...значит надо искать еще :-)
Спасибо:

Church

Фотография
Дата: 14.12.2011
Ответить


В моем изначальном примере была неправильная формула. Правильная: spread <- OpCl(SBER) - OpCl(SRZ1)*100
В случае когда арбитраж детерминированный и спред обречен на mean reversion.
Спасибо:

gambler_max

Фотография
Дата: 14.12.2011
Ответить


Church Перейти
В моем изначальном примере была неправильная формула. Правильная: spread <- OpCl(SBER) - OpCl(SRZ1)*100
В случае когда арбитраж детерминированный и спред обречен на mean reversion.

не понял - тогда опять возвращаемся к вопросу - почему фъюч на 100 умножаем. У нас тогда перекос получается
Спасибо:

gambler_max

Фотография
Дата: 14.12.2011
Ответить


gambler_max Перейти
Church Перейти
В моем изначальном примере была неправильная формула. Правильная: spread <- OpCl(SBER) - OpCl(SRZ1)*100
В случае когда арбитраж детерминированный и спред обречен на mean reversion.

не понял - тогда опять возвращаемся к вопросу - почему фъюч на 100 умножаем. У нас тогда перекос получается

сам себе отвечу - а зачем там вообще нужно на 100 умножать любую из сторон???
Спасибо:

Church

Фотография
Дата: 14.12.2011
Ответить


gambler_max Перейти
gambler_max Перейти
Church Перейти
В моем изначальном примере была неправильная формула. Правильная: spread <- OpCl(SBER) - OpCl(SRZ1)*100
В случае когда арбитраж детерминированный и спред обречен на mean reversion.

не понял - тогда опять возвращаемся к вопросу - почему фъюч на 100 умножаем. У нас тогда перекос получается

сам себе отвечу - а зачем там вообще нужно на 100 умножать любую из сторон???

Блин, потому что я опять не ту формолу процитировал. :( см. правильную выше.
Потому что фьючь котируется в размере 100 акций базиса.
Спасибо:

gambler_max

Фотография
Дата: 14.12.2011
Ответить


Church Перейти
gambler_max Перейти
gambler_max Перейти
Church Перейти
В моем изначальном примере была неправильная формула. Правильная: spread <- OpCl(SBER) - OpCl(SRZ1)*100
В случае когда арбитраж детерминированный и спред обречен на mean reversion.

не понял - тогда опять возвращаемся к вопросу - почему фъюч на 100 умножаем. У нас тогда перекос получается

сам себе отвечу - а зачем там вообще нужно на 100 умножать любую из сторон???

Блин, потому что я опять не ту формолу процитировал. :( см. правильную выше.
Потому что фьючь котируется в размере 100 акций базиса.

блин я то недоумеваю про это OpCl(SRZ1)*100 - тут не важно что у тебя умножается, раз ты опен на клоуз делишь то 100 не спасет,
а вот если слоуз акции тогда согласен :-)
Спасибо:
< 1 2 3 4  > >>

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

loading
clippy