2013-07-21 64 views
5

使用30分鐘的數據,其中我已經在線提供了一個示例。這是ES和2個NQ合約(ES-2 * NQ)之間價差的名義價值。示例很小,但應該足夠長,以便在演示中直接使用。 R代碼裏面抓住它,使用它,因爲我想:如何在R中繪製財務數據xts對象的簡單滾動線性迴歸?

demo.xts <- as.xts(read.zoo('http://dl.dropboxusercontent.com/u/31394273/demo.csv', sep=',', tz = '', header = TRUE, format = '%Y-%m-%d %H:%M:%S')) 

頭(demo.xts):

     [,1] 
2013-05-27 00:00:00 -37295.0 
2013-05-27 00:30:00 -37292.5 
2013-05-27 01:00:00 -37300.0 
2013-05-27 01:30:00 -37280.0 
2013-05-27 02:00:00 -37190.0 
2013-05-27 02:30:00 -37245.0 

什麼我後,主要是滾動窗口迴歸(或linear regression curve,如我的交易平臺稱它) - 保存它,然後繪製它。而且,我想到了,我應該能夠在指定的時間段內繪製一個簡單的迴歸圖。在窗口迴歸之後,我會爲此添加標準偏差「帶」,但我想我可以在滾動迴歸中使用TTR的「runSD」來計算這個偏差。的我是什麼樣後:

chart with hand drawn lines

我覺得這一點 - Rolling regression xts object in R - 讓我最接近什麼,我想我以後。它似乎與我的數據一起工作,但我無法弄清楚如何將結果「係數」轉換爲我想要使用的名義美元值圖中的一條線或曲線。

引用任何包(如TTR)會很棒;很高興加載任何可以讓這個過程變得簡單或容易的事情

+0

我不知道如何計算「標準偏差帶」。你能提供一個公式嗎? –

+0

@JoshuaUlrich我理解它的方式是線性迴歸曲線±標準偏差數乘以價格。因此,例如,使用下面的示例代碼,似乎'rma + 2 * runSD(demo.xts,n = 20)'可用於添加「高頻帶」。此外,文森特的另一個答案似乎與預期的預測函數輸出的「lwr」和「upr」類似。 –

回答

8

您可以使用predict來計算迴歸線 和tail上的點以提取最近的點。

# Sample data 
library(quantmod) 
getSymbols("^GSPC", from="2009-01-01") 

# Rolling regression (unweighted), with prediction intervals 
x <- rollapplyr( 
    as.zoo(Ad(GSPC)), 
    width=300, by.column = FALSE, 
    FUN = function(x) { 
    r <- lm(x ~ index(x)) 
    tail(predict(r, interval="prediction"),1) 
    } 
) 

# Plots 
plot(index(GSPC), Ad(GSPC), type="l", lwd=3, las=1) 
lines(index(x), x$fit, col="purple", lwd=3) 
lines(index(x), x$lwr, col="purple", lwd=3, lty=3) 
lines(index(x), x$upr, col="purple", lwd=3, lty=3) 
abline(lm(Ad(GSPC) ~ index(GSPC)), col="light blue", lwd=3) 

Moving regression

+0

這工作得很好。我沒有遇到預測功能,並且可能不會想到要探索它。它還包括標準差很大。謝謝! –

5

我最近增加了一個rollSFM(滾動單因素模型)函數來TTR。下面是運行一個24週期的滾動迴歸的例子:

reg <- rollSFM(demo.xts, .index(demo.xts), 24) 
rma <- reg$alpha + reg$beta*.index(demo.xts) 
chart_Series(demo.xts, TA="add_TA(rma,on=1)") 

enter image description here

的基本思路是迴歸的時候你的價格。 .index返回demo.xts(即曆元以來的秒數)的POSIXct索引的數字表示,所以第二個參數是時間。 rma包含每個時間點的線性迴歸的擬合值(reg對象還包含R平方)。

+0

這也回答了我的問題,但我不允許勾選兩者。我不得不承認我不知道單一因素模型是什麼,所以它完全不在我的視線之內。很棒!順便說一下,你的軟件包非常有用。如果他們不存在,我甚至不會試圖嘗試在R中進行回測。謝謝。 –