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

Арбитраж и все все все
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 4  > >>
Mikhail Sukhov

Avatar
Date: 12/13/2011
Reply


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

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

Thanks:

Church

Avatar
Date: 12/13/2011
Reply


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 (429)
Thanks:

gambler_max

Avatar
Date: 12/13/2011
Reply


А можно ли пример результата по такому арбитражу - чтобы бэнчмарк какой-то иметь. Я тут поупрожнялся немного Пока посчитаем спрэд «по колхозному» - берем формулу =(Закрытие-МИН(закрытий за предыдущие 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 (465)
Thanks:

Church

Avatar
Date: 12/14/2011
Reply


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

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

Thanks:

gambler_max

Avatar
Date: 12/14/2011
Reply


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

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

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

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

Thanks:

Church

Avatar
Date: 12/14/2011
Reply


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

Thanks:

gambler_max

Avatar
Date: 12/14/2011
Reply


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

Thanks:

gambler_max

Avatar
Date: 12/14/2011
Reply


gambler_max:

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

Thanks:

Church

Avatar
Date: 12/14/2011
Reply


gambler_max:

gambler_max:

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

Thanks:

gambler_max

Avatar
Date: 12/14/2011
Reply


Church:

gambler_max:

gambler_max:

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

Thanks:
< 1 2 3 4  > >>

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

loading
clippy