Блог им. vito2000

R. Считаем корреляцию.

Вчера на СмартЛабе  был размещен пост Как построить корреляционную матрицу (для парной торговли) в Excel, собравший аж 150 "+".
Решил тоже попрактиковаться и написать под эту задачу код в R. Важным преимуществом R является наличие пакета rusquant, который позволяет автоматически получать котировки с Финам в любом таймфрейме (в т.ч. в тиках), что существенно экономит время по сравнению с ручной обработкой в Excel.

Код на R приведен ниже:

R. Считаем корреляцию.

  • Файл c кодом можно скачать тут.
  • Файл с названиями тикеров: для примера 1 тут, для примера 2 тутЭти файлы используется для ввода тикеров в программу, т.к. прописывать тикеры вручную непосредственно в коде при их большом количестве не удобно. 
  • Время загрузки данных с Финам по 79 тикерам составило 84 секунды, т.е. примерно по 1 сек. на тикер. А сколько бы ушло на ручную загрузку для Excel сложно представать.

 

Результаты:

Пример 1. Расчет корреляции по 13 тикерам за: 2013, 2014, 2015, 2016 годы
R. Считаем корреляцию.  R. Считаем корреляцию.

 R. Считаем корреляцию.R. Считаем корреляцию.

Выводы из таблиц:

  • К 2016 году ММВБ на 52% превратился в производное от нефти (т.е. не сильная, но корреляция есть). В 2013, 2014 зависимость была нулевой.
  • USDRUB зависит от нефти на 80%. В 2013 было 16% -т.е. почти не было корреляции. Как будто сейчас другой экономики кроме нефти нет.
  • Сбер больше, чем другие фишки контр коррелирует с USDRUB. 
  • В целом, голубые фишки хотят вместе (сорри, за банальность).
  • РТС — производное от USDRUB на 89%. Смысла торговать фРТС нет.
  • Торговать Газпром, Лукойл, Роснефть - почти тоже самое, что индекс ММВБ.
  • ВТБ в 2014-2015 мало коррелировал с ММВБ, в 2016 корреляция увеличилась.
  • ED и Золото ходят сами по себе, ни от кого не завися. Хотя слабая корреляция (30%) между ними есть. Очевидно, если доллар падает, то Евро и Золото по отношению к нему растут.
  • Есть акции, например, Транснефть, которые ходят в контртренде к ММВБ. Когда всем плохо — им хорошо и наоборот.


Пример 2. Расчет корреляции по 80 тикерам за 2016 (янв-фев)

R позволяет сделать такую вот красоту. В таблице 79 тикеров. 
К сожалению, добиться лучшего качества картинки не получилось. Так, что эта картинка просто для демонстрации возможностей R. 
R. Считаем корреляцию.
Выводы из таблицы:

  • На глаз 70% рынка ходят синхронно — большая синяя область в центре.
  • Тор10 акций имеют наибольшую корреляцию друг с друг с другом. 
  • R позволяет разбить акции на кластеры по корреляции — квадраты по диагонали. На основе акций из разных кластеров можно сформировать     низкокоррелированный портфель (если кому нужно), который не будет быстро падать вместе с ММВБ, но и не будет быстро расти как ММВБ. 
  • Есть акции (СеверСталь, Транснефть, Полиметалл, Селидар) — бенефициары роста доллара. Входят в один кластер с долларом. Включение их в портфель — защита от девальвации. 


На этом конец, т.к. у меня цель показать возможности R, а не проводить анализ рынка.

