To find the maximum drawdown in a return series, we need to first calculate the cumulative returns and the maximum cumulative return to that point. Any time the cumulative returns dips below the maximum cumulative returns, it's a drawdown. Drawdowns are measured as a percentage of that maximum cumulative return, in effect, measured from peak equity.
maxDrawdown(R, weights = NULL, geometric = TRUE, invert = TRUE, ...)
R | an xts, vector, matrix, data frame, timeSeries or zoo object of asset returns |
---|---|
weights | portfolio weighting vector, default NULL, see Details |
geometric | utilize geometric chaining (TRUE) or simple/arithmetic chaining (FALSE) to aggregate returns, default TRUE |
invert | TRUE/FALSE whether to invert the drawdown measure. see Details. |
… | any other passthru parameters |
The option to invert
the measure should appease both academics and
practitioners. The default option invert=TRUE
will provide the
drawdown as a positive number. This should be useful for optimization
(which usually seeks to minimize a value), and for tables (where having
negative signs in front of every number may be considered clutter).
Practitioners will argue that drawdowns denote losses, and should be
internally consistent with the quantile (a negative number), for which
invert=FALSE
will provide the value they expect. Individually,
different preferences may apply for clarity and compactness. As such, we
provide the option, but make no value judgment on which approach is
preferable.
Bacon, C. Practical Portfolio Performance Measurement and Attribution. Wiley. 2004. p. 88
findDrawdowns
sortDrawdowns
table.Drawdowns
table.DownsideRisk
chart.Drawdown
data(edhec) t(round(maxDrawdown(edhec[,"Funds of Funds"]),4))#> [,1] #> [1,] 0.2059data(managers) t(round(maxDrawdown(managers),4))#> Worst Drawdown #> HAM1 0.1518 #> HAM2 0.2399 #> HAM3 0.2894 #> HAM4 0.2874 #> HAM5 0.3405 #> HAM6 0.0788 #> EDHEC LS EQ 0.1075 #> SP500 TR 0.4473 #> US 10Y TR 0.1006 #> US 3m TR 0.0000