Skip to main content

max_drawdown

Function max_drawdown 

Source
pub fn max_drawdown(equity: &[Decimal]) -> Result<Decimal, MetricsError>
Expand description

Calculate maximum drawdown as a percentage.

Drawdown is the peak-to-trough decline during a specific period. Max drawdown is the largest such decline.

Formula: min((trough - peak) / peak * 100) for all peaks

§Arguments

  • equity - Equity curve (NAV or portfolio value over time)

§Returns

Maximum drawdown as a negative percentage (e.g., -15.5 for 15.5% drawdown). Returns 0 if no drawdown occurred.

§Example

use quant_metrics::max_drawdown;
use rust_decimal_macros::dec;

let equity = vec![dec!(100), dec!(110), dec!(90), dec!(105)];
// Peak was 110, trough was 90 -> -18.18%
let dd = max_drawdown(&equity).unwrap();
assert!(dd < dec!(0));