程式

我們是否需要滯後值進行回測?

  • December 16, 2016

我正在使用來自eickonomics的 R 移動平均交叉回測腳本。但我有一個關於這部分的問題。

#Calculate the moving averages and lag them one day to prevent lookback bias
PreviousSMA_50 <- lag(SMA(Cl(data[['SPY']]),50))  
PreviousSMA_200 <- lag(SMA(Cl(data[['SPY']]),200))
. 
.
data$weight[] = ifelse(as.integer(PreviousSMA_50>PreviousSMA_200)==1,1,0)  #If price of SPY is above the SMA then buy

為什麼作者需要滯後 SMA 值?為什麼他不能簡單地使用無滯後值?

PreviousSMA_50 <- SMA(Cl(data[['SPY']]),50) 
PreviousSMA_200 <- SMA(Cl(data[['SPY']]),200)
. 
.
data$weight[] = ifelse(as.integer(PreviousSMA_50>PreviousSMA_200)==1,1,0)

為什麼我們要使用以前的 SMA 值而不是目前的 SMA 值?它是如何導致前瞻偏差的?

如果我們需要其他指標,我們是否也必須落後於這些值?

rsi<-RSI(Cl(data[['SPY']]),50) 
roc<-ROC(Cl(data[['SPY']]),50) 

因為某一天的 SMA 值包括當天的收盤價。但是在收盤時間之前,顯然是不知道的(因為是未來),你只知道昨天的收盤價。您不能使用今天的收盤價(或使用它計算的任何其他指標)來做出當天的任何交易決策或預測。

引用自:https://quant.stackexchange.com/questions/29962