Table of Contents

Class Statistics

Namespace
Balsam
Assembly
Balsam.Backtester.dll

A static utility class exposing various statistical functions.

public static class Statistics
Inheritance
Statistics
Inherited Members

Methods

CoefficientOfVariation(params double[])

Returns the coefficient of variation (ratio of standard deviation to the mean).

public static double CoefficientOfVariation(params double[] values)

Parameters

values double[]

Returns

double

Correlation(IEnumerable<double>, IEnumerable<double>)

Returns the Pearson correlation coefficient.

public static CorrelationCoefficient Correlation(IEnumerable<double> left, IEnumerable<double> right)

Parameters

left IEnumerable<double>
right IEnumerable<double>

Returns

CorrelationCoefficient

Covariance(IEnumerable<double>, IEnumerable<double>)

Returns the covariance.

public static double Covariance(IEnumerable<double> left, IEnumerable<double> right)

Parameters

left IEnumerable<double>
right IEnumerable<double>

Returns

double

Cumulative(double)

Returns the probability of the specified value assuming N(0,1) distribution. See R's pnorm function.

public static double Cumulative(double x)

Parameters

x double

Returns

double

Cumulative(double, double, double, bool, bool)

Returns the probability for the specified normal distribution. See R's pnorm function.

public static double Cumulative(double x, double mu, double sigma, bool lower_tail, bool log_p)

Parameters

x double
mu double
sigma double
lower_tail bool
log_p bool

Returns

double

Density(double)

Returns the density of the specified value assuming a N(0,1) distribution. See R's dnorm function.

public static double Density(double x)

Parameters

x double

Returns

double

Density(double, double, double, bool)

Returns the density of a normal distribution using the specified parameters. See R's dnorm function.

public static double Density(double x, double mu, double sigma, bool give_log)

Parameters

x double
mu double
sigma double
give_log bool

Returns

double

DownsideDeviation(IEnumerable<double>, double)

Returns the downside deviation (semi-deviation).

public static double DownsideDeviation(IEnumerable<double> values, double minimumAcceptableReturn)

Parameters

values IEnumerable<double>
minimumAcceptableReturn double

Returns

double

GetCombinations<T>(IEnumerable<T>, int)

Returns an enumerable of combinations without repetition.

public static IEnumerable<IEnumerable<T>> GetCombinations<T>(IEnumerable<T> items, int count)

Parameters

items IEnumerable<T>
count int

Returns

IEnumerable<IEnumerable<T>>

Type Parameters

T

Max(params double[])

Returns the maximum from a list of values.

public static double Max(params double[] values)

Parameters

values double[]

Returns

double

Max(params int[])

Returns the maximum from a list of values.

public static int Max(params int[] values)

Parameters

values int[]

Returns

int

Mean(params double[])

Returns the mean.

public static double Mean(params double[] values)

Parameters

values double[]

Returns

double

Median(IEnumerable<double>)

Returns the median.

public static double Median(this IEnumerable<double> values)

Parameters

values IEnumerable<double>

Returns

double

Median(IEnumerable<int>)

Returns the median.

public static int Median(this IEnumerable<int> values)

Parameters

values IEnumerable<int>

Returns

int

Median(IEnumerable<long>)

Returns the median.

public static long Median(this IEnumerable<long> values)

Parameters

values IEnumerable<long>

Returns

long

Min(params double[])

Returns the minimum from a list of values.

public static double Min(params double[] values)

Parameters

values double[]

Returns

double

Min(params int[])

Returns the minimum from a list of values.

public static int Min(params int[] values)

Parameters

values int[]

Returns

int

PercentRank(IEnumerable<double>, double)

Returns the percent rank (equivalent to Excel's PERCENTRANK.INC function). If value is not found within the range it will return NaN.

public static double PercentRank(this IEnumerable<double> values, double value)

Parameters

values IEnumerable<double>
value double

Returns

double

Percentile(IEnumerable<double>, double)

Returns the specified percentile, interpolating between values if the percentile is not a multiple of 1/(n-1).

public static double Percentile(this IEnumerable<double> values, double percentile)

Parameters

values IEnumerable<double>
percentile double

Returns

double

Percentile(IEnumerable<int>, double)

Returns the specified percentile, interpolating between values if the percentile is not a multiple of 1/(n-1).

public static double Percentile(IEnumerable<int> values, double percentile)

Parameters

values IEnumerable<int>
percentile double

Returns

double

Percentile(IEnumerable<long>, double)

Returns the specified percentile, interpolating between values if the percentile is not a multiple of 1/(n-1).

public static double Percentile(IEnumerable<long> values, double percentile)

Parameters

values IEnumerable<long>
percentile double

Returns

double

Quantile(double)

Returns the number of standard deviations for the specified quantile assuming N(0,1) distribution. See R's qnorm function. Also known as normal inverse.

public static double Quantile(double p)

Parameters

p double

Returns

double

Quantile(double, double, double, bool, bool)

Returns the number of standard deviations for the specified normal distribution. See R's qnorm function.

public static double Quantile(double p, double mu, double sigma, bool lower_tail, bool log_p)

Parameters

p double
mu double
sigma double
lower_tail bool
log_p bool

Returns

double

RandomNormal()

Returns a random N(0,1) variable.

public static double RandomNormal()

Returns

double

RandomNormal(double, double)

Retuns a random variable using the specified parameters.

public static double RandomNormal(double mu, double sigma)

Parameters

mu double
sigma double

Returns

double

RandomNormal(double, double, Random)

Returns a random variable using the specified parameters.

public static double RandomNormal(double mu, double sigma, Random random)

Parameters

mu double
sigma double
random Random

Returns

double

RandomNormal(Random)

Returns random N(0,1) variable using specified random number generator.

public static double RandomNormal(Random random)

Parameters

random Random

Returns

double

Range(IEnumerable<double>)

Returns the difference between the maximum and minimum found in the specified values.

public static double Range(this IEnumerable<double> values)

Parameters

values IEnumerable<double>

Returns

double

Regress(double[], double[])

Calculates simple linear regression of the specified arrays.

public static RegressionResult Regress(double[] dependent, double[] independent)

Parameters

dependent double[]
independent double[]

Returns

RegressionResult

Sample<T>(IEnumerable<T>, int, bool)

Samples from the specified enumerable optionally replacing values.

public static IEnumerable<T> Sample<T>(this IEnumerable<T> values, int size, bool replace = false)

Parameters

values IEnumerable<T>

An enumerable of values from which to sample.

size int

The number of samples to return.

replace bool

Returns

IEnumerable<T>

Type Parameters

T

Sample<T>(IEnumerable<T>, int, int)

Samples from the specified enumerable with replacement, using the specified sample grouping value to preserve possible serial correlation.

public static IEnumerable<T> Sample<T>(IEnumerable<T> values, int size, int sampleGrouping)

Parameters

values IEnumerable<T>
size int
sampleGrouping int

Returns

IEnumerable<T>

Type Parameters

T

Sequence(double, double, double, int)

Returns a sequence of doubles using the specified start, stop, and step parameters. Rounding is controlled by the optimal precision parameter.

public static IEnumerable<double> Sequence(double start, double stop, double step, int precision = -1)

Parameters

start double
stop double
step double
precision int

Returns

IEnumerable<double>

Sequence(int, int, int)

Returns a sequence of integers using the specified start, stop and step values.

public static IEnumerable<int> Sequence(int start, int stop, int step)

Parameters

start int
stop int
step int

Returns

IEnumerable<int>

Skew(IEnumerable<double>)

Returns the sample skew.

public static double Skew(IEnumerable<double> values)

Parameters

values IEnumerable<double>

Returns

double

StandardDeviation(IEnumerable<double>)

Returns the sample standard deviation.

public static double StandardDeviation(this IEnumerable<double> values)

Parameters

values IEnumerable<double>

Returns

double

TTest(IEnumerable<double>, IEnumerable<double>)

Returns two-sample t-test.

public static double TTest(IEnumerable<double> variableOfInterest, IEnumerable<double> baseCase)

Parameters

variableOfInterest IEnumerable<double>
baseCase IEnumerable<double>

Returns

double

Variance(IEnumerable<double>)

Returns the sample variance.

public static double Variance(IEnumerable<double> values)

Parameters

values IEnumerable<double>

Returns

double

Winsorize(double, double, double)

Returns the value constrained within the specified min and max values.

public static double Winsorize(double value, double min, double max)

Parameters

value double
min double
max double

Returns

double

ZScore(IEnumerable<double>)

Returns the z-score of the last value in the specified enumerable.

public static double ZScore(this IEnumerable<double> values)

Parameters

values IEnumerable<double>

Returns

double