私の動物園シリーズで performanceAnalytics を使用することができず、独自のスクリプトを作成することにしました。
最長のドローダウンを計算する場合は、入力として cummax(equity)-equity を取得する必要があります。また、これらの期間の最大ドローダウン値も示します。
修正版は以下。
私のスクリプトを確認してください。期待どおりに動作しません。一部の maxDD はゼロです。他の人にも役立つことを願っています。人々がこのようなものを探しているフォーラムで、多くのメッセージを見てきました。
私はリッチーの提案でそれを修正しました:
findDD <- function(DD, n=5){
rr <- rle(sign(coredata(DD)))
lens <- rr$length
lens[!rr$value] <- 0
ll <- head(order(lens, decreasing=TRUE),n)
sumas <- cumsum(c(1,rr$length)) # I need to access the original lenghts
maxDD <- sapply(ll,FUN = function(x) max(window(DD,start=index(DD)[sumas[x]],end=index(DD)[sumas[x+1]-1])))
data.frame(start=index(DD)[sumas[ll]],end=index(DD)[sumas[ll+1]-1], length=(index(DD)[sumas[ll+1]-1]-index(DD)[sumas[ll]])+1, maxDD)
}
また、index(DD)[] の代わりに index(DD[]) を書いていたため、順序付けされた回答が得られなかった問題を修正しました。
今はうまくいっているようですが、よくわかりません。
Joshua へ: 最初は、私のデータは cron インデックスの Zoo でしたが、今は posixct インデックスの xts に変換しました。
"2010-01-11 18:00:00" 9338.37028375963
"2010-01-11 18:15:00" 8086.45780960387
"2010-01-11 18:30:00" 7762.75622449016
"2010-01-11 18:45:00" 8358.3609798313
"2010-01-11 19:00:00" 8598.69695502083
"2010-01-11 19:15:00" 8568.56256494502
"2010-01-11 19:30:00" 8488.4281748692
...
performanceAnalytics ではまだ機能しませんが、グラフ化して自分で計算を行うことはできます。Drawdown(myData) は、すべてのデータ値が NaN の xts シリーズを返します。私は findDrawdown コードを見てきましたが、絶対的なドローダウンではなく相対的なドローダウンを測定するため、私のものとは異なります。
とにかく、私のスクリプトが誰かの役に立つことを願っています。