Table of Contents

Class Indicators

Namespace
Balsam
Assembly
Balsam.Backtester.dll

A static class providing common technical and statistical functions.

public static class Indicators
Inheritance
Indicators
Inherited Members

Methods

Abs(TimeSeries)

Absolute value

public static TimeSeries Abs(this TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

AccumulationDistribution(BarSeries)

Accumulation distribution.

public static TimeSeries AccumulationDistribution(BarSeries series)

Parameters

series BarSeries

Returns

TimeSeries

Adx(BarSeries, int)

Wilder's Average Directional Movement Index

public static TimeSeries Adx(BarSeries series, int length)

Parameters

series BarSeries
length int

Returns

TimeSeries

Adxr(BarSeries, int, bool)

Wilder's Average Directional Movement Index Rating. Note if comparing with TradeStation, their calculation uses a lookback of length - 1 which is consistent with the example in "New Concepts in Technical Trading" but not with the text.

public static TimeSeries Adxr(BarSeries series, int length, bool useTradeStationVersion = false)

Parameters

series BarSeries
length int
useTradeStationVersion bool

Returns

TimeSeries

AggregateReturns(TimeSeries, Periodicity)

Aggregates a return series to the specified periodicity using geometric linking.

public static TimeSeries AggregateReturns(TimeSeries series, Periodicity periodicity)

Parameters

series TimeSeries
periodicity Periodicity

Returns

TimeSeries

AroonOscillator(BarSeries, int)

Chande's Aroon Oscillator.

public static TimeSeries AroonOscillator(BarSeries series, int length = 25)

Parameters

series BarSeries
length int

Returns

TimeSeries

AroonOscillator(TimeSeries, int)

Chande's Aroon Oscillator.

public static TimeSeries AroonOscillator(TimeSeries series, int length = 25)

Parameters

series TimeSeries
length int

Returns

TimeSeries

Atr(BarSeries, int)

Returns the Average True Range of the specified series using Wilder smoothing.

public static TimeSeries Atr(this BarSeries series, int length)

Parameters

series BarSeries
length int

Returns

TimeSeries

Avg(SyncOption, params TimeSeries[])

Returns the cross-sectional average for the specified series. Avg can handle timeseries of different lengths and MaxBarsBack; however, it may not be appropriate for averaging timeseries with very different date ranges or values as there will be jumps in the data.

public static TimeSeries Avg(SyncOption syncOption, params TimeSeries[] series)

Parameters

syncOption SyncOption
series TimeSeries[]

Returns

TimeSeries

Avg(params TimeSeries[])

Returns the cross-sectional average of the specified series. Series are synced using SyncOption.CarryoverPreviousValue.

public static TimeSeries Avg(params TimeSeries[] series)

Parameters

series TimeSeries[]

Returns

TimeSeries

Avg(IEnumerable<TimeSeries>)

Returns the cross-sectional average of the specified series. Series are synced using SyncOption.CarryoverPreviousValue.

public static TimeSeries Avg(IEnumerable<TimeSeries> series)

Parameters

series IEnumerable<TimeSeries>

Returns

TimeSeries

BandPassFilter(BarSeries, int, double)

Returns a bandpass filter using midpoint of specified BarSeries.

public static TimeSeries BandPassFilter(BarSeries series, int period, double delta = 0.1)

Parameters

series BarSeries
period int
delta double

Returns

TimeSeries

BandPassFilter(TimeSeries, int, double)

Returns a bandpass filter using the specified series. See http://www.mesasoftware.com/papers/EmpiricalModeDecomposition.pdf

public static TimeSeries BandPassFilter(TimeSeries series, int period, double delta = 0.1)

Parameters

series TimeSeries

A timeseries

period int

target cycle

delta double

multiplied by period to control the size of the window

Returns

TimeSeries

BarsSinceChange(BooleanSeries)

The number of bars that have elapsed since a booleanseries changed versus the prior bar.

public static IntegerSeries BarsSinceChange(BooleanSeries series)

Parameters

series BooleanSeries

Returns

IntegerSeries

BarsSinceChange(TimeSeries)

The number of bars that have elapsed since a timeseries changed versus the prior bar.

public static IntegerSeries BarsSinceChange(TimeSeries series)

Parameters

series TimeSeries

Returns

IntegerSeries

BarsSinceFalse(BooleanSeries)

Returns the number of bars since the specified boolean series was last false.

public static IntegerSeries BarsSinceFalse(BooleanSeries series)

Parameters

series BooleanSeries

Returns

IntegerSeries

BarsSinceHigh(TimeSeries)

Returns the number of bars since a value greater than or equal to the current value was observed.

public static IntegerSeries BarsSinceHigh(TimeSeries series)

Parameters

series TimeSeries

Returns

IntegerSeries

Exceptions

ArgumentNullException

BarsSinceHigh(TimeSeries, int, bool)

The number of bars that have elapsed since a series made a high of the specified length.

public static IntegerSeries BarsSinceHigh(TimeSeries series, int length, bool strict = false)

Parameters

series TimeSeries
length int

The number of bars to look back. Use a length of zero for the all-time high.

strict bool

When true high must exceed prior high (not just equal).

Returns

IntegerSeries

BarsSinceLow(TimeSeries)

Returns the number of bars since a value less than or equal to the current value was observed.

public static IntegerSeries BarsSinceLow(TimeSeries series)

Parameters

series TimeSeries

Returns

IntegerSeries

Exceptions

ArgumentNullException

BarsSinceLow(TimeSeries, int, bool)

The number of bars since the series made a low of the specified length.

public static IntegerSeries BarsSinceLow(TimeSeries series, int length, bool strict = false)

Parameters

series TimeSeries
length int

The number of bars to look back. Use a length of zero for the all-time low.

strict bool

When true low must exceed prior low (not just equal).

Returns

IntegerSeries

BarsSinceTrue(BooleanSeries)

Returns the number of bars since the specified boolean series was last true.

public static IntegerSeries BarsSinceTrue(BooleanSeries series)

Parameters

series BooleanSeries

Returns

IntegerSeries

BearishEngulfing(BarSeries, int)

Bearish Engulfing pattern.

public static BooleanSeries BearishEngulfing(BarSeries series, int trendConfirmationLength = 10)

Parameters

series BarSeries
trendConfirmationLength int

Returns

BooleanSeries

BearishHarami(BarSeries, int)

Bearish Harami pattern.

public static BooleanSeries BearishHarami(BarSeries series, int length = 10)

Parameters

series BarSeries
length int

Returns

BooleanSeries

Beta(TimeSeries, TimeSeries)

Calculate the beta of one TimeSeries to another using all available data.

public static double Beta(TimeSeries dependent, TimeSeries independent)

Parameters

dependent TimeSeries

The dependent or "y" variable. Typically a return stream from a stock or portfolio.

independent TimeSeries

The independent or "x" variable. Typically the market.

Returns

double

Beta(TimeSeries, TimeSeries, int)

Calculate the beta of one TimeSeries to another.

public static TimeSeries Beta(TimeSeries dependent, TimeSeries independent, int length)

Parameters

dependent TimeSeries

The dependent or "y" variable. Typically a return stream from a stock or portfolio.

independent TimeSeries

The independent or "x" variable. Typically the market.

length int

The length of the calculation. Use 0 for all data.

Returns

TimeSeries

BollingerBand(TimeSeries, int, double)

Bollinger Band

public static TimeSeries BollingerBand(TimeSeries series, int length, double standardDeviations)

Parameters

series TimeSeries
length int
standardDeviations double

Number of standard deviations. Use negative number for lower band.

Returns

TimeSeries

BollingerPercentB(TimeSeries, int, double)

Bollinger's PercentB

public static TimeSeries BollingerPercentB(TimeSeries series, int length, double standardDeviations)

Parameters

series TimeSeries
length int
standardDeviations double

Returns

TimeSeries

BullHook(BarSeries)

Bull hook

public static BooleanSeries BullHook(BarSeries series)

Parameters

series BarSeries

Returns

BooleanSeries

Cci(BarSeries, int)

Lambert's Commodity Channel Index.

public static TimeSeries Cci(BarSeries series, int length = 20)

Parameters

series BarSeries
length int

Returns

TimeSeries

ChaikinAccumulationDistribution(BarSeries)

Chaikin accumulation distribution.

public static TimeSeries ChaikinAccumulationDistribution(BarSeries series)

Parameters

series BarSeries

Returns

TimeSeries

ChaikinMoneyFlow(BarSeries, int)

Chaikin Money Flow

public static TimeSeries ChaikinMoneyFlow(BarSeries series, int length = 21)

Parameters

series BarSeries
length int

Returns

TimeSeries

ChaikinOscillator(BarSeries, int, int)

Chaikin Oscillator.

public static TimeSeries ChaikinOscillator(BarSeries series, int shortLength = 3, int longLength = 10)

Parameters

series BarSeries
shortLength int
longLength int

Returns

TimeSeries

Cmo(TimeSeries, int)

Chande Momentum Oscillator (The New Technical Trader pg 94)

public static TimeSeries Cmo(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

Compare(TimeSeries, ComparisonOperator)

Compare value of timeseries versus the prior bar returning 1 if true and 0 otherwise.

public static TimeSeries Compare(TimeSeries series, ComparisonOperator cop)

Parameters

series TimeSeries
cop ComparisonOperator

Returns

TimeSeries

Compare(TimeSeries, TimeSeries, ComparisonOperator)

Compare value of two timeseries based on the current bar.

public static TimeSeries Compare(TimeSeries left, TimeSeries right, ComparisonOperator cop)

Parameters

left TimeSeries
right TimeSeries
cop ComparisonOperator

Returns

TimeSeries

Compare(TimeSeries, TimeSeries, ComparisonOperator, int, double, double)

Compare two timeseries.

public static TimeSeries Compare(TimeSeries left, TimeSeries right, ComparisonOperator cop, int barsBack, double valueIfTrue, double valueIfFalse)

Parameters

left TimeSeries

First timeseries to compare.

right TimeSeries

Second timeseries to compare.

cop ComparisonOperator

The comparison to perform.

barsBack int

The number of bars back (lag) to compare the second timeseries.

valueIfTrue double

The value of the indicator if the comparison is true.

valueIfFalse double

The value of the indicator if the comparison is false.

Returns

TimeSeries

A new timeseries with the same count and Index.

Compare(TimeSeries, double)

Compares a series to a static threshold. Returns +1 if above the threshold, -1 if below the threshold, or 0 if equal.

public static TimeSeries Compare(TimeSeries series, double threshold)

Parameters

series TimeSeries
threshold double

Returns

TimeSeries

Compare(TimeSeries, double, ComparisonOperator)

Compare a timeseries with an arbitrary value returning 1 if true otherwise 0.

public static TimeSeries Compare(TimeSeries series, double value, ComparisonOperator cop)

Parameters

series TimeSeries

The timeseries to compare.

value double

A double (or integer) value.

cop ComparisonOperator

The comparison to perform.

Returns

TimeSeries

A new timeseries with same count and Index as series.

Compare(TimeSeries, double, double)

Compares a series to the specified max and min and returns 1 if value above max, -1 if value below min, or 0 otherwise.

public static TimeSeries Compare(TimeSeries series, double max, double min)

Parameters

series TimeSeries
max double
min double

Returns

TimeSeries

Compare(TimeSeries, double, double, double, double, double)

Compares a series to the specified max and min and returns valueAboveMax if value above max, valueBelowMin if value below min, or valueInMiddle otherwise.

public static TimeSeries Compare(TimeSeries series, double max, double min, double valueAboveMax, double valueBelowMin, double valueInMiddle)

Parameters

series TimeSeries
max double
min double
valueAboveMax double
valueBelowMin double
valueInMiddle double

Returns

TimeSeries

ConfusedMA(TimeSeries, int, int, int)

Returns an IntegerSeries where 1 indicates faster moving averages are above the slower; -1 the opposite and 0 "confused".

public static IntegerSeries ConfusedMA(TimeSeries series, int length1 = 5, int length2 = 10, int length3 = 21)

Parameters

series TimeSeries
length1 int
length2 int
length3 int

Returns

IntegerSeries

ConfusedMA(TimeSeries, params int[])

Returns an IntegerSeries where 1 indicates faster moving averages are above the slower; -1 the opposite and 0 "confused".

public static IntegerSeries ConfusedMA(TimeSeries series, params int[] lengths)

Parameters

series TimeSeries
lengths int[]

Returns

IntegerSeries

ConnorsRsi(TimeSeries, int, int, int)

public static TimeSeries ConnorsRsi(TimeSeries series, int rsiLength = 3, int streakLength = 2, int percentRankLength = 100)

Parameters

series TimeSeries
rsiLength int
streakLength int
percentRankLength int

Returns

TimeSeries

Consecutive(BooleanSeries)

Returns the number of consecutive true observations.

public static TimeSeries Consecutive(BooleanSeries series)

Parameters

series BooleanSeries

Returns

TimeSeries

Exceptions

ArgumentNullException

Consecutive(BooleanSeries, int)

Returns true if the prior length observations are all true.

public static BooleanSeries Consecutive(BooleanSeries series, int length)

Parameters

series BooleanSeries
length int

Returns

BooleanSeries

Consecutive(TimeSeries)

Returns the number of consecutive increasing or decreasing observations.

public static TimeSeries Consecutive(TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

Consecutive(TimeSeries, TimeSeries)

Returns the number of consecutive increasing or decreasing observations larger than the specified hurdle.

public static TimeSeries Consecutive(TimeSeries series, TimeSeries hurdle)

Parameters

series TimeSeries
hurdle TimeSeries

Inverse of hurdle will be used for decreasing observations.

Returns

TimeSeries

Consecutive(TimeSeries, TimeSeries, ComparisonOperator)

Returns the number of consecutive bars of series1 relative to series2 using the specified comparison operator.

public static TimeSeries Consecutive(TimeSeries series1, TimeSeries series2, ComparisonOperator op)

Parameters

series1 TimeSeries
series2 TimeSeries
op ComparisonOperator

Returns

TimeSeries

Exceptions

ArgumentNullException
InvalidOperationException

Consecutive(TimeSeries, double, ComparisonOperator)

Returns the number of consecutive observations relative to the specified hurdle.

public static TimeSeries Consecutive(TimeSeries series, double hurdle, ComparisonOperator op)

Parameters

series TimeSeries
hurdle double
op ComparisonOperator

Returns

TimeSeries

Exceptions

ArgumentNullException

Consecutive(IEnumerable<BooleanSeries>, int)

Returns true if all series values over the specified length are true.

public static BooleanSeries Consecutive(IEnumerable<BooleanSeries> series, int length = 1)

Parameters

series IEnumerable<BooleanSeries>
length int

Returns

BooleanSeries

Consolidate(TimeSeries)

Removes consecutive values from a TimeSeries.

public static TimeSeries Consolidate(TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

Consolidate(TimeSeries, CompressionOperator)

Removes duplicate dates by applying the specified compression operator.

public static TimeSeries Consolidate(TimeSeries series, CompressionOperator operation)

Parameters

series TimeSeries
operation CompressionOperator

Returns

TimeSeries

Correlation(BarSeries, int, int)

Returns the autocorrelation of the specified series returns.

public static TimeSeries Correlation(BarSeries series, int length, int lag)

Parameters

series BarSeries
length int
lag int

Returns

TimeSeries

Correlation(TimeSeries, TimeSeries)

Calculates the correlation of one TimeSeries to another using all available data.

public static double Correlation(TimeSeries series1, TimeSeries series2)

Parameters

series1 TimeSeries
series2 TimeSeries

Returns

double

Correlation(TimeSeries, TimeSeries, int)

Returns the correlation of two timeseries over the specified length of bars.

public static TimeSeries Correlation(this TimeSeries series1, TimeSeries series2, int length)

Parameters

series1 TimeSeries
series2 TimeSeries
length int

Returns

TimeSeries

Correlation(TimeSeries, int, int)

Returns the autocorrelation of the specified series.

public static TimeSeries Correlation(TimeSeries series, int length, int lag)

Parameters

series TimeSeries
length int
lag int

Returns

TimeSeries

Correlation(IEnumerable<BarSeries>, int, bool, bool)

Returns the cross-correlation of the one day percentage change in the specified BarSeries enumerable.

public static TimeSeries Correlation(IEnumerable<BarSeries> series, int length, bool alignDates = true, bool absoluteValue = false)

Parameters

series IEnumerable<BarSeries>
length int
alignDates bool

When true only overlapping dates across all series are used.

absoluteValue bool

Returns

TimeSeries

Correlation(IEnumerable<TimeSeries>, bool, bool)

Returns the cross-correlation of the specified series across the full dataset.

public static double Correlation(IEnumerable<TimeSeries> series, bool alignDates = true, bool absoluteValue = false)

Parameters

series IEnumerable<TimeSeries>
alignDates bool
absoluteValue bool

Returns

double

Exceptions

ArgumentNullException
ArgumentException

Correlation(IEnumerable<TimeSeries>, int, bool, bool)

Returns the cross-correlation of the specified enumerable of TimeSeries. The Tag property will contain an IntegerSeries with the number of correlation observations comprising each date.

public static TimeSeries Correlation(IEnumerable<TimeSeries> series, int length, bool alignDates = true, bool absoluteValue = false)

Parameters

series IEnumerable<TimeSeries>
length int
alignDates bool
absoluteValue bool

Returns

TimeSeries

Count(params TimeSeries[])

Returns the cross-sectional count of active TimeSeries.

public static TimeSeries Count(params TimeSeries[] series)

Parameters

series TimeSeries[]

Returns

TimeSeries

Count(IEnumerable<TimeSeries>)

Returns the cross-sectional count of active TimeSeries.

public static TimeSeries Count(IEnumerable<TimeSeries> series)

Parameters

series IEnumerable<TimeSeries>

Returns

TimeSeries

Cross(TimeSeries, TimeSeries)

Returns true when the series on the left crosses above the one on the right.

public static BooleanSeries Cross(TimeSeries left, TimeSeries right)

Parameters

left TimeSeries
right TimeSeries

Returns

BooleanSeries

CrossAbove(TimeSeries, TimeSeries)

Returns true when the series on the left crosses above the series on the right.

public static BooleanSeries CrossAbove(TimeSeries left, TimeSeries right)

Parameters

left TimeSeries
right TimeSeries

Returns

BooleanSeries

CrossAbove(TimeSeries, double)

Returns true when the specified series crosses above the threshold.

public static BooleanSeries CrossAbove(TimeSeries series, double threshold)

Parameters

series TimeSeries
threshold double

Returns

BooleanSeries

CrossBelow(TimeSeries, TimeSeries)

Returns true when the series on the left crosses below the series on the right.

public static BooleanSeries CrossBelow(TimeSeries left, TimeSeries right)

Parameters

left TimeSeries
right TimeSeries

Returns

BooleanSeries

CrossBelow(TimeSeries, double)

Returns true when the specified series crosses below the threshold.

public static BooleanSeries CrossBelow(TimeSeries series, double threshold)

Parameters

series TimeSeries
threshold double

Returns

BooleanSeries

Cumulative(TimeSeries)

Cumulative sum.

public static TimeSeries Cumulative(this TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

CustomIndex(Periodicity, double, Dictionary<string, double>, params TimeSeries[])

Calculates a custom index using the specified parameters.

public static TimeSeries CustomIndex(Periodicity rebalanceFrequency, double startingValue, Dictionary<string, double> targetWeights, params TimeSeries[] series)

Parameters

rebalanceFrequency Periodicity
startingValue double
targetWeights Dictionary<string, double>
series TimeSeries[]

Returns

TimeSeries

DV2(BarSeries)

Returns the DV2 indicator with a 252 day length.

public static TimeSeries DV2(BarSeries series)

Parameters

series BarSeries

Returns

TimeSeries

DV2(BarSeries, int)

Returns the DV2 indicator with the specified length.

public static TimeSeries DV2(BarSeries series, int length)

Parameters

series BarSeries
length int

Returns

TimeSeries

Detrend(BarSeries, bool)

Detrends a Barseries netting out trend over the entire series. Should not be used for backtesting due to look-ahead.

public static BarSeries Detrend(BarSeries series, bool slope = false)

Parameters

series BarSeries
slope bool

Defaults to linear regression. Set to true to detrend using a simple slope calculation.

Returns

BarSeries

Detrend(TimeSeries, bool)

Detrends a timeseries netting out trend across the entire series. Should not be used for backtesting due to look-ahead.

public static TimeSeries Detrend(TimeSeries series, bool slope = false)

Parameters

series TimeSeries
slope bool

Defaults to linear regression. Set to true to detrend using a simple slope calculation.

Returns

TimeSeries

DiffusionIndex(int, params BarSeries[])

Calculates a diffusion index (% of markets above a SMA) for the specified BarSeries using the close.

public static TimeSeries DiffusionIndex(int length, params BarSeries[] series)

Parameters

length int
series BarSeries[]

Returns

TimeSeries

DiffusionIndex(int, params TimeSeries[])

Calculates a diffusion index (% of markets above a SMA) for the specified series.

public static TimeSeries DiffusionIndex(int length, params TimeSeries[] series)

Parameters

length int
series TimeSeries[]

Returns

TimeSeries

DiffusionIndex(int, IEnumerable<BarSeries>)

Calculates a diffusion index (% of markets above a SMA) for the specified BarSeries using the close.

public static TimeSeries DiffusionIndex(int length, IEnumerable<BarSeries> series)

Parameters

length int
series IEnumerable<BarSeries>

Returns

TimeSeries

DiffusionIndex(int, IEnumerable<TimeSeries>)

Calculates a diffusion index (% of markets above a SMA) for the specified series.

public static TimeSeries DiffusionIndex(int length, IEnumerable<TimeSeries> series)

Parameters

length int
series IEnumerable<TimeSeries>

Returns

TimeSeries

Divergence(TimeSeries, int, double, double, bool, int, int)

Returns +1/0/-1 signal when a divergence has been detected

public static Signal Divergence(TimeSeries series, int number, double buyThreshold = NaN, double sellThreshold = NaN, bool strict = true, int minDistance = 1, int window = 2147483647)

Parameters

series TimeSeries
number int

The number of peaks or valleys

buyThreshold double

Level below which valleys must form

sellThreshold double

Level above which peaks must form

strict bool

All peaks are declining relative to one another

minDistance int

Minimum number of bars between peaks/valleys

window int

Maximum number of bars over which the divergence can form

Returns

Signal

Dmi(BarSeries, int)

Wilder's Directional Movement Index

public static TimeSeries Dmi(BarSeries series, int length)

Parameters

series BarSeries
length int

Returns

TimeSeries

DmiMinus(BarSeries, int)

Wilder's Negative Directional Movement.

public static TimeSeries DmiMinus(BarSeries series, int length)

Parameters

series BarSeries
length int

Returns

TimeSeries

DmiPlus(BarSeries, int)

Wilder's Positive Directional Movement.

public static TimeSeries DmiPlus(BarSeries series, int length)

Parameters

series BarSeries
length int

Returns

TimeSeries

Doji(BarSeries, double)

Returns a BooleanSeries indicating when a doji pattern is preseent in the specified series.

public static BooleanSeries Doji(BarSeries series, double tolerance = 0.05)

Parameters

series BarSeries
tolerance double

The level under which Abs(Close-Open) / (High - Low) must fall for doji to be present.

Returns

BooleanSeries

Drawdown(BarSeries)

Returns the percentage off the all-time closing high using unadjusted prices in the denominator.

public static TimeSeries Drawdown(BarSeries series)

Parameters

series BarSeries

Returns

TimeSeries

Exceptions

ArgumentNullException

Drawdown(TimeSeries)

Percent off highest high.

public static TimeSeries Drawdown(TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

Drawdown(TimeSeries, double[], double, double[], bool)

Takes a return series and applies drawdown control.

public static TimeSeries Drawdown(TimeSeries series, double[] threshold, double buffer, double[] riskReduction, bool multiplicative = false)

Parameters

series TimeSeries

Return series

threshold double[]

Array of levels at which risk is reduced

buffer double

Percent above drawdown threshold at which risk is put back on

riskReduction double[]

Array of values by which portfolio should be delevered. If null, function returns drawdown level rather than leverage factor.

multiplicative bool

Is risk reduction multiplicative rather than additive.

Returns

TimeSeries

DynamicMomentumIndex(TimeSeries, int)

Returns Chande and Kroll's Dynamic Momentum Index (essentially a variable length Rsi).

public static TimeSeries DynamicMomentumIndex(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

EfficiencyRatio(TimeSeries, int)

Perry Kaufman's Efficiency Ratio

public static TimeSeries EfficiencyRatio(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

Ema(TimeSeries, double)

Exponential moving average

public static TimeSeries Ema(TimeSeries series, double factor)

Parameters

series TimeSeries
factor double

Returns

TimeSeries

Ema(TimeSeries, int)

Exponential moving average.

public static TimeSeries Ema(this TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

EmpiricalModeDecomposition(TimeSeries, int, double, double)

Returns a TimeSeriesCollection with the empircal mode distribution based on bandpass filter. See http://www.mesasoftware.com/papers/EmpiricalModeDecomposition.pdf

public static TimeSeriesCollection EmpiricalModeDecomposition(TimeSeries series, int period, double delta, double fraction)

Parameters

series TimeSeries
period int
delta double
fraction double

A multiplier applied to the peak and valleys which are then typically smoothed.

Returns

TimeSeriesCollection

EqualWeightIndex(Periodicity, params BarSeries[])

Calculates an equal-weight index using the closing price from the specified BarSeries.

public static TimeSeries EqualWeightIndex(Periodicity rebalanceFrequency, params BarSeries[] prices)

Parameters

rebalanceFrequency Periodicity
prices BarSeries[]

Returns

TimeSeries

EqualWeightIndex(Periodicity, params TimeSeries[])

Calculates an equally-weighted index using the specified rebalance frequency and TimeSeries.

public static TimeSeries EqualWeightIndex(Periodicity rebalanceFrequency, params TimeSeries[] prices)

Parameters

rebalanceFrequency Periodicity
prices TimeSeries[]

Returns

TimeSeries

EqualWeightIndex(Periodicity, IEnumerable<BarSeries>)

Calculates an equal-weight index using the closing price from the specified BarSeries.

public static TimeSeries EqualWeightIndex(Periodicity rebalanceFrequency, IEnumerable<BarSeries> series)

Parameters

rebalanceFrequency Periodicity
series IEnumerable<BarSeries>

Returns

TimeSeries

EqualWeightIndex(Periodicity, IEnumerable<TimeSeries>)

Calculates an equally-weighted index using the specified rebalance frequency and TimeSeries.

public static TimeSeries EqualWeightIndex(Periodicity rebalanceFrequency, IEnumerable<TimeSeries> prices)

Parameters

rebalanceFrequency Periodicity
prices IEnumerable<TimeSeries>

Returns

TimeSeries

EqualWeightIndex(Periodicity, double, IEnumerable<TimeSeries>)

Calculates an equally-weighted index from the specified price series.

public static TimeSeries EqualWeightIndex(Periodicity rebalanceFrequency, double startingValue, IEnumerable<TimeSeries> series)

Parameters

rebalanceFrequency Periodicity
startingValue double
series IEnumerable<TimeSeries>

Returns

TimeSeries

Exp(TimeSeries)

Returns e raised to the specified values.

public static TimeSeries Exp(TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

ExponentialWma(TimeSeries, int)

Exponential weighted moving average.

public static TimeSeries ExponentialWma(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

Filter(TimeSeries, double, double, bool)

Returns an integer series of +/-1 indicating when specified series has rallied/declined the specified values from prior troughs/peaks. This can be used for trading unlike the ZigZag indicator which uses hindsight.

public static IntegerSeries Filter(TimeSeries series, double buy, double sell, bool percent)

Parameters

series TimeSeries
buy double
sell double
percent bool

Returns

IntegerSeries

GapDown(BarSeries, bool)

Returns true when open < previous close and optionally high < previous low.

public static BooleanSeries GapDown(BarSeries series, bool strict = false)

Parameters

series BarSeries
strict bool

Returns

BooleanSeries

Exceptions

ArgumentNullException

GapUp(BarSeries, bool)

Returns true when open > previous close and optionally low > previous high.

public static BooleanSeries GapUp(BarSeries series, bool strict = false)

Parameters

series BarSeries
strict bool

True to also require low > previous high

Returns

BooleanSeries

Gma(TimeSeries, int)

Geometric Moving Average

public static TimeSeries Gma(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

HangingMan(BarSeries, int)

Hanging man candlestick pattern.

public static BooleanSeries HangingMan(BarSeries series, int highLength = 10)

Parameters

series BarSeries
highLength int

Returns

BooleanSeries

Highest(TimeSeries)

Returns the highest value over the full series.

public static TimeSeries Highest(TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

Highest(TimeSeries, int)

Returns the highest value over the specified length.

public static TimeSeries Highest(this TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

HighestN(TimeSeries, int, int)

Returns true if a value is in the highest n values over the specified length.

public static BooleanSeries HighestN(TimeSeries series, int length, int n)

Parameters

series TimeSeries
length int
n int

Returns

BooleanSeries

Exceptions

ArgumentNullException
ArgumentOutOfRangeException

HistoricalVolatility(BarSeries, int)

Calculates historical volatility using unadjusted prices.

public static TimeSeries HistoricalVolatility(BarSeries series, int length)

Parameters

series BarSeries
length int

Returns

TimeSeries

HistoricalVolatility(BarSeries, int, int)

Calculates historical volatility using unadjusted prices.

public static TimeSeries HistoricalVolatility(BarSeries series, int length, int periodsPerYear)

Parameters

series BarSeries
length int
periodsPerYear int

Annualization factor

Returns

TimeSeries

HistoricalVolatility(TimeSeries, int, int)

Historical volatility.

public static TimeSeries HistoricalVolatility(TimeSeries series, int length, int periodsPerYear = 252)

Parameters

series TimeSeries
length int
periodsPerYear int

Returns

TimeSeries

Hma(TimeSeries, int)

Hull Moving Average see www.alanhull.com.au/hma/hma.html

public static TimeSeries Hma(TimeSeries series, int length)

Parameters

series TimeSeries

The TimeSeries of intertest

length int

Length of calculation window

Returns

TimeSeries

HookAbove(TimeSeries, TimeSeries)

Returns true when the left series closes down from above the right series.

public static BooleanSeries HookAbove(TimeSeries left, TimeSeries right)

Parameters

left TimeSeries
right TimeSeries

Returns

BooleanSeries

HookAbove(TimeSeries, double)

Returns true when the series closes down from above the specified value.

public static BooleanSeries HookAbove(TimeSeries series, double value)

Parameters

series TimeSeries
value double

Returns

BooleanSeries

HookBelow(TimeSeries, TimeSeries)

Returns true when the left series closes up from below the right series.

public static BooleanSeries HookBelow(TimeSeries left, TimeSeries right)

Parameters

left TimeSeries
right TimeSeries

Returns

BooleanSeries

HookBelow(TimeSeries, double)

Returns true when the series closes up from below the specified value.

public static BooleanSeries HookBelow(TimeSeries series, double value)

Parameters

series TimeSeries
value double

Returns

BooleanSeries

HurstExponent(TimeSeries, int)

Calculates a rolling Hurst Exponent of the specified length. Value of 0.5 indicates random walk. Less than 0.5 indicates mean reversion. Greater than 0.5 indicates trending behavior.

public static TimeSeries HurstExponent(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

InitialDecrease(TimeSeries, int)

Returns true when the first decline is detected. Optionally, use the number parameter for the n-th decline, uninterrupted by an advance.

public static BooleanSeries InitialDecrease(TimeSeries series, int number = 1)

Parameters

series TimeSeries
number int

Returns

BooleanSeries

Exceptions

ArgumentNullException
ArgumentOutOfRangeException

InitialIncrease(TimeSeries, int)

Returns true when the first increase is detected. Optionally use the number parameter for the n-th increase uninterrupted by a decline.

public static BooleanSeries InitialIncrease(TimeSeries series, int number = 1)

Parameters

series TimeSeries
number int

Returns

BooleanSeries

Exceptions

ArgumentNullException
ArgumentOutOfRangeException

InsideBar(BarSeries)

Returns a BooleanSeries indicating true when an inside bar is encountered.

public static BooleanSeries InsideBar(BarSeries series)

Parameters

series BarSeries

Returns

BooleanSeries

InsideBar(BarSeries, int)

Returns a BooleanSeries with true when an inside bar is formed.

public static BooleanSeries InsideBar(BarSeries series, int length)

Parameters

series BarSeries
length int

The number of prior bars to compare. Use 1 for classic inside bar. For lengths greater than 1, range must be contained within the range of the bar n bars ago.

Returns

BooleanSeries

Exceptions

ArgumentNullException
ArgumentOutOfRangeException

IntradayIntensity(BarSeries)

Bostian's Intraday Intensity Index

public static TimeSeries IntradayIntensity(BarSeries series)

Parameters

series BarSeries

Returns

TimeSeries

Inverse(TimeSeries)

Flips the sign of the specified series. Can be used in place of the minus operator to make the negation more obvious.

public static TimeSeries Inverse(this TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

InvertedHammer(BarSeries, int)

Inverted hammer

public static BooleanSeries InvertedHammer(BarSeries series, int lowLength = 10)

Parameters

series BarSeries
lowLength int

Returns

BooleanSeries

IslandBottom(BarSeries)

Island bottom.

public static BooleanSeries IslandBottom(BarSeries series)

Parameters

series BarSeries

Returns

BooleanSeries

IslandTop(BarSeries)

Island top

public static BooleanSeries IslandTop(BarSeries series)

Parameters

series BarSeries

Returns

BooleanSeries

KaufmanAma(TimeSeries, int, int, int)

Adaptive Moving Average from Perry Kaufman's Smarter Trading.

public static TimeSeries KaufmanAma(TimeSeries series, int length, int fastLength = 2, int slowLength = 30)

Parameters

series TimeSeries
length int
fastLength int
slowLength int

Returns

TimeSeries

KeltnerChannel(BarSeries, int, double, bool)

Keltner channel. ATR bands offset from SMA of typical price.

public static TimeSeries KeltnerChannel(BarSeries series, int length, double factor, bool useRange = false)

Parameters

series BarSeries
length int
factor double
useRange bool

When true, use the High-Low range per the original formula instead of ATR.

Returns

TimeSeries

KstDaily(TimeSeries)

Pring ST (Daily) KST. Pring recommends a 10 period MA as the trigger line.

public static TimeSeries KstDaily(TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

KstMonthly(TimeSeries)

Pring LT (Monthly) KST. Pring recommends a 9 period MA as the trigger line.

public static TimeSeries KstMonthly(TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

Lag(BooleanSeries, int)

Lags a series by the specified number of bars.

public static BooleanSeries Lag(this BooleanSeries series, int offset = 1)

Parameters

series BooleanSeries
offset int

Returns

BooleanSeries

Lag(IntegerSeries, int)

Lags a series by the specified number of bars.

public static IntegerSeries Lag(this IntegerSeries series, int offset = 1)

Parameters

series IntegerSeries
offset int

Returns

IntegerSeries

Lag(TimeSeries, int)

Lag a series by a specified number of bars.

public static TimeSeries Lag(this TimeSeries series, int offset = 1)

Parameters

series TimeSeries
offset int

Returns

TimeSeries

Lead(TimeSeries, int)

Shift a series forward by a specified number of bars. Use with caution as this can introduce postdictive errors.

public static TimeSeries Lead(TimeSeries series, int offset = 1)

Parameters

series TimeSeries
offset int

Returns

TimeSeries

LinRegLine(TimeSeries, int)

Returns a rolling linear regression line of the specified length.

public static TimeSeries LinRegLine(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

LinRegLine(TimeSeries, int, int)

Returns a prediction x bars into the future based on a rolling linear regression line.

public static TimeSeries LinRegLine(TimeSeries series, int length, int projection)

Parameters

series TimeSeries
length int
projection int

Returns

TimeSeries

Log(TimeSeries, double)

Natural (base e) log.

public static TimeSeries Log(TimeSeries series, double logBase = 2.718281828459045)

Parameters

series TimeSeries
logBase double

Returns

TimeSeries

LogReturns(BarSeries, int, double)

Returns log(t/t[1]) using the unadjusted close as the denominator.

public static TimeSeries LogReturns(BarSeries series, int length = 1, double logBase = 2.718281828459045)

Parameters

series BarSeries
length int
logBase double

Returns

TimeSeries

LogReturns(TimeSeries, int, double)

Returns log(t/t[-1]) for the specified series.

public static TimeSeries LogReturns(TimeSeries series, int length = 1, double logBase = 2.718281828459045)

Parameters

series TimeSeries
length int
logBase double

Returns

TimeSeries

Lowest(TimeSeries)

Returns the lowest low over the full series.

public static TimeSeries Lowest(TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

Lowest(TimeSeries, int)

Returns the lowest value over the specified length.

public static TimeSeries Lowest(this TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

LowestN(TimeSeries, int, int)

Returns true if a value is in the lowest n values over the specified length.

public static BooleanSeries LowestN(TimeSeries series, int length, int n)

Parameters

series TimeSeries
length int
n int

Returns

BooleanSeries

Exceptions

ArgumentNullException
ArgumentOutOfRangeException

Macd(TimeSeries, int, int)

Appel's moving average convergence divergence.

public static TimeSeries Macd(TimeSeries series, int fastLength = 12, int slowLength = 26)

Parameters

series TimeSeries
fastLength int
slowLength int

Returns

TimeSeries

MannKendallZ(TimeSeries, int)

Returns the z-score statistic of the Mann-Kendall test for trend detection. This version makes the simplifying assumption that there are no duplicate values, otherwise the variance estimate and hence the z-score will be off.

public static TimeSeries MannKendallZ(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

Max(SyncOption, params TimeSeries[])

Returns the cross-sectional maximum across multiple timeseries.

public static TimeSeries Max(SyncOption syncOption, params TimeSeries[] series)

Parameters

syncOption SyncOption
series TimeSeries[]

Returns

TimeSeries

Max(params TimeSeries[])

Returns the cross-sectional maximum across multiple timeseries. Series are synced using SyncOption.CarryoverPreviousValue.

public static TimeSeries Max(params TimeSeries[] series)

Parameters

series TimeSeries[]

Returns

TimeSeries

Max(IEnumerable<TimeSeries>)

Returns the cross-sectional maximum across multiple timeseries. Series are synced using SyncOption.CarryoverPreviousValue.

public static TimeSeries Max(IEnumerable<TimeSeries> series)

Parameters

series IEnumerable<TimeSeries>

Returns

TimeSeries

Mean(TimeSeries)

Returns the mean value of the specified series using an expanding window.

public static TimeSeries Mean(TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

MeanDeviation(TimeSeries, int)

Mean Absolute Deviation

public static TimeSeries MeanDeviation(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

Median(TimeSeries, int)

Median

public static TimeSeries Median(this TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

Merge(params BarSeries[])

Merges the specified series. Values are taken from the first available series.

public static BarSeries Merge(params BarSeries[] series)

Parameters

series BarSeries[]

Returns

BarSeries

Merge(params TimeSeries[])

Merges the specified series. Values are taken from the first available series.

public static TimeSeries Merge(params TimeSeries[] series)

Parameters

series TimeSeries[]

Returns

TimeSeries

Midpoint(BarSeries)

Midpoint.

public static TimeSeries Midpoint(BarSeries series)

Parameters

series BarSeries

Returns

TimeSeries

Midpoint(TimeSeries, TimeSeries)

Midpoint.

public static TimeSeries Midpoint(TimeSeries high, TimeSeries low)

Parameters

high TimeSeries
low TimeSeries

Returns

TimeSeries

Min(SyncOption, params TimeSeries[])

Returns the cross-sectional minimum across multiple timeseries.

public static TimeSeries Min(SyncOption syncOption, params TimeSeries[] series)

Parameters

syncOption SyncOption
series TimeSeries[]

Returns

TimeSeries

Min(params TimeSeries[])

Returns the cross-sectional minimum across multiple timeseries. Series are synced using SyncOption.CarryoverPreviousValue.

public static TimeSeries Min(params TimeSeries[] series)

Parameters

series TimeSeries[]

Returns

TimeSeries

Min(IEnumerable<TimeSeries>)

Returns the cross-sectional minimum across multiple timeseries. Series are synced using SyncOption.CarryoverPreviousValue.

public static TimeSeries Min(IEnumerable<TimeSeries> series)

Parameters

series IEnumerable<TimeSeries>

Returns

TimeSeries

Momentum(TimeSeries, int)

Momentum. Simple price change over specified length of bars.

public static TimeSeries Momentum(this TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

MoneyFlowIndex(BarSeries, int)

Returns the Money Flow Index (essentially a volume weighted RSI).

public static TimeSeries MoneyFlowIndex(BarSeries series, int length)

Parameters

series BarSeries
length int

Returns

TimeSeries

MonthHigh(TimeSeries)

Returns the highest value over the course of a calendar month.

public static TimeSeries MonthHigh(TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

Exceptions

ArgumentNullException

MonthLow(TimeSeries)

Returns the lowest value over the course of a calendar month.

public static TimeSeries MonthLow(TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

Exceptions

ArgumentNullException

MonthToDateChange(BarSeries, bool, bool)

Returns the month-to-date change for the specified series.

public static TimeSeries MonthToDateChange(BarSeries series, bool points = false, bool strict = false)

Parameters

series BarSeries
points bool

True to return points instead of percent, the default.

strict bool

True to wait for change of the month to begin calculations; false to use the first available data point as an anchor so calculation begins immediately even if not a true YTD change.

Returns

TimeSeries

Exceptions

ArgumentNullException

NBarBreakout(BarSeries, int)

Returns true when the most recent bar is contained within the max high and min low of the prior length - 1 bars.

public static BooleanSeries NBarBreakout(BarSeries series, int length)

Parameters

series BarSeries
length int

By convention, the length of the entire pattern including the last bar (e.g. a length of 3 means the last bar is contained within the high/low of the prior two bars)

Returns

BooleanSeries

Exceptions

ArgumentNullException
ArgumentOutOfRangeException

NRx(BarSeries, int)

Returns a boolean series indicating true when a narrow range day has been encountered.

public static BooleanSeries NRx(BarSeries series, int lookback)

Parameters

series BarSeries
lookback int

Returns

BooleanSeries

NetReturns(TimeSeries, double, double, Periodicity)

Transforms gross returns into net returns based on the specified fee schedule.

public static TimeSeries NetReturns(TimeSeries series, double managementFee, double performanceFee, Periodicity crystallization)

Parameters

series TimeSeries
managementFee double
performanceFee double
crystallization Periodicity

How frequently fees incentive fees are paid to the manager.

Returns

TimeSeries

NormalizeReturns(TimeSeries, double, bool)

Scales a return series to the specified volatility. The calculated scalar can be found in the Tag property when anchored is false.

public static TimeSeries NormalizeReturns(TimeSeries series, double targetVolatility, bool anchored = false)

Parameters

series TimeSeries
targetVolatility double
anchored bool

When true an anchored window is used with no lookahead. When false (default), the full dataset is used with hindsight.

Returns

TimeSeries

OnBalanceVolume(BarSeries)

Granville's OnBalanceVolume

public static TimeSeries OnBalanceVolume(BarSeries series)

Parameters

series BarSeries

Returns

TimeSeries

OnBalanceVolume(TimeSeries, TimeSeries)

Granville's OnBalanceVolume

public static TimeSeries OnBalanceVolume(TimeSeries close, TimeSeries volume)

Parameters

close TimeSeries
volume TimeSeries

Returns

TimeSeries

Osc(TimeSeries, int, int)

Returns the difference between two simple moving averages of the specified lengths.

public static TimeSeries Osc(TimeSeries series, int length1, int length2)

Parameters

series TimeSeries
length1 int
length2 int

Returns

TimeSeries

OutsideBar(BarSeries)

Returns a BooleanSeries indicating true if an outside bar is encountered.

public static BooleanSeries OutsideBar(BarSeries series)

Parameters

series BarSeries

Returns

BooleanSeries

OutsideBar(BarSeries, int)

Returns a BooleanSeries indicating whether a bar was an ouside bar. Use length of 1 for classic outside bar referencing prior bar only.

public static BooleanSeries OutsideBar(BarSeries series, int length)

Parameters

series BarSeries
length int

Returns

BooleanSeries

Exceptions

ArgumentNullException
ArgumentOutOfRangeException

Overlap(BarSeries)

Test indicator. Attempts to measure overlap or the lack of directional movement. Not necessarily complete or accurate.

public static TimeSeries Overlap(BarSeries series)

Parameters

series BarSeries

Returns

TimeSeries

Overlap(BarSeries, int)

Returns true if all bars over the prior length intersect with the most recent bar.

public static BooleanSeries Overlap(BarSeries series, int length)

Parameters

series BarSeries
length int

Returns

BooleanSeries

PercentChange(BarSeries)

Calculates a one period percent change using the unadjusted close in the denominator.

public static TimeSeries PercentChange(this BarSeries series)

Parameters

series BarSeries

Returns

TimeSeries

PercentChange(BarSeries, int)

Calculates a percent change of the close using the unadjusted close as the denominator.

public static TimeSeries PercentChange(this BarSeries series, int length)

Parameters

series BarSeries
length int

Returns

TimeSeries

PercentChange(TimeSeries)

One period percent change.

public static TimeSeries PercentChange(this TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

PercentChange(TimeSeries, int)

Percent change over specified number of bars.

public static TimeSeries PercentChange(this TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

PercentFilter(BarSeries, double)

Gets an integer series of +/- 1 indicating when the closing price has rallied/declined a specified percentage from a previous low/high. Uses the unadusted close to calculate an accurate percentage change.

public static IntegerSeries PercentFilter(BarSeries series, double pct)

Parameters

series BarSeries
pct double

Returns

IntegerSeries

PercentFilter(BarSeries, double, double)

Gets an integer series of +/- 1 indicating when the closing price has rallied/declined a specified percentage from a previous low/high. Uses the unadjusted close to calculate an accurate percentage change.

public static IntegerSeries PercentFilter(BarSeries series, double buyPct, double sellPct)

Parameters

series BarSeries
buyPct double
sellPct double

Returns

IntegerSeries

PercentFilter(TimeSeries, double)

Returns an integer series of +/- 1 indicating buys/sells that have rallied/declined the specified percent from a prior trough/peak.

public static IntegerSeries PercentFilter(TimeSeries series, double pct)

Parameters

series TimeSeries
pct double

Returns

IntegerSeries

PercentFilter(TimeSeries, double, double)

Returns an integer series of +/-1 indicating buys/sells that have rallied/declines from the specified buy/sell percent from the prior trough/preak.

public static IntegerSeries PercentFilter(TimeSeries series, double buyPct, double sellPct)

Parameters

series TimeSeries
buyPct double
sellPct double

Returns

IntegerSeries

PercentRank(TimeSeries)

Returns the percentile ranking of an observation versus all prior history.

public static TimeSeries PercentRank(TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

PercentRank(TimeSeries, int)

Returns where an observation stands as a percentile relative to other observations for specified lookback.

public static TimeSeries PercentRank(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

Percentile(TimeSeries, double)

Returns the specified percentile using all previous data.

public static TimeSeries Percentile(TimeSeries series, double percentile)

Parameters

series TimeSeries
percentile double

Returns

TimeSeries

Percentile(TimeSeries, double, int)

Returns the specified percentile over a rolling window.

public static TimeSeries Percentile(this TimeSeries series, double percentile, int length)

Parameters

series TimeSeries
percentile double
length int

Returns

TimeSeries

PivotHigh(TimeSeries, int)

Pivot high.

public static TimeSeries PivotHigh(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Number of bars on either side of the pivot high.

Returns

TimeSeries

PivotHigh(TimeSeries, int, int)

Pivot high.

public static TimeSeries PivotHigh(TimeSeries series, int length, int maxWidth)

Parameters

series TimeSeries
length int

Number of bars on either side of the pivot high.

maxWidth int

Max number of consecutive bars equal to the high.

Returns

TimeSeries

PivotHighBar(TimeSeries, int)

Returns the number of bars since the last pivot high.

public static TimeSeries PivotHighBar(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Number of bars onn either side of the pivot high.

Returns

TimeSeries

PivotHighBar(TimeSeries, int, int)

Number of bars since last pivot high.

public static TimeSeries PivotHighBar(TimeSeries series, int length, int maxWidth)

Parameters

series TimeSeries
length int

Number of bars on either side of the pivot high

maxWidth int

Max number of consecutive bars equal to the high

Returns

TimeSeries

PivotLow(TimeSeries, int)

Pivot low.

public static TimeSeries PivotLow(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Number of bars on either side of the pivot low.

Returns

TimeSeries

PivotLow(TimeSeries, int, int)

Pivot low

public static TimeSeries PivotLow(TimeSeries series, int length, int maxWidth)

Parameters

series TimeSeries
length int

Number of bars on either side of the pivot low.

maxWidth int

Max number of consecutive bars equal to the low.

Returns

TimeSeries

PivotLowBar(TimeSeries, int)

Returns the number of bars since the last pivot low.

public static TimeSeries PivotLowBar(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Number of bars on either side of the pivot low.

Returns

TimeSeries

PivotLowBar(TimeSeries, int, int)

Number of bars since the last pivot low

public static TimeSeries PivotLowBar(TimeSeries series, int length, int maxWidth)

Parameters

series TimeSeries
length int

Number of bars on either side of the pivot low.

maxWidth int

Max number of consecutive bars equal to the low.

Returns

TimeSeries

PivotPoints(BarSeries)

Gets a TimeSeriesCollection of pivot points R1, R2, R3, S1, S2 & S3.

public static TimeSeriesCollection PivotPoints(BarSeries series)

Parameters

series BarSeries

Returns

TimeSeriesCollection

Power(TimeSeries, double)

Raises a series to the specified power.

public static TimeSeries Power(TimeSeries series, double power)

Parameters

series TimeSeries
power double

Returns

TimeSeries

PriceVolumeTrend(BarSeries)

Price-volume trend.

public static TimeSeries PriceVolumeTrend(BarSeries series)

Parameters

series BarSeries

Returns

TimeSeries

PriceVolumeTrend(TimeSeries, TimeSeries)

Price-volume trend.

public static TimeSeries PriceVolumeTrend(TimeSeries price, TimeSeries volume)

Parameters

price TimeSeries
volume TimeSeries

Returns

TimeSeries

Range(BarSeries)

Returns a Timeseries of the high minus the low.

public static TimeSeries Range(BarSeries series)

Parameters

series BarSeries

Returns

TimeSeries

Range(BarSeries, int)

Returns the highest high minus the lowest low over the specified lookback.

public static TimeSeries Range(BarSeries series, int lookback)

Parameters

series BarSeries
lookback int

Returns

TimeSeries

Range(TimeSeries, TimeSeries, int)

Returns the highest high value minus the lowest low value over the specified lookback.

public static TimeSeries Range(TimeSeries high, TimeSeries low, int lookback)

Parameters

high TimeSeries
low TimeSeries
lookback int

Returns

TimeSeries

Range(TimeSeries, int)

Returns the highest value minus the lowest value over the specified lookback.

public static TimeSeries Range(TimeSeries series, int lookback)

Parameters

series TimeSeries
lookback int

Returns

TimeSeries

Ravi(TimeSeries, int, int)

Tushar Chande's Range Action Verification Index (RAVI) from Beyond Technical Analysis pg. 41

public static TimeSeries Ravi(TimeSeries series, int shortLength = 7, int longLength = 65)

Parameters

series TimeSeries
shortLength int
longLength int

Returns

TimeSeries

Rebase(BarSeries, double)

Returns a BarSeries rebased to the specified starting value.

public static BarSeries Rebase(BarSeries series, double startingValue = 100)

Parameters

series BarSeries
startingValue double

Returns

BarSeries

Rebase(TimeSeries, double)

Returns a TimeSeries rebased to the specified starting value.

public static TimeSeries Rebase(this TimeSeries series, double startingValue = 100)

Parameters

series TimeSeries
startingValue double

Returns

TimeSeries

Regression(TimeSeries)

Simple linear regression over the entire timeseries.

public static RegressionResult Regression(TimeSeries series)

Parameters

series TimeSeries

Returns

RegressionResult

Regression(TimeSeries, TimeSeries)

Simple linear regression

public static RegressionResult Regression(TimeSeries dependent, TimeSeries independent)

Parameters

dependent TimeSeries
independent TimeSeries

Returns

RegressionResult

Regression(TimeSeries, TimeSeries, int)

Simple linear regression.

public static RegressionSeries Regression(TimeSeries dependent, TimeSeries independent, int length)

Parameters

dependent TimeSeries

The dependent or y variable.

independent TimeSeries

The independent or x variable.

length int

Use 0 to run on all data.

Returns

RegressionSeries

Regression(TimeSeries, int)

Simple linear regression over a fixed lookback.

public static RegressionSeries Regression(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

RegressionSeries

RelativeMomentumIndex(TimeSeries, int, int)

Gets the Relative Momentum Index (Altman 1993). With a lookback of 1, RMI is equivalent to RSI.

public static TimeSeries RelativeMomentumIndex(TimeSeries series, int length, int lookback)

Parameters

series TimeSeries
length int
lookback int

Returns

TimeSeries

RelativeVigorIndex(BarSeries, int)

Returns the Relative Vigor Index smoothed by the specified length. The signal line timeseries is returned in the Tag property.

public static TimeSeries RelativeVigorIndex(BarSeries series, int length)

Parameters

series BarSeries
length int

Returns

TimeSeries

Rescale(TimeSeries, double, double)

Rescales the specified series to a new range. Note this indicator has look-ahead bias built in and should not be used for backtesting.

public static TimeSeries Rescale(TimeSeries series, double min, double max)

Parameters

series TimeSeries
min double
max double

Returns

TimeSeries

ReverseWinsorize(TimeSeries, double, double)

Preserve the tails of a series. If observation falls between the specificed max and min, it is converted to zero.

public static TimeSeries ReverseWinsorize(TimeSeries series, double min, double max)

Parameters

series TimeSeries
min double
max double

Returns

TimeSeries

Roc(BarSeries, int)

Rate of change on close of BarSeries. If BarSeries is a CsiBarSeries, it will divide momentum by the unadjusted close to get an accurate percentage calculation.

public static TimeSeries Roc(this BarSeries series, int length)

Parameters

series BarSeries
length int

Returns

TimeSeries

Roc(TimeSeries, int)

Rate of change.

public static TimeSeries Roc(this TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

Round(TimeSeries, int)

Rounds a timeseries to the specified number of digits.

public static TimeSeries Round(this TimeSeries series, int digitsToRound)

Parameters

series TimeSeries
digitsToRound int

Returns

TimeSeries

Rsi(TimeSeries, int)

Wilder's Relative Strength Index.

public static TimeSeries Rsi(this TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

SeasonalIndex(BarSeries, bool, bool)

Returns a seasonal index based on mean of yearly VAMI curves.

public static TimeSeries SeasonalIndex(BarSeries series, bool detrend = true, bool calendarDays = false)

Parameters

series BarSeries
detrend bool

Divide VAMI by average. False for raw VAMI

calendarDays bool

When true use calendar day instead of trading day of the year.

Returns

TimeSeries

SeasonalIndex2(BarSeries, bool, bool, double, bool, bool)

Returns the Seasonal Index. The final annual seasonal projection is returned as a TimeSeries via the Tag property.

public static TimeSeries SeasonalIndex2(BarSeries series, bool detrend = true, bool adjustGap = true, double outlierThresold = 3, bool updateForecast = true, bool calendarDays = false)

Parameters

series BarSeries
detrend bool

Detrends each individual year using a simple slope calculation.

adjustGap bool

Adjust for gap in seasonal index at the beginning of a new year. Only used when detrend is false.

outlierThresold double

The number of standard deviations at which to winsorize outliers. Set to NaN to disable.

updateForecast bool

When true the year ahead forecast will incorporate the last year of data. Set to false to avoid situations where the future forecast can change at the year boundary.

calendarDays bool

When true use calendar day instead of trading day of the year.

Returns

TimeSeries

SharpeRatio(TimeSeries)

Calculates the Sharpe Ratio for the specified return series.

public static double SharpeRatio(TimeSeries series)

Parameters

series TimeSeries

Returns

double

SharpeRatio(TimeSeries, int)

Calculates a rolling Sharpe Ratio for the specified return series.

public static TimeSeries SharpeRatio(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

ShootingStar(BarSeries, int)

Shooting star

public static BooleanSeries ShootingStar(BarSeries series, int highLength = 10)

Parameters

series BarSeries
highLength int

Returns

BooleanSeries

Sign(TimeSeries)

Returns an IntegerSeries with the sign (+1/0/-1) for the specified series.

public static IntegerSeries Sign(TimeSeries series)

Parameters

series TimeSeries

Returns

IntegerSeries

Slope(TimeSeries, int)

Returns the slope of a rolling linear regression line of the specified length.

public static TimeSeries Slope(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

SlowD(BarSeries, int)

Stochastics SlowD

public static TimeSeries SlowD(BarSeries series, int length)

Parameters

series BarSeries
length int

Returns

TimeSeries

SlowD(TimeSeries, TimeSeries, TimeSeries, int)

Stochastics SlowD

public static TimeSeries SlowD(TimeSeries high, TimeSeries low, TimeSeries close, int length)

Parameters

high TimeSeries
low TimeSeries
close TimeSeries
length int

Returns

TimeSeries

SlowK(BarSeries, int)

Stochastics SlowK

public static TimeSeries SlowK(BarSeries series, int length)

Parameters

series BarSeries
length int

Returns

TimeSeries

SlowK(TimeSeries, TimeSeries, TimeSeries, int)

Stochastics SlowK

public static TimeSeries SlowK(TimeSeries high, TimeSeries low, TimeSeries close, int length)

Parameters

high TimeSeries
low TimeSeries
close TimeSeries
length int

Returns

TimeSeries

Sma(TimeSeries, int)

Simple Moving Average

public static TimeSeries Sma(this TimeSeries series, int length)

Parameters

series TimeSeries

The timeseries to use.

length int

The number of bars used in the calculation.

Returns

TimeSeries

Smo(TimeSeries, int)

Implementation of CQG's Smoothed Moving Average, based on Welles Wilder's book circa 1977. Smo is initialized with a Sma but otherwise is equivalent to an Ema of 2*length-1.

public static TimeSeries Smo(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

SmoothedMovingAverage(TimeSeries, int)

Smoothed Simple Moving Average

public static TimeSeries SmoothedMovingAverage(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

SoftMax(TimeSeries, double, int)

Returns the softmax transformation of the specified series.

public static TimeSeries SoftMax(TimeSeries series, double lambda, int length)

Parameters

series TimeSeries

The series to transform.

lambda double

The number of standard deviations that are linear. Logistic (squash) function can be achieved by using a lambda of 2 * pi. Hyperbolic tangent function can be achieved by using a lambda of pi. See Mean Reversion Trading Systems by Howard Bandy.

length int

The length of the standard deviation calculation.

Returns

TimeSeries

SpearmanIndicator(TimeSeries, int)

Returns the Spearman Ranked Correlation indicator using the specified length.

public static TimeSeries SpearmanIndicator(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

Exceptions

ArgumentNullException

Splice(params TimeSeries[])

Creates a continuous series linking discontinuous series. Series are processed in the order in which they are passed.
Overlapping data from each subsequent series is ignored.

public static TimeSeries Splice(params TimeSeries[] series)

Parameters

series TimeSeries[]

Returns

TimeSeries

Splice(bool, params BarSeries[])

Creates a continuous series linking discontinous series. Series are processed in the order in which they are passed.
Overlapping data from each subsequent series is ignored.

public static BarSeries Splice(bool adjust, params BarSeries[] series)

Parameters

adjust bool

When true, a multiplicative adjustment will be applied to the first overlapping value such that they are equal.

series BarSeries[]

Returns

BarSeries

Splice(bool, params TimeSeries[])

Creates a continuous series linking discontinous series. Series are processed in the order in which they are passed.
Overlapping data from each subsequent series is ignored.

public static TimeSeries Splice(bool adjust, params TimeSeries[] series)

Parameters

adjust bool

When true, a multiplicative adjustment will be applied to the first overlapping value such that they are equal.

series TimeSeries[]

Returns

TimeSeries

Sqrt(TimeSeries)

Square root

public static TimeSeries Sqrt(TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

StandardDeviation(TimeSeries)

Returns the sample standard deviation of the specified series using an expanding window.

public static TimeSeries StandardDeviation(TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

Exceptions

ArgumentNullException

StandardDeviation(TimeSeries, int, bool, bool)

Standard deviation.

public static TimeSeries StandardDeviation(this TimeSeries series, int length, bool population = false, bool exponentialSmoothing = false)

Parameters

series TimeSeries
length int
population bool

True for population standard deviation. n.b. TradeStation use population std. dev. for BollingerBand calculation.

exponentialSmoothing bool

True for exponential smoothing

Returns

TimeSeries

StandardDeviationLog(TimeSeries, int)

Standard deviation of log of P[t]/P[t-1].

public static TimeSeries StandardDeviationLog(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

StdDev(SyncOption, params TimeSeries[])

Returns the cross-sectional standard deviation of the specified TimeSeries.

public static TimeSeries StdDev(SyncOption syncOption, params TimeSeries[] series)

Parameters

syncOption SyncOption
series TimeSeries[]

Returns

TimeSeries

StdDev(params TimeSeries[])

Returns the cross-sectional standard deviation of the specified TimeSeries.

public static TimeSeries StdDev(params TimeSeries[] series)

Parameters

series TimeSeries[]

Returns

TimeSeries

StdDev(IEnumerable<TimeSeries>)

Returns the cross-sectional standard deviation of the specified enumerable of TimeSeries.

public static TimeSeries StdDev(IEnumerable<TimeSeries> series)

Parameters

series IEnumerable<TimeSeries>

Returns

TimeSeries

Stochastic(BarSeries, int)

Raw stochastic.

public static TimeSeries Stochastic(this BarSeries series, int length)

Parameters

series BarSeries
length int

Returns

TimeSeries

Stochastic(BarSeries, int, int)

Returns a stochastic of the BarSeries using the specified stochastic length and smoothing.

public static TimeSeries Stochastic(BarSeries series, int stochLength, int smoothingLength)

Parameters

series BarSeries
stochLength int
smoothingLength int

Returns

TimeSeries

Stochastic(BarSeries, int, int, int)

Double smoothed stochastic (equivalent to SlowD if 3 periods is used for both smoothings).

public static TimeSeries Stochastic(BarSeries series, int stochLength, int smoothingLength1, int smoothingLength2)

Parameters

series BarSeries
stochLength int
smoothingLength1 int
smoothingLength2 int

Returns

TimeSeries

Stochastic(TimeSeries, TimeSeries, TimeSeries, int)

Raw stochastic.

public static TimeSeries Stochastic(TimeSeries high, TimeSeries low, TimeSeries close, int length)

Parameters

high TimeSeries
low TimeSeries
close TimeSeries
length int

Returns

TimeSeries

Stochastic(TimeSeries, int)

Raw stochastic of a timeseries.

public static TimeSeries Stochastic(this TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

Sum(SyncOption, params TimeSeries[])

Returns the cross-sectional sum of the specified Timeseries.

public static TimeSeries Sum(SyncOption syncOption, params TimeSeries[] series)

Parameters

syncOption SyncOption
series TimeSeries[]

Returns

TimeSeries

Sum(SyncOption, double[], params TimeSeries[])

Returns the cross-sectional sum of the specified series weighted using the specified weights.

public static TimeSeries Sum(SyncOption syncOption, double[] weights, params TimeSeries[] series)

Parameters

syncOption SyncOption
weights double[]
series TimeSeries[]

Returns

TimeSeries

Sum(TimeSeries, int)

Returns a rolling sum over the past n periods.

public static TimeSeries Sum(this TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

Sum(params TimeSeries[])

Returns the cross-sectional sum of the specified TimeSeries.

public static TimeSeries Sum(params TimeSeries[] series)

Parameters

series TimeSeries[]

Returns

TimeSeries

Sum(IEnumerable<TimeSeries>)

Returns the cross-sectional sum of the specified series. Series are synced using SyncOption.CarryoverPreviousValue.

public static TimeSeries Sum(IEnumerable<TimeSeries> series)

Parameters

series IEnumerable<TimeSeries>

Returns

TimeSeries

TDMA2(TimeSeries, int, int, int, int)

Returns a +1/0/-1 based on the TDMA II rules. See pg. 149 of Perl's "Demark Indicators".

public static Signal TDMA2(TimeSeries series, int fastLength = 3, int slowLength = 34, int fastRoc = 2, int slowRoc = 1)

Parameters

series TimeSeries
fastLength int
slowLength int
fastRoc int
slowRoc int

Returns

Signal

TrendBar(BarSeries, int, double, double)

Returns an integer series with +1 for a trend up bar and -1 for a trend down bar

public static Signal TrendBar(BarSeries series, int atrLength = 21, double atrCoefficient = 1, double extreme = 0.25)

Parameters

series BarSeries

The BarSeries

atrLength int

The length of the ATR calculation (default = 21)

atrCoefficient double

The coefficient by which to multiply ATR. Higher numbers are more restrictive.

extreme double

The percentage off the high/low the open/close must be within. Zero would be the equivalent of opening at the low and closing at the high for a trend up day (or vice versa for a trend down day).

Returns

Signal

TrendLineHigh(TimeSeries, int)

Returns a trend line value based on trailing two pivot highs.

public static TimeSeries TrendLineHigh(TimeSeries series, int pivotLength)

Parameters

series TimeSeries
pivotLength int

Returns

TimeSeries

TrendLineLow(TimeSeries, int)

Returns a trend line based on the trailing two pivot lows.

public static TimeSeries TrendLineLow(TimeSeries series, int pivotLength)

Parameters

series TimeSeries
pivotLength int

Returns

TimeSeries

Trix(TimeSeries, int)

Returns a triple smoothed exponential moving average of the specified series.

public static TimeSeries Trix(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

Trix(TimeSeries, int, int, int)

Returns a triple smoothed expoential moving average of the specified series.

public static TimeSeries Trix(TimeSeries series, int length1, int length2, int length3)

Parameters

series TimeSeries
length1 int
length2 int
length3 int

Returns

TimeSeries

TrueRange(BarSeries)

True range.

public static TimeSeries TrueRange(this BarSeries series)

Parameters

series BarSeries

Returns

TimeSeries

TrueRange(TimeSeries)

TrueRange on a timeseries is the equivalent of Abs(Momentum(series, 1)). It doesn't really make sense, but this overload is included for ease of use in translating other platform's trading logic.

public static TimeSeries TrueRange(TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

TrueRange(TimeSeries, TimeSeries, TimeSeries)

True range.

public static TimeSeries TrueRange(TimeSeries high, TimeSeries low, TimeSeries close)

Parameters

high TimeSeries
low TimeSeries
close TimeSeries

Returns

TimeSeries

Tsi(TimeSeries, int, int, int)

Returns William Blau's True Strengh Index (see Momentum, Direction, and Divergence pg. 5).

public static TimeSeries Tsi(TimeSeries series, int r, int s, int u = 1)

Parameters

series TimeSeries
r int

momentum smoothing

s int

secondary smoothing

u int

optional third smoothing

Returns

TimeSeries

TypicalPrice(BarSeries)

Typical price. The average of the high, low, and close.

public static TimeSeries TypicalPrice(BarSeries series)

Parameters

series BarSeries

Returns

TimeSeries

TypicalPrice(TimeSeries, TimeSeries, TimeSeries)

Typical price.

public static TimeSeries TypicalPrice(TimeSeries high, TimeSeries low, TimeSeries close)

Parameters

high TimeSeries
low TimeSeries
close TimeSeries

Returns

TimeSeries

VWAP(BarSeries, int)

Volume weighted moving average.

public static TimeSeries VWAP(BarSeries series, int length)

Parameters

series BarSeries
length int

Returns

TimeSeries

VWAP(TimeSeries, TimeSeries, int)

Volume weighted moving average.

public static TimeSeries VWAP(TimeSeries price, TimeSeries volume, int length)

Parameters

price TimeSeries
volume TimeSeries
length int

Returns

TimeSeries

Vami(TimeSeries, double)

Returns the cumulative Value Added Monthly Index of return series (i.e. cumulative product of 1 + return) Note that this indicator will return an extra observation as the series starts with a value of startingLevel.

public static TimeSeries Vami(TimeSeries series, double startingLevel = 100)

Parameters

series TimeSeries
startingLevel double

Returns

TimeSeries

VarianceRatio(BarSeries, int, int)

Returns the Lo-MacKinlay Variance Ratio.

public static TimeSeries VarianceRatio(BarSeries series, int length, int lookback = 5)

Parameters

series BarSeries
length int
lookback int

Returns

TimeSeries

Vidya(TimeSeries, int)

Chande's VIDYA (Variable Index Dynamic Average from The New Technical Trader pg 49)

public static TimeSeries Vidya(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

WRx(BarSeries, int)

Returns a boolean series indicating when a wide range day has been encountered.

public static BooleanSeries WRx(BarSeries series, int lookback)

Parameters

series BarSeries
lookback int

Returns

BooleanSeries

Winsorize(IntegerSeries, int, int)

Winsorize an integer series (truncate outliers)

public static IntegerSeries Winsorize(IntegerSeries series, int min, int max)

Parameters

series IntegerSeries
min int
max int

Returns

IntegerSeries

Winsorize(TimeSeries, double, double)

Winsorize a series (truncate outliers)

public static TimeSeries Winsorize(TimeSeries series, double min, double max)

Parameters

series TimeSeries
min double
max double

Returns

TimeSeries

Within(BooleanSeries, int)

Determines whether a value was true with in the specified lookback.

public static BooleanSeries Within(this BooleanSeries series, int lookback)

Parameters

series BooleanSeries
lookback int

Returns

BooleanSeries

Wma(TimeSeries, int)

Weighted Moving Average

public static TimeSeries Wma(TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

YearToDateChange(BarSeries, bool, bool)

Returns the year-to-date change for the specified series.

public static TimeSeries YearToDateChange(BarSeries series, bool points = false, bool strict = false)

Parameters

series BarSeries
points bool

True to return points instead of percent, the default.

strict bool

True to wait for change of the year to begin calculations; false to use the first available data point as an anchor so calculation begins immediately even if not a true YTD change.

Returns

TimeSeries

Exceptions

ArgumentNullException

ZScore(TimeSeries)

Returns an anchored z-score using all data available up until the date being calculated.

public static TimeSeries ZScore(TimeSeries series)

Parameters

series TimeSeries

Returns

TimeSeries

ZScore(TimeSeries, int)

Z-score

public static TimeSeries ZScore(this TimeSeries series, int length)

Parameters

series TimeSeries
length int

Returns

TimeSeries

ZScore(TimeSeries, int, TimeSeries)

Returns a z-score using the specified mean timeseries.

public static TimeSeries ZScore(TimeSeries series, int length, TimeSeries mean)

Parameters

series TimeSeries
length int
mean TimeSeries

Returns

TimeSeries

ZScore(TimeSeries, int, double)

Returns a z-score using the specified static mean.

public static TimeSeries ZScore(TimeSeries series, int length, double mean)

Parameters

series TimeSeries
length int
mean double

Returns

TimeSeries

ZScorePenalty(TimeSeries, int, double)

Calculates a z-score but inverts reading by the same amount that it exceeds the specified treshold. Useful for penalizing extremes.

public static TimeSeries ZScorePenalty(TimeSeries series, int length, double penaltyThreshold = 2.5)

Parameters

series TimeSeries
length int
penaltyThreshold double

Returns

TimeSeries

ZigZag(BarSeries, double)

Returns a percentage filtered wave on the specified series using the unadjusted close to calculate correct percentage changes.

public static TimeSeries ZigZag(BarSeries series, double pct)

Parameters

series BarSeries
pct double

Returns

TimeSeries

ZigZag(BarSeries, double, double)

Returns a percentage filtered wave on the specified series using the unadjusted close to calculate correct percentage changes. The Tag property will return a list of type FilteredWave.

public static TimeSeries ZigZag(BarSeries series, double buy, double sell)

Parameters

series BarSeries
buy double
sell double

Returns

TimeSeries

ZigZag(TimeSeries, double)

Returns a zig-zag indicator using the specified percent filter. This indicator uses hindsight and cannot be used for trading.

public static TimeSeries ZigZag(TimeSeries series, double percent)

Parameters

series TimeSeries
percent double

Returns

TimeSeries

ZigZag(TimeSeries, double, double, bool)

Returns a zig-zag indicator or filtered wave a-la Arthur Merrill. This indicator uses hindsight and cannot be used for trading.

public static TimeSeries ZigZag(TimeSeries series, double buy, double sell, bool points = false)

Parameters

series TimeSeries
buy double
sell double
points bool

Set to true to calculate in points instead of percents.

Returns

TimeSeries