Изучая возможности языка R, наткнулся недавно на интересный сайт Quandl.com. Изначально увидел там возможность выгрузки данных по
акциям, но приглядевшись, нашел там такое количество различных данных, что голова реально идет кругом. Никогда, особенно, не интересовался фундаментальными данными, однако, решил посмотреть, как можно с ними работать.
Для примера я взял данные по производству, экспорту и импорту нефти от министерства энергетики США и данные цен фьючерсов на американскую нефть.
Задача стояла в поиске зависимости этих параметров.
Приведу несколько графиков, расчет коффициентов корреляции и код.
Коэффициенты корреляции :
Зависимость изменения цена на нефть в следующем месяце от измеенния цены текущего месяца : 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 таких выноса и потеряв 50% капитала, трудно продолжать торговать на супер-хитрой статистике ожидая что в перспективе 50лет вы по статистике непременно заработаете.
Сейчас использую самые простые закономерности, которые практически видны глазом и исполняются руками.