3

在 R 中,我看到有两个包具有 maxdrawdown 函数。

一个是fTrading,另一个是PerformaceAnalytics

每个都进行不同的计算。

  1. fTrading 似乎假设价值是资产的价格,因此回撤是在估值中。
  2. 这同样适用于 PerformanceAnalytics,只是它以百分比形式给出答案。

是否有一个带有 maxdrawdown 函数的包,它期望 P/L 数据在一个系列中并在此基础上给出回撤?

例如,如果您有以下数据

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

您试图找到PnLmaxDrawDowncumsum(与帐户值相同)。

> 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 回答