fintech-algorithms
Using a coding agent? Give it the skill: npx skills add IslamBaraka90/Fintech-Algorithms-Library What it does →

Drawdown and Maximum Drawdown

Install and import#

bash
npm install fintech-algorithms
ts
import { drawdownAndMaximumDrawdown } from "fintech-algorithms/foundations/financial-risk-and-performance-statistics/drawdown-and-maximum-drawdown";

Signature#

drawdownAndMaximumDrawdown(input)

Compounds a return series into a wealth path and tracks how far that path sits below its own running peak.

Parameters#

NameTypeNotes
inputD00InputReads returns and benchmark, two aligned non-empty lists of finite periodic returns, and frequency, the number of periods per year. The wealth path is built from returns alone.

Returns#

D00Output

drawdowns gives one non-positive figure per period, each the fractional shortfall against the running peak. maximumDrawdown is the most negative of them and endingWealth is the final value of a path that starts at one.

Errors#

  • When returns or benchmark is absent, empty, or holds a non-finite number — throws RangeError
  • When returns and benchmark differ in length, or hold fewer than two observations — throws RangeError
  • When frequency is zero or negative — throws RangeError

Complexity: time O(n), space O(n).

Worked example#

verified This is the worked example published in the article, replayed by the test suite on every run. The output cannot drift.

Input#

input
{
  "returns": [0.01, -0.02, 0.015, -0.01, 0.03],
  "benchmark": [0.008, -0.01, 0.012, -0.006, 0.02],
  "frequency": 252,
  "target": 0,
  "confidence": 0.8,
  "riskFree": 0.0001,
  "weights": [0.6, 0.4],
  "covarianceMatrix": [
    [0.04, 0.01],
    [0.01, 0.09]
  ]
}

Call#

drawdownAndMaximumDrawdown(input)

Returns#

object with 2 fields: drawdowns, maximumDrawdown

{
  "drawdowns": [0, -0.020000000000000018, -0.0053000000000001934, -0.015247000000000233, 0],
  "maximumDrawdown": -0.020000000000000018
}

Diagrams#

Drawdown and Maximum Drawdown — article hero
Drawdown and Maximum Drawdown — calculation ledger
Drawdown and Maximum Drawdown — concept anatomy
Drawdown and Maximum Drawdown — failure boundary
Drawdown and Maximum Drawdown — method map
Drawdown and Maximum Drawdown — scenario contrast

How it works#

This page states the contract — how to call it correctly. The article explains the concept: why it works, and where it breaks.

Read the article →

References#

The rest of the Financial Risk and Performance Statistics family#