R

Quantmod:ROC(Cl(SPY)) 和 ClCl(SPY) 有什麼區別

  • May 1, 2011

我覺得我在這裡遺漏了一些基本的東西,但我無法擺脫這兩個系列應該等價的感覺。

/編輯:還有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

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