★127
38 комментариев
Вот это я понимаю, по теме! Отлично!
avatar
На каком таймфрейне посчитана корреляция?
Alex, в данных примерах использован дневной таймфрейм и дневная доходность. А так, можно любую корреляцию посчитать. Хоть на уровне тиков.
avatar
vito2000, суперреспект
avatar
Отлично! Побольше бы такого на SL. 
Возможно с помощью R анализировать что-то экселеподобное? CSV например. 
Есть какой-то толковый FAQ по R(не нужно по-русски)? (и да, я знаю про гугол)
Спасибо!
avatar
dip, 
Возможно с помощью R анализировать что-то экселеподобное? CSV например. 
Без проблем. Грузится в R и потом анализируется как угодно. 
Есть какой-то толковый FAQ по R(не нужно по-русски)? (и да, я знаю про гугол)
Море информации. 
https://mran.revolutionanalytics.com/documents/getting-started/#begin
http://www.cookbook-r.com/
http://profitraders.com/Rlang/R.html
http://tryr.codeschool.com/
avatar
А как сделать это? как написать код?
avatar
Очень круто, спасибо!
avatar
Кластеризация по диагонали не очень понятно. :(
avatar
Супер!
avatar
цель одна у всех- заработать денег…
avatar
Ну да, крутяк. Не то что я, всё «на глаз».)
avatar
Подскажите не слишком искушенному в администрировании R человеку, как действовать, если при попытках установить пакет rusquant появляется следующее:

> install.packages(«rusquant», repos=«R-Forge.R-project.org»)
Installing package into ‘C:/Users/Sergey/Documents/R/win-library/3.2’
(as ‘lib’ is unspecified)
Warning in install.packages :
package ‘rusquant’ is not available (for R version 3.2.3)
> install.packages(«rusquant», repos=«R-Forge.R-project.org», type=«source»)
Installing package into ‘C:/Users/Sergey/Documents/R/win-library/3.2’
(as ‘lib’ is unspecified)
Warning in install.packages :
package ‘rusquant’ is not available (for R version 3.2.3)
>

avatar
Нужно его скачать и установить из архива
avatar
robokot, или установить последнюю версию R. Сорри за минус: пальцы — сардельки.
avatar
r0man, R последняя 3.2.3, разве нет? https://cran.r-project.org/ Мне только локальная установка помогла.
avatar
robokot, все правильно. Тогда странно, что install.packages ругается, пакет собран также по 3.2.3.
avatar
Большое спасибо за анализ, очень много полезной информации. 
avatar
Всегда удивляли люди которые делают такое в Excel… Когда существует R. Любит наш народ усложнять себе жизнь. Плюсую, делал такое тоже )
avatar
evgen000, 

кластеры можно и в экселе, spss, R — кому что привычнее.
avatar
люто плюсую за Р, люблю его
avatar
крутая статья, за такое бабки платят дай краба пожму.
avatar
Сейчас все начнут это использовать и финам заблокирует эту возможность.
avatar
SciFi, могут и прикрыть, все возможно. Есть запасной вариант - mfd.ru. Например:
getSymbols('Аэрофлот',src='mfd',period='day',from='2016-01-01')
Только в отличие от Финама у них названия тикеров на русском. 
avatar
vito2000, мне интересны тесты на автокорреляцию, гомоскедастичность. Такое на R можно делать с помощью этой библиотеки? 
avatar
SciFi, да. Для этого есть библиотека MissMech. Описание с примерами тут.
Вообще, на официальном сайте проекта R https://cran.r-project.org/ 8038 библиотек на все случаи жизни: 
avatar
vito2000, спасибо

avatar
Б.лин… Че, за R садиться???
avatar
facevalue, почитал, да похоже придется освоить. 
Опа, это что за зверь такой????? Я в екселе + VBA все делаю (((
Макеев Евгений, 
Через специальную библиотеку все функции R доступны в VBA и наоборот. Т.е. Excel и R как бы дополняют друг друга.
avatar
Вот тетя популярно объясняет про R

www.youtube.com/watch?v=4bd34XDdijY

загрузка среды

www.r-project.org/
 Большая статья про К (русский язык)

www.ibm.com/developerworks/ru/library/bd-learnr/
Автор, а можно «Пример 2. Расчет корреляции по 80 тикерам за 2016» — в плакатном размере?

На стенку повешу для медитации)
avatar
Что-то с сервером Финама перестало коннектиться
avatar
уважаемый vito2000, могли бы вы перевыложить файл с примером кода?
avatar

теги блога vito2000

....все тэги



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