程式
我們是否需要滯後值進行回測?
我正在使用來自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 值包括當天的收盤價。但是在收盤時間之前,顯然是不知道的(因為是未來),你只知道昨天的收盤價。您不能使用今天的收盤價(或使用它計算的任何其他指標)來做出當天的任何交易決策或預測。