Main Content

Maximum drawdown is the maximum decline of a series, measured as return, from a peak to a nadir over a period of time. Although additional metrics exist that are used in the hedge fund and commodity trading communities (see Pederson and Rudholm-Alfvin [20] in Bibliography), the original definition and subsequent implementation of these metrics is not yet standardized.

It is possible to compute analytically the expected maximum drawdown for a Brownian motion with drift (see Magdon-Ismail, Atiya, Pratap, and Abu-Mostafa [16] Bibliography). These results are used to estimate the expected maximum drawdown for a series that approximately follows a geometric Brownian motion.

Use `maxdrawdown`

and `emaxdrawdown`

to calculate the maximum
and expected maximum drawdowns.

This example demonstrates how to compute the maximum drawdown
(`MaxDD`

) using our example data with a fund, a market,
and a cash series:

```
load FundMarketCash
MaxDD = maxdrawdown(TestData)
```

which gives the following results:

MaxDD = 0.1658 0.3381 0

The maximum drop in the given time period was of 16.58% for the fund series, and 33.81% for the market. There was no decline in the cash series, as expected, because the cash account never loses value.

`maxdrawdown`

can also
return the indices (`MaxDDIndex`

) of the maximum
drawdown intervals for each series in an optional output argument:

[MaxDD, MaxDDIndex] = maxdrawdown(TestData)

which gives the following results:

MaxDD = 0.1658 0.3381 0 MaxDDIndex = 2 2 NaN 18 18 NaN

The first two series experience their maximum drawdowns from
the second to the 18th month in the data. The indices for the third
series are `NaN`

s because it never has a drawdown.

The 16.58% value loss from month 2 to month 18 for the fund series is verified using the reported indices:

Start = MaxDDIndex(1,:); End = MaxDDIndex(2,:); (TestData(Start(1),1) - TestData(End(1),1))/TestData(Start(1),1)

ans = 0.1658

Although the maximum drawdown is measured in terms of returns, `maxdrawdown`

can measure the drawdown
in terms of absolute drop in value, or in terms of log-returns. To
contrast these alternatives more clearly, we work with the fund series
assuming, an initial investment of 50 dollars:

Fund50 = 50*TestData(:,1); plot(Fund50); title('\bfFive-Year Fund Performance, Initial Investment 50 usd'); xlabel('Months'); ylabel('Value of Investment');

First, we compute the standard maximum drawdown, which coincides with the results above because returns are independent of the initial amounts invested:

MaxDD50Ret = maxdrawdown(Fund50)

MaxDD50Ret = 0.1658

Next, we compute the maximum drop in value, using the `arithmetic`

argument:

`[MaxDD50Arith, Ind50Arith] = maxdrawdown(Fund50,'arithmetic')`

MaxDD50Arith = 8.4285 Ind50Arith = 2 18

The value of this investment was $50.84 in month 2, but by month 18 the value was down to $42.41, a drop of $8.43. This is the largest loss in dollar value from a previous high in the given time period. In this case, the maximum drawdown period, 2nd to 18th month, is the same independently of whether drawdown is measured as return or as dollar value loss.

Last, we compute the maximum decline based on log-returns using
the `geometric`

argument. In this example, the log-returns
result in a maximum drop of 18.13%, again from the second to the 18th
month, not far from the 16.58% obtained using standard returns.

`[MaxDD50LogRet, Ind50LogRet] = maxdrawdown(Fund50,'geometric')`

MaxDD50LogRet = 0.1813 Ind50LogRet = 2 18

Note, the last measure is equivalent to finding the arithmetic maximum drawdown for the log of the series:

`MaxDD50LogRet2 = maxdrawdown(log(Fund50),'arithmetic')`

MaxDD50LogRet2 = 0.1813

This example demonstrates using the log-return moments of the
fund to compute the expected maximum drawdown (`EMaxDD`

)
and then compare it with the realized maximum drawdown (`MaxDD`

).

load FundMarketCash logReturns = log(TestData(2:end,:) ./ TestData(1:end - 1,:)); Mu = mean(logReturns(:,1)); Sigma = std(logReturns(:,1),1); T = size(logReturns,1); MaxDD = maxdrawdown(TestData(:,1),'geometric') EMaxDD = emaxdrawdown(Mu, Sigma, T)

which gives the following results:

MaxDD = 0.1813 EMaxDD = 0.1545

The drawdown observed in this time period is above the expected maximum drawdown. There is no contradiction here. The expected maximum drawdown is not an upper bound on the maximum losses from a peak, but an estimate of their average, based on a geometric Brownian motion assumption.

`elpm`

| `emaxdrawdown`

| `inforatio`

| `lpm`

| `maxdrawdown`

| `portalpha`

| `ret2tick`

| `sharpe`

| `tick2ret`