function m2sortino
m2sortino(
x: array,
y: array,
frisk?: number,
mar?: number,
t?: number,
dim?: 0 | 1,
): number

M-squared for Sortino.

M2 calculated for Downside risk instead of Total Risk. It represents the portfolio return adjusted for downside risk relative to the benchmark.

Examples

Single asset vs benchmark

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

var x = [0.003,0.026,0.015,-0.009,0.014,0.024,0.015,0.066,-0.014,0.039];
var y = [-0.005,0.081,0.04,-0.037,-0.061,0.058,-0.049,-0.021,0.062,0.058];
assertEquals(m2sortino(x,y,0,0,12), 0.5611427561167748);

Multiple assets vs different benchmark

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

var x = [0.003,0.026,0.015,-0.009,0.014,0.024,0.015,0.066,-0.014,0.039];
var y = [-0.005,0.081,0.04,-0.037,-0.061,0.058,-0.049,-0.021,0.062,0.058];

var z = [0.04,-0.022,0.043,0.028,-0.078,-0.011,0.033,-0.049,0.09,0.087];
assertEquals(m2sortino(x,z,0,0,12), 0.696982403465082);
assertEquals(m2sortino(y,z,0,0,12), 0.1603188447030512);

Parameters

asset/portfolio values

benchmark values

optional
frisk: number

free-risk rate (def: 0)

optional
mar: number

minimum acceptable return (def: 0)

optional
t: number

frequency of data. 1: yearly, 4: quarterly, 12: monthly, 52: weekly, 252: daily (def: 252)

optional
dim: 0 | 1

dimension 0: row, 1: column (def: 0)

Return Type

number

M-squared for Sortino

m2sortino(
x: matrix,
y: array,
frisk?: number,
mar?: number,
t?: number,
dim?: 0 | 1,
): array | matrix

M-squared for Sortino.

M2 calculated for Downside risk instead of Total Risk. It represents the portfolio return adjusted for downside risk relative to the benchmark.

Examples

Single asset vs benchmark

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

var x = [0.003,0.026,0.015,-0.009,0.014,0.024,0.015,0.066,-0.014,0.039];
var y = [-0.005,0.081,0.04,-0.037,-0.061,0.058,-0.049,-0.021,0.062,0.058];
assertEquals(m2sortino(x,y,0,0,12), 0.5611427561167748);

Multiple assets vs different benchmark

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

var x = [0.003,0.026,0.015,-0.009,0.014,0.024,0.015,0.066,-0.014,0.039];
var y = [-0.005,0.081,0.04,-0.037,-0.061,0.058,-0.049,-0.021,0.062,0.058];

var z = [0.04,-0.022,0.043,0.028,-0.078,-0.011,0.033,-0.049,0.09,0.087];
assertEquals(m2sortino(x,z,0,0,12), 0.696982403465082);
assertEquals(m2sortino(y,z,0,0,12), 0.1603188447030512);

Parameters

asset/portfolio values

benchmark values

optional
frisk: number

free-risk rate (def: 0)

optional
mar: number

minimum acceptable return (def: 0)

optional
t: number

frequency of data. 1: yearly, 4: quarterly, 12: monthly, 52: weekly, 252: daily (def: 252)

optional
dim: 0 | 1

dimension 0: row, 1: column (def: 0)

Return Type

M-squared for Sortino