Maximum Drawdown

PortfolioOptimisers.MaximumDrawdownType
struct MaximumDrawdown{__T_settings} <: RiskMeasure

Represents the Maximum Drawdown risk measure.

MaximumDrawdown computes the largest peak-to-trough decline in the cumulative portfolio returns. It captures the worst-case loss from a previous high.

Mathematical definition

Define the absolute drawdown series:

\[\begin{align} c_t &= \sum_{s=1}^{t} x_s\,, \\ d_t &= c_t - \max_{0 \leq s \leq t} c_s \leq 0\,. \end{align}\]

Where:

  • $\boldsymbol{x}$: Portfolio returns vector $T \times 1$.
  • $c_t$: Cumulative simple portfolio return at period $t$.
  • $d_t \leq 0$: Absolute drawdown at period $t$.

The Maximum Drawdown is the most negative value in the drawdown series:

\[\begin{align} \mathrm{MDD}(\boldsymbol{x}) &= -\min_{1 \leq t \leq T} d_t\,. \end{align}\]

Where:

  • $\mathrm{MDD}(\boldsymbol{x})$: Maximum drawdown.
  • $T$: Number of observations.
  • $d_t \leq 0$: Absolute drawdown at period $t$.

Fields

  • settings: Risk measure settings.

Constructors

MaximumDrawdown(;    settings::RiskMeasureSettings = RiskMeasureSettings()) -> MaximumDrawdown

Keywords correspond to the struct's fields.

Functor

(r::MaximumDrawdown)(x::VecNum)

Computes the Maximum Drawdown of a portfolio returns vector x.

Arguments

  • x::VecNum: Portfolio returns vector.

Examples

julia> MaximumDrawdown()MaximumDrawdown  settings ┼ RiskMeasureSettings           │   scale ┼ Float64: 1.0           │      ub ┼ nothing           │     rke ┴ Bool: true

Related

References

  • [102] A. Chekhlov, S. Uryasev and M. Zabarankin. Drawdown measure in portfolio optimization. International Journal of Theoretical and Applied Finance 8, 13–58 (2005).
source
PortfolioOptimisers.RelativeMaximumDrawdownType
struct RelativeMaximumDrawdown{__T_settings} <: HierarchicalRiskMeasure

Represents the Relative Maximum Drawdown risk measure for hierarchical optimisation.

RelativeMaximumDrawdown computes the maximum of the relative (compounded) drawdown series.

Mathematical definition

Define the relative drawdown series:

\[\begin{align} C_t &= \prod_{s=1}^{t} (1 + x_s)\,, \\ rd_t &= \frac{C_t}{\max_{0 \leq s \leq t} C_s} - 1 \leq 0\,. \end{align}\]

Where:

  • $\boldsymbol{x}$: Portfolio returns vector $T \times 1$.
  • $C_t$: Compound wealth process at period $t$.
  • $rd_t \leq 0$: Relative drawdown at period $t$.

The Relative Maximum Drawdown is:

\[\begin{align} \mathrm{RMDD}(\boldsymbol{x}) &= -\min_{1 \leq t \leq T} rd_t\,. \end{align}\]

Where:

  • $\mathrm{RMDD}(\boldsymbol{x})$: Relative maximum drawdown.
  • $T$: Number of observations.
  • $rd_t \leq 0$: Relative drawdown at period $t$.

Fields

  • settings: Risk measure settings.

Constructors

RelativeMaximumDrawdown(;    settings::HierarchicalRiskMeasureSettings = HierarchicalRiskMeasureSettings()) -> RelativeMaximumDrawdown

Keywords correspond to the struct's fields.

Functor

(r::RelativeMaximumDrawdown)(x::VecNum)

Computes the Relative Maximum Drawdown of a portfolio returns vector x.

Arguments

  • x::VecNum: Portfolio returns vector.

Examples

julia> RelativeMaximumDrawdown()RelativeMaximumDrawdown  settings ┼ HierarchicalRiskMeasureSettings           │   scale ┴ Float64: 1.0

Related

References

  • [102] A. Chekhlov, S. Uryasev and M. Zabarankin. Drawdown measure in portfolio optimization. International Journal of Theoretical and Applied Finance 8, 13–58 (2005).
source

References

[102]
A. Chekhlov, S. Uryasev and M. Zabarankin. Drawdown measure in portfolio optimization. International Journal of Theoretical and Applied Finance 8, 13–58 (2005).