function cdrawdown
cdrawdown(
x: array,
dim?: 0 | 1,
): array

Computes the Continuous Drawdown.

Computes continuous drawdowns for an asset/portfolio. A drawdown occurs when returns are negative in a sequence.

Examples

Continuous 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(cdrawdown(x), [0, 0, 0, 0.009, 0.009, 0.009, 0.009, 0.009, 0.014, 0.014]);

Continuous 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(cdrawdown([x1, x2]), [[0, 0, 0, 0.009, 0.009], [0, 0, 0, 0.014, 0.014]]);

Continuous drawdown with more negative returns

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

const y = [-0.01, -0.02, 0.05, -0.03];
assertEquals(cdrawdown(y), [0.01, 0.03, 0.03, 0.03]);

Parameters

Asset/portfolio returns

optional
dim: 0 | 1

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

Return Type

The computed continuous drawdowns

Throws

If the input is invalid

cdrawdown(
x: matrix,
dim?: 0 | 1,
): array | matrix

Computes the Continuous Drawdown.

Computes continuous drawdowns for an asset/portfolio. A drawdown occurs when returns are negative in a sequence.

Examples

Continuous 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(cdrawdown(x), [0, 0, 0, 0.009, 0.009, 0.009, 0.009, 0.009, 0.014, 0.014]);

Continuous 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(cdrawdown([x1, x2]), [[0, 0, 0, 0.009, 0.009], [0, 0, 0, 0.014, 0.014]]);

Continuous drawdown with more negative returns

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

const y = [-0.01, -0.02, 0.05, -0.03];
assertEquals(cdrawdown(y), [0.01, 0.03, 0.03, 0.03]);

Parameters

Asset/portfolio returns

optional
dim: 0 | 1

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

Return Type

The computed continuous drawdowns

Throws

If the input is invalid