2013-07-21 24 views
5

Làm việc với dữ liệu 30 phút, trong đó tôi đã đặt mẫu trực tuyến. Đó là giá trị đồng đô la của sự chênh lệch giữa ES và 2 hợp đồng của NQ (ES-2 * NQ). Mẫu nhỏ nhưng phải đủ dài để sử dụng trực tiếp trong bản trình diễn nếu bạn muốn. đang R để lấy nó và sử dụng nó như là tôi đang cố gắng để:Làm thế nào để thực hiện & vẽ lại hồi quy tuyến tính đơn giản và cuộn trên đối tượng dữ liệu tài chính xts trong R?

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')) 

đầu (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 

gì tôi chủ yếu sau là một cửa sổ hồi quy lăn (hoặc linear regression curve, như nền tảng giao dịch của tôi kiểm soát nó) - lưu nó, sau đó vẽ nó. Và, tôi đã hình dung rằng tôi có thể vẽ một hồi quy đơn giản trong một khoảng thời gian nhất định. Sau khi hồi quy cửa sổ, tôi sẽ thêm độ lệch chuẩn "dải" vào đó, nhưng tôi nghĩ tôi có thể hình dung ra sau đó bằng cách sử dụng "runSD" của TTR trên hồi quy lăn. Mẫu của những gì tôi sau:

chart with hand drawn lines

Tôi nghĩ rằng đây - Rolling regression xts object in R - đã cho tôi gần nhất với những gì tôi nghĩ tôi sau đó. Nó dường như làm việc với dữ liệu của tôi, nhưng tôi không thể tìm ra cách để biến các hệ số "kết quả" thành một đường thẳng hoặc đường cong trong ô giá trị đô la mà tôi muốn làm việc.

Tham chiếu bất kỳ gói nào (như TTR) sẽ là tuyệt vời; hạnh phúc để tải bất cứ điều gì mà làm cho điều này đơn giản hơn hoặc dễ dàng.

+0

Tôi không thể tìm ra cách tính "dải lệch chuẩn". Bạn có thể cung cấp một công thức? –

+0

@JoshuaUlrich cách tôi hiểu nó là đường cong hồi quy tuyến tính ± số độ lệch chuẩn gấp lần giá. vì vậy, sử dụng mã mẫu của bạn dưới đây, có vẻ như 'rma + 2 * runSD (demo.xts, n = 20)' hoạt động để thêm "băng tần trên", ví dụ. Ngoài ra, câu trả lời khác của vincent dường như đi lên với một kết quả tương tự như mong đợi với "lwr" và "upr" mà các chức năng dự đoán kết quả đầu ra. –

Trả lời

8

Bạn có thể sử dụng predict để tính điểm trên đường hồi quy và tail để trích xuất điểm gần đây nhất.

# 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

hoạt động rất tốt. tôi đã không đi qua các chức năng dự đoán, và có lẽ sẽ không bao giờ nghĩ để khám phá nó. rằng nó cũng bao gồm độ lệch chuẩn là rất lớn. cảm ơn bạn! –

5

Tôi vừa mới bổ sung thêm một chức năng rollSFM (cán mô hình đơn tố) để TTR. Dưới đây là một ví dụ về chạy một hồi quy lăn khoảng thời gian 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

Ý tưởng cơ bản là để thoái giá của bạn về thời gian. .index trả về biểu thị số của chỉ số POSIXct của demo.xts (tức là số giây kể từ thời đại), do đó đối số thứ hai là thời gian. rma chứa giá trị được lắp đặt cho hồi quy tuyến tính tại mỗi thời điểm (đối tượng reg cũng chứa R-bình phương).

+0

điều này cũng trả lời câu hỏi của tôi, nhưng tôi không được phép đánh dấu cả hai. tôi phải thừa nhận tôi không biết mô hình yếu tố duy nhất là gì, vì vậy nó hoàn toàn không nằm trên radar của tôi. hoạt động tuyệt vời! btw, các gói của bạn rất hữu ích. tôi thậm chí sẽ không cố gắng để cố gắng backtesting trong R nếu họ không tồn tại. cảm ơn bạn. –

Các vấn đề liên quan