vito2000
vito2000 личный блог
04 марта 2016, 03:23

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, а не проводить анализ рынка.

38 Комментариев
  • XAT
    04 марта 2016, 03:48
    Вот это я понимаю, по теме! Отлично!
  • Александр Муравьев
    04 марта 2016, 04:12
    На каком таймфрейне посчитана корреляция?
      • Vlаdimi®
        04 марта 2016, 08:12
        vito2000, суперреспект
  • dip
    04 марта 2016, 04:15
    Отлично! Побольше бы такого на SL. 
    Возможно с помощью R анализировать что-то экселеподобное? CSV например. 
    Есть какой-то толковый FAQ по R(не нужно по-русски)? (и да, я знаю про гугол)
    Спасибо!
  • INTELLEKTTRADE
    04 марта 2016, 05:12
    А как сделать это? как написать код?
  • shprots
    04 марта 2016, 05:23
    Очень круто, спасибо!
  • shprots
    04 марта 2016, 05:25
    Кластеризация по диагонали не очень понятно. :(
  • Nick N
    04 марта 2016, 05:57
    Супер!
  • Pobeditel
    04 марта 2016, 07:00
    цель одна у всех- заработать денег…
  • waldhaber
    04 марта 2016, 07:12
    Ну да, крутяк. Не то что я, всё «на глаз».)
  • Sergey Pavlov
    04 марта 2016, 07:20
    Подскажите не слишком искушенному в администрировании 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)
    >

  • robokot
    04 марта 2016, 08:41
    Нужно его скачать и установить из архива
    • r0man
      04 марта 2016, 09:02
      robokot, или установить последнюю версию R. Сорри за минус: пальцы — сардельки.
      • robokot
        04 марта 2016, 09:12
        r0man, R последняя 3.2.3, разве нет? https://cran.r-project.org/ Мне только локальная установка помогла.
        • r0man
          04 марта 2016, 09:25
          robokot, все правильно. Тогда странно, что install.packages ругается, пакет собран также по 3.2.3.
  • Не тинькофф
    04 марта 2016, 08:48
    Большое спасибо за анализ, очень много полезной информации. 
  • evgen000
    04 марта 2016, 09:25
    Всегда удивляли люди которые делают такое в Excel… Когда существует R. Любит наш народ усложнять себе жизнь. Плюсую, делал такое тоже )
    • Гденьги ☭
      10 марта 2016, 11:13
      evgen000, 

      кластеры можно и в экселе, spss, R — кому что привычнее.
  • MTrader
    04 марта 2016, 11:06
    люто плюсую за Р, люблю его
  • Savin
    04 марта 2016, 11:09
    крутая статья, за такое бабки платят дай краба пожму.
  • SciFi
    04 марта 2016, 11:26
    Сейчас все начнут это использовать и финам заблокирует эту возможность.
      • SciFi
        04 марта 2016, 16:15
        vito2000, мне интересны тесты на автокорреляцию, гомоскедастичность. Такое на R можно делать с помощью этой библиотеки? 
          • SciFi
            11 марта 2016, 18:44
            vito2000, спасибо

  • facevalue
    04 марта 2016, 12:40
    Б.лин… Че, за R садиться???
  • Евгений Макеев
    04 марта 2016, 16:08
    Опа, это что за зверь такой????? Я в екселе + VBA все делаю (((
  • Евгений Макеев
    04 марта 2016, 16:16
    Вот тетя популярно объясняет про R

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

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

    www.r-project.org/
  • Евгений Макеев
    04 марта 2016, 16:20
     Большая статья про К (русский язык)

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

    На стенку повешу для медитации)
  • shprots
    30 января 2017, 13:04
    Что-то с сервером Финама перестало коннектиться
  • Влад(и)Мир
    09 октября 2018, 08:37
    уважаемый vito2000, могли бы вы перевыложить файл с примером кода?

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн