function avgdrawdown
avgdrawdown(
x: array,
k?: number,
dim?: 0 | 1,
): number

Computes the Average Drawdown.

Computes the average drawdown of an asset/portfolio. If k is greater than 0, it calculates the average of the k largest drawdowns.

Formula:

  • If k = 0: Average Drawdown = Mean of all continuous drawdowns
  • If k > 0: Average of the k largest drawdowns

Examples

Average drawdown for a single asset

import { assertEquals } from "jsr:@std/assert";

const x = [0.003, 0.026, 0.015, -0.009, 0.014, 0.024, 0.015, 0.066, -0.014, 0.039];
assertEquals(avgdrawdown(x), 0.007299999999999999);

Average of largest drawdown only

import { assertEquals } from "jsr:@std/assert";

const x = [0.003, 0.026, 0.015, -0.009, 0.014, 0.024, 0.015, 0.066, -0.014, 0.039];

assertEquals(avgdrawdown(x, 1), 0.014);

Average drawdown for multiple assets (matrix)

import { assertEquals } from "jsr:@std/assert";

const x1 = [0.003, 0.026, 0.015, -0.009, 0.014];
const x2 = [0.024, 0.015, 0.066, -0.014, 0.039];
assertEquals(avgdrawdown([x1, x2]), [0.0036, 0.0056]);

Parameters

Asset/portfolio returns

optional
k: number

Number of largest drawdowns to consider (0 for all)

optional
dim: 0 | 1

Dimension to operate on (0: row-wise, 1: column-wise)

Return Type

number

The computed average drawdown

Throws

If the input is invalid

avgdrawdown(
x: matrix,
k?: number,
dim?: 0 | 1,
): array

Computes the Average Drawdown.

Computes the average drawdown of an asset/portfolio. If k is greater than 0, it calculates the average of the k largest drawdowns.

Formula:

  • If k = 0: Average Drawdown = Mean of all continuous drawdowns
  • If k > 0: Average of the k largest drawdowns

Examples

Average drawdown for a single asset

import { assertEquals } from "jsr:@std/assert";

const x = [0.003, 0.026, 0.015, -0.009, 0.014, 0.024, 0.015, 0.066, -0.014, 0.039];
assertEquals(avgdrawdown(x), 0.007299999999999999);

Average of largest drawdown only

import { assertEquals } from "jsr:@std/assert";

const x = [0.003, 0.026, 0.015, -0.009, 0.014, 0.024, 0.015, 0.066, -0.014, 0.039];

assertEquals(avgdrawdown(x, 1), 0.014);

Average drawdown for multiple assets (matrix)

import { assertEquals } from "jsr:@std/assert";

const x1 = [0.003, 0.026, 0.015, -0.009, 0.014];
const x2 = [0.024, 0.015, 0.066, -0.014, 0.039];
assertEquals(avgdrawdown([x1, x2]), [0.0036, 0.0056]);

Parameters

Asset/portfolio returns

optional
k: number

Number of largest drawdowns to consider (0 for all)

optional
dim: 0 | 1

Dimension to operate on (0: row-wise, 1: column-wise)

Return Type

The computed average drawdown

Throws

If the input is invalid