Eugene777
Eugene777 личный блог
07 апреля 2014, 10:00

Статистическая обработка данных в R с использованием Quandl

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

Для примера я взял данные по производству, экспорту и импорту нефти от министерства энергетики США и данные цен фьючерсов на американскую нефть. 

Задача стояла в поиске зависимости этих параметров. 

Приведу несколько графиков, расчет коффициентов корреляции и код. 

Статистическая обработка данных в R с использованием Quandl

 

Статистическая обработка данных в R с использованием Quandl
 
Коэффициенты корреляции : 

Зависимость изменения цена на нефть в следующем месяце от измеенния цены текущего месяца : 0.177335
Зависимость изменения цена на нефть в следующем месяце от изменения объемов производства : -0.01026717
Зависимость изменения объемов производства в текущем месяце от изменения цены на нефть : 0.03413794
Зависимость изменения объемов экспорта от объемов производства : 0.7850823
Зависимость изменения объемов производства в следующем месяце от изменения обхемов производства текущего месяца : -0.5559376

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


Немного кода: 
library(«Quandl»)
Quandl.auth(«YourQuandlKeyHere»)
oil.production <- Quandl(«DOE/MCRFPUS1», start=«2007-01-01», type=«xts»)
oil.import <- Quandl(«DOE/MCRIMUS1», start=«2007-01-01», type=«xts»)
oil.export <- Quandl(«DOE/MCREXUS1», start=«2007-01-01», type=«xts»)
oil.future <- Quandl(«OFDP/FUTURE_CL1», start=«2007-01-01», type=«xts»)
oil[which(is.na(oil[,'Open'])),'Open'] <- oil[which(is.na(oil[,'Open']))-1,'Open']
oil2<-oil[which(!is.na(oil[,'Production']))]
change <- function(x) (tail(x, 1) — head(x, 1)) / head(x, 1) * 100
oil.price_change_next<-rollapply(as.zoo(oil2$Open), FUN=change, width=2, align=«left», fill = NA)
oil.price_change_current<-rollapply(as.zoo(oil2$Open), FUN=change, width=2, align=«right», fill = NA)
oil.export_change<-rollapply(as.zoo(oil2$Export), FUN=change, width=2, align=«right», fill = NA)
oil.production_change_next<-rollapply(as.zoo(oil2$Production), FUN=change, width=2, align=«left», fill = NA)
oil.production_change<-rollapply(as.zoo(oil2$Production), FUN=change, width=2, align=«right», fill = NA)

plot(oil.production_change, col=«red», ylab="% Chnage")
lines(oil.export_change, col=«blue»)
legend( «bottomright», c(«Production change», «Export change»), text.col=c( «red», «blue») )

plot( cbind( as.zoo(oil.production), as.zoo(oil.import), as.zoo(oil.export) ), col=c(«red», «blue», «green»), main=«US Dept of Energy Monthly Data», ylab=«Kilobarrels» )
legend(«bottomleft», c( «Production», «Import», «Export»), text.col=c(«red», «blue», «green») )
cor(as.numeric(oil.price_change_next), as.numeric(oil.price_change_current), use=«complete.obs»)
cor(as.numeric(oil.production_change), as.numeric(oil.price_change_next), use=«complete.obs»)
cor(as.numeric(oil.production_change), as.numeric(oil.price_change_current), use=«complete.obs»)
cor(as.numeric(oil.export_change), as.numeric(oil.production_change), use=«complete.obs»)
cor(as.numeric(oil.production_change_next), as.numeric(oil.production_change), use=«complete.obs»)
 
2 Комментария
  • Simix
    07 апреля 2014, 11:23
    Как показали годы работы над статистическими закономерностями, все сладкие теоретические заработки на статистике разбиваются одним хорошим небиржевым форс-мажором или негауссовым выносом. Например 3 марта биржа не транслировала один из параметров, на котором у меня была подвешена стратегия.
    Попав на 2 таких выноса и потеряв 50% капитала, трудно продолжать торговать на супер-хитрой статистике ожидая что в перспективе 50лет вы по статистике непременно заработаете.
    Сейчас использую самые простые закономерности, которые практически видны глазом и исполняются руками.

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

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