3

R には、maxdrawdown 関数を持つパッケージが 2 つあります。

1 つはfTradingで、もう 1 つはPerformanceAnalyticsです。

それらのそれぞれは、異なる計算を行います。

  1. fTrading は、値が資産の価格であると仮定しているように見えるため、ドローダウンは評価に含まれます。
  2. 同じことが PerformanceAnalytics にも当てはまりますが、答えがパーセンテージで示されます。

一連の P/L データを期待し、それに基づいてドローダウンを提供する maxdrawdown 関数を備えたパッケージはありますか?

たとえば、次のデータがある場合

c(12,10,5,-4,-2,1,5,6)

最大ドローダウンは次のようになります。

-4 + -2=-6.
4

2 に答える 2

6

独自の関数を書くのは簡単です:

drawdown <- function(pnl) {
   cum.pnl  <- c(0, cumsum(pnl))
   drawdown <- cum.pnl - cummax(cum.pnl)
   return(tail(drawdown, -1))
}

maxdrawdown <- function(pnl)min(drawdown(pnl))

(もちろん、ドローダウンは正の量でなければならないという慣習がある場合は、記号を変更minして に置き換えることができます)max

pnl <- c(12,10,5,-4,-2,1,5,6)
drawdown(pnl)
# [1]  0  0  0 -4 -6 -5  0  0
maxdrawdown(pnl)
# [1] -6
于 2012-12-06T00:01:52.357 に答える
3

maxDrawDownPnLのを見つけようとしていますcumsum(これはアカウントの値と同じです)。

> library(fTrading)
> maxDrawDown(cumsum(c(0, c(12,10,5,-4,-2,1,5,6))))
$maxdrawdown
[1] 6

$from
[1] 3

$to
[1] 5
于 2012-12-05T22:58:28.673 に答える