Maximum Drawdown
PortfolioOptimisers.MaximumDrawdown — Type
struct MaximumDrawdown{__T_settings} <: RiskMeasureRepresents 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()) -> MaximumDrawdownKeywords 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: trueRelated
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).
PortfolioOptimisers.RelativeMaximumDrawdown — Type
struct RelativeMaximumDrawdown{__T_settings} <: HierarchicalRiskMeasureRepresents 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()) -> RelativeMaximumDrawdownKeywords 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.0Related
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).
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).