Quantmod:ROC(Cl(SPY)) 和 ClCl(SPY) 有什麼區別
我覺得我在這裡遺漏了一些基本的東西,但我無法擺脫這兩個系列應該等價的感覺。
/編輯:還有dailyReturn(Cl(SPY))。我已經在各種部落格上看到了所有 3 種用於計算股票收益的方法,我想知道哪種方法是“正確的”。他們都給出了略有不同的結果……
/edit2:還有 Delt(Cl(SPY)),好像等價於 ClCl(SPY)
TTR::ROC
預設情況下計算對數返回。quantmod::ClCl
使用quantmod::Delt
,預設情況下計算算術回報。
ROC(Cl(SPY), type="discrete")
應該匹配ClCl(SPY)
。哪個“正確”取決於您的目的。
為了擴展 Joshua 已經說過的內容,這裡有一個類似函式的截斷參數列表,以及它們所屬的包。
quantmod::Delt(x1,type = c("arithmetic", "log")) quantmod::periodReturn(x, type='arithmetic') # log would be "log" TTR::ROC(x, type=c("continuous", "discrete")) PerformanceAnalytics::CalculateReturns(prices, method=c("compound","simple"))
您的選擇是簡單返回,即
(today's_close - yesterday's_close) / yesterday's_close
,或對數返回,即log(today's_close) - log(yesterday's_close)
,或等價的log(today's_close / yesterday's_close)
。如果您決定使用簡單回報,則必須將回報相乘以獲得期末的總回報。通過日誌返回,您可以添加它們。當您的向量由於明顯的原因可能包含零時,這是首選。如果你有一個簡單的 1 或 -1 信號,那麼你只會在開始時有一個零,或者一個 NA,這取決於你選擇的函式。但是,一旦你的系統變得平坦,或者發出 0 信號,那麼簡單的回報就會遇到一些麻煩。簡單返回在上述函式中稱為算術、離散或簡單。對數返回也稱為對數、連續或複合。
該
Delt
功能是一種人工製品,並且已使用該dailyReturn
功能進行了更新。這是每個函式在交易系統的前兩行生成的快照。另請注意,有些預設設置為簡單返回,而另一些預設設置為記錄返回。每個功能都允許您更改預設值。SLV.Close Delt dailyReturn ROC CalculateReturns 2010-01-04 17.23 NA 0.000000000 NA NA 2010-01-05 17.51 0.016250725 0.016250725 0.016120096 0.016120096
請記住,一旦您將返回值轉換為對數返回值,您需要將其取消轉換以再次獲得簡單返回值,這通過簡單地應用
exp(log_return)
.我最近關於這個主題的部落格文章可能會讓你感興趣。http://www.milktrader.net/2011/04/chop-slice-and-dice-your-returns-in-r.html