Church
|
Date: 12/12/2011
Для простого варианта статарба (парный трейдинг, расширенный до корзин) нужно найти "коинтегрированные ряды". Грубо говоря, коинтегрированность означает, что два ряда не обязательно все время ходят вместе, но имеют тенденцию время от времени сходиться (за точность не ручаюсь). Есть много статистических метод, для понимания которых нужно знание многих других статистических метод. Например, давай просто построим спред между фьючом и базисом сбера: Codelibrary(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
|
|
Thanks:
|
|
|
|
|
Mikhail Sukhov
|
Date: 12/12/2011
Church Для простого варианта статарба (парный трейдинг, расширенный до корзин) нужно найти "коинтегрированные ряды". Грубо говоря, коинтегрированность означает, что два ряда не обязательно все время ходят вместе, но имеют тенденцию время от времени сходиться (за точность не ручаюсь).
А зачем такое условие? Почему не взять корреляцию и только? Пары будут ходить вместе. Ну да, разойдутся когда-то и не сойдутся. Но можно же поставить "парный стоп лосс" (херасе я придумал[cool]). Тоесть на определенному участке времени они у нас будут работать. Даже в реале. Ну протухнет их парность через пол года, так и что с того? Может через год они опять вернутся по стечению обстоятельств. Да, а ты чем рисует спред?
|
|
Thanks:
|
|
|
|
|
gambler_max
|
Date: 12/12/2011
|
|
|
|
Church Для простого варианта статарба (парный трейдинг, расширенный до корзин) нужно найти "коинтегрированные ряды". Грубо говоря, коинтегрированность означает, что два ряда не обязательно все время ходят вместе, но имеют тенденцию время от времени сходиться (за точность не ручаюсь). Есть много статистических метод, для понимания которых нужно знание многих других статистических метод. Например, давай просто построим спред между фьючом и базисом сбера: Codelibrary(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
|
Date: 12/12/2011
Mikhail Sukhov Church Для простого варианта статарба (парный трейдинг, расширенный до корзин) нужно найти "коинтегрированные ряды". Грубо говоря, коинтегрированность означает, что два ряда не обязательно все время ходят вместе, но имеют тенденцию время от времени сходиться (за точность не ручаюсь).
А зачем такое условие? Почему не взять корреляцию и только? Пары будут ходить вместе. Ну да, разойдутся когда-то и не сойдутся. Но можно же поставить "парный стоп лосс" (херасе я придумал[cool]). Тоесть на определенному участке времени они у нас будут работать. Даже в реале. Ну протухнет их парность через пол года, так и что с того? Может через год они опять вернутся по стечению обстоятельств. Да, а ты чем рисует спред? вот какраз то по теории вечного свинства в этот протухлый период и можно влететь
|
|
Thanks:
|
|
|
|
|
Church
|
Date: 12/12/2011
|
|
|
|
Mikhail Sukhov Church Для простого варианта статарба (парный трейдинг, расширенный до корзин) нужно найти "коинтегрированные ряды". Грубо говоря, коинтегрированность означает, что два ряда не обязательно все время ходят вместе, но имеют тенденцию время от времени сходиться (за точность не ручаюсь).
А зачем такое условие? Почему не взять корреляцию и только? Пары будут ходить вместе. Ну да, разойдутся когда-то и не сойдутся. Но можно же поставить "парный стоп лосс" (херасе я придумал[cool]). Тоесть на определенному участке времени они у нас будут работать. Даже в реале. Ну протухнет их парность через пол года, так и что с того? Может через год они опять вернутся по стечению обстоятельств. Да, а ты чем рисует спред? Да это почти одно и то же. Коинтеграция несколько более корректна, но несколько труднее для понимания. Визуализация спреда двух линейных комбинаций инструментов, имхо, вполне достаточна чтобы понять насколько ряд коинтегрирован, но не позволяет автоматизировать поиск. Комнтеграция тоже не страхует от того что модель рассыплется. В 2008 за пару месяцев статарб хеджфонды просели На 30-40% ак раз потому что конъюнктурные изменения разорвали коинтеграцию по некоторым инструментам. График строился встроенными средствами R plot(spread)
|
|
Thanks:
|
|
|
|
|
Church
|
Date: 12/12/2011
|
|
|
|
gambler_max Church Для простого варианта статарба (парный трейдинг, расширенный до корзин) нужно найти "коинтегрированные ряды". Грубо говоря, коинтегрированность означает, что два ряда не обязательно все время ходят вместе, но имеют тенденцию время от времени сходиться (за точность не ручаюсь). Есть много статистических метод, для понимания которых нужно знание многих других статистических метод. Например, давай просто построим спред между фьючом и базисом сбера: Codelibrary(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
|
Date: 12/12/2011
Кстати, высокая коинтеграция при низкой корреляции означает что спреды больше, а значит и профит mean reversion стратегий выше.
|
|
Thanks:
|
|
|
|
|
gambler_max
|
Date: 12/12/2011
Church Кстати, высокая коинтеграция при низкой корреляции означает что спреды больше, а значит и профит mean reversion стратегий выше. следовательно сильно выше и риск. а в принципе, если взять и составить "блок-схему" вычисления коинтеграции, то наверно можно силами того же Си-шарпа реализовать ее в виде ДЛЛ к софту по трейдингу - тому-же Амиброкеру к примеру. http://quanttrader.info/...rHedgeRatios-slides.pdf - очень интересно (там есть еще и текстовый вариант) Но в любом случае - он считает спрэд как разницу двух инструментов (как я понял) и вопрос перевода из R в приятное что-то не отпадает
|
|
Thanks:
|
|
|
|
|
Church
|
Date: 12/12/2011
Без R ты без проблем можешь строить спреды и изучать графики в экселе. Регрессию фитить вроде тоже можно, с помощью дополнительных пакетов, и весь процесс довольно извращенный. Не думаю, правда, что это будет эффективно. Переводить все в C#, мне кажется, имеет смысл уже только для продакшна (разумеется если продакшн в C#).
|
|
Thanks:
|
|
|
|
|
gambler_max
|
Date: 12/13/2011
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:
|
|
|
|