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
AccumulationDistribution(BarSeries)
Accumulation distribution.
public static TimeSeries AccumulationDistribution(BarSeries series)
Parameters
series
BarSeries
Returns
Adx(BarSeries, int)
Wilder's Average Directional Movement Index
public static TimeSeries Adx(BarSeries series, int length)
Parameters
Returns
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
Returns
AggregateReturns(TimeSeries, Periodicity)
Aggregates a return series to the specified periodicity using geometric linking.
public static TimeSeries AggregateReturns(TimeSeries series, Periodicity periodicity)
Parameters
series
TimeSeriesperiodicity
Periodicity
Returns
AroonOscillator(BarSeries, int)
Chande's Aroon Oscillator.
public static TimeSeries AroonOscillator(BarSeries series, int length = 25)
Parameters
Returns
AroonOscillator(TimeSeries, int)
Chande's Aroon Oscillator.
public static TimeSeries AroonOscillator(TimeSeries series, int length = 25)
Parameters
series
TimeSerieslength
int
Returns
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
Returns
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
SyncOptionseries
TimeSeries[]
Returns
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
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
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
Returns
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
TimeSeriesA timeseries
period
inttarget cycle
delta
doublemultiplied by period to control the size of the window
Returns
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
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
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
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
Exceptions
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
TimeSerieslength
intThe number of bars to look back. Use a length of zero for the all-time high.
strict
boolWhen true high must exceed prior high (not just equal).
Returns
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
Exceptions
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
TimeSerieslength
intThe number of bars to look back. Use a length of zero for the all-time low.
strict
boolWhen true low must exceed prior low (not just equal).
Returns
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
BearishEngulfing(BarSeries, int)
Bearish Engulfing pattern.
public static BooleanSeries BearishEngulfing(BarSeries series, int trendConfirmationLength = 10)
Parameters
Returns
BearishHarami(BarSeries, int)
Bearish Harami pattern.
public static BooleanSeries BearishHarami(BarSeries series, int length = 10)
Parameters
Returns
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
TimeSeriesThe dependent or "y" variable. Typically a return stream from a stock or portfolio.
independent
TimeSeriesThe independent or "x" variable. Typically the market.
Returns
Beta(TimeSeries, TimeSeries, int)
Calculate the beta of one TimeSeries to another.
public static TimeSeries Beta(TimeSeries dependent, TimeSeries independent, int length)
Parameters
dependent
TimeSeriesThe dependent or "y" variable. Typically a return stream from a stock or portfolio.
independent
TimeSeriesThe independent or "x" variable. Typically the market.
length
intThe length of the calculation. Use 0 for all data.
Returns
BollingerBand(TimeSeries, int, double)
Bollinger Band
public static TimeSeries BollingerBand(TimeSeries series, int length, double standardDeviations)
Parameters
series
TimeSerieslength
intstandardDeviations
doubleNumber of standard deviations. Use negative number for lower band.
Returns
BollingerPercentB(TimeSeries, int, double)
Bollinger's PercentB
public static TimeSeries BollingerPercentB(TimeSeries series, int length, double standardDeviations)
Parameters
series
TimeSerieslength
intstandardDeviations
double
Returns
BullHook(BarSeries)
Bull hook
public static BooleanSeries BullHook(BarSeries series)
Parameters
series
BarSeries
Returns
Cci(BarSeries, int)
Lambert's Commodity Channel Index.
public static TimeSeries Cci(BarSeries series, int length = 20)
Parameters
Returns
ChaikinAccumulationDistribution(BarSeries)
Chaikin accumulation distribution.
public static TimeSeries ChaikinAccumulationDistribution(BarSeries series)
Parameters
series
BarSeries
Returns
ChaikinMoneyFlow(BarSeries, int)
Chaikin Money Flow
public static TimeSeries ChaikinMoneyFlow(BarSeries series, int length = 21)
Parameters
Returns
ChaikinOscillator(BarSeries, int, int)
Chaikin Oscillator.
public static TimeSeries ChaikinOscillator(BarSeries series, int shortLength = 3, int longLength = 10)
Parameters
Returns
Cmo(TimeSeries, int)
Chande Momentum Oscillator (The New Technical Trader pg 94)
public static TimeSeries Cmo(TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
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
TimeSeriescop
ComparisonOperator
Returns
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
TimeSeriesright
TimeSeriescop
ComparisonOperator
Returns
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
TimeSeriesFirst timeseries to compare.
right
TimeSeriesSecond timeseries to compare.
cop
ComparisonOperatorThe comparison to perform.
barsBack
intThe number of bars back (lag) to compare the second timeseries.
valueIfTrue
doubleThe value of the indicator if the comparison is true.
valueIfFalse
doubleThe 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
TimeSeriesthreshold
double
Returns
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
TimeSeriesThe timeseries to compare.
value
doubleA double (or integer) value.
cop
ComparisonOperatorThe 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
TimeSeriesmax
doublemin
double
Returns
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
TimeSeriesmax
doublemin
doublevalueAboveMax
doublevalueBelowMin
doublevalueInMiddle
double
Returns
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
TimeSerieslength1
intlength2
intlength3
int
Returns
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
TimeSerieslengths
int[]
Returns
ConnorsRsi(TimeSeries, int, int, int)
Returns the Connors RSI. See http://analytics.tradingmarkets.com/ConnorsRSI/
public static TimeSeries ConnorsRsi(TimeSeries series, int rsiLength = 3, int streakLength = 2, int percentRankLength = 100)
Parameters
series
TimeSeriesrsiLength
intstreakLength
intpercentRankLength
int
Returns
Consecutive(BooleanSeries)
Returns the number of consecutive true observations.
public static TimeSeries Consecutive(BooleanSeries series)
Parameters
series
BooleanSeries
Returns
Exceptions
Consecutive(BooleanSeries, int)
Returns true if the prior length observations are all true.
public static BooleanSeries Consecutive(BooleanSeries series, int length)
Parameters
series
BooleanSerieslength
int
Returns
Consecutive(TimeSeries)
Returns the number of consecutive increasing or decreasing observations.
public static TimeSeries Consecutive(TimeSeries series)
Parameters
series
TimeSeries
Returns
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
TimeSerieshurdle
TimeSeriesInverse of hurdle will be used for decreasing observations.
Returns
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
TimeSeriesseries2
TimeSeriesop
ComparisonOperator
Returns
Exceptions
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
TimeSerieshurdle
doubleop
ComparisonOperator
Returns
Exceptions
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
Consolidate(TimeSeries)
Removes consecutive values from a TimeSeries.
public static TimeSeries Consolidate(TimeSeries series)
Parameters
series
TimeSeries
Returns
Consolidate(TimeSeries, CompressionOperator)
Removes duplicate dates by applying the specified compression operator.
public static TimeSeries Consolidate(TimeSeries series, CompressionOperator operation)
Parameters
series
TimeSeriesoperation
CompressionOperator
Returns
Correlation(BarSeries, int, int)
Returns the autocorrelation of the specified series returns.
public static TimeSeries Correlation(BarSeries series, int length, int lag)
Parameters
Returns
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
TimeSeriesseries2
TimeSeries
Returns
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
TimeSeriesseries2
TimeSerieslength
int
Returns
Correlation(TimeSeries, int, int)
Returns the autocorrelation of the specified series.
public static TimeSeries Correlation(TimeSeries series, int length, int lag)
Parameters
series
TimeSerieslength
intlag
int
Returns
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
intalignDates
boolWhen true only overlapping dates across all series are used.
absoluteValue
bool
Returns
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
boolabsoluteValue
bool
Returns
Exceptions
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
intalignDates
boolabsoluteValue
bool
Returns
Count(params TimeSeries[])
Returns the cross-sectional count of active TimeSeries.
public static TimeSeries Count(params TimeSeries[] series)
Parameters
series
TimeSeries[]
Returns
Count(IEnumerable<TimeSeries>)
Returns the cross-sectional count of active TimeSeries.
public static TimeSeries Count(IEnumerable<TimeSeries> series)
Parameters
series
IEnumerable<TimeSeries>
Returns
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
TimeSeriesright
TimeSeries
Returns
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
TimeSeriesright
TimeSeries
Returns
CrossAbove(TimeSeries, double)
Returns true when the specified series crosses above the threshold.
public static BooleanSeries CrossAbove(TimeSeries series, double threshold)
Parameters
series
TimeSeriesthreshold
double
Returns
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
TimeSeriesright
TimeSeries
Returns
CrossBelow(TimeSeries, double)
Returns true when the specified series crosses below the threshold.
public static BooleanSeries CrossBelow(TimeSeries series, double threshold)
Parameters
series
TimeSeriesthreshold
double
Returns
Cumulative(TimeSeries)
Cumulative sum.
public static TimeSeries Cumulative(this TimeSeries series)
Parameters
series
TimeSeries
Returns
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
PeriodicitystartingValue
doubletargetWeights
Dictionary<string, double>series
TimeSeries[]
Returns
DV2(BarSeries)
Returns the DV2 indicator with a 252 day length.
public static TimeSeries DV2(BarSeries series)
Parameters
series
BarSeries
Returns
DV2(BarSeries, int)
Returns the DV2 indicator with the specified length.
public static TimeSeries DV2(BarSeries series, int length)
Parameters
Returns
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
BarSeriesslope
boolDefaults to linear regression. Set to true to detrend using a simple slope calculation.
Returns
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
TimeSeriesslope
boolDefaults to linear regression. Set to true to detrend using a simple slope calculation.
Returns
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
Returns
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
intseries
TimeSeries[]
Returns
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
intseries
IEnumerable<BarSeries>
Returns
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
intseries
IEnumerable<TimeSeries>
Returns
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
TimeSeriesnumber
intThe number of peaks or valleys
buyThreshold
doubleLevel below which valleys must form
sellThreshold
doubleLevel above which peaks must form
strict
boolAll peaks are declining relative to one another
minDistance
intMinimum number of bars between peaks/valleys
window
intMaximum number of bars over which the divergence can form
Returns
Dmi(BarSeries, int)
Wilder's Directional Movement Index
public static TimeSeries Dmi(BarSeries series, int length)
Parameters
Returns
DmiMinus(BarSeries, int)
Wilder's Negative Directional Movement.
public static TimeSeries DmiMinus(BarSeries series, int length)
Parameters
Returns
DmiPlus(BarSeries, int)
Wilder's Positive Directional Movement.
public static TimeSeries DmiPlus(BarSeries series, int length)
Parameters
Returns
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
BarSeriestolerance
doubleThe level under which Abs(Close-Open) / (High - Low) must fall for doji to be present.
Returns
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
Exceptions
Drawdown(TimeSeries)
Percent off highest high.
public static TimeSeries Drawdown(TimeSeries series)
Parameters
series
TimeSeries
Returns
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
TimeSeriesReturn series
threshold
double[]Array of levels at which risk is reduced
buffer
doublePercent 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
boolIs risk reduction multiplicative rather than additive.
Returns
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
TimeSerieslength
int
Returns
EfficiencyRatio(TimeSeries, int)
Perry Kaufman's Efficiency Ratio
public static TimeSeries EfficiencyRatio(TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
Ema(TimeSeries, double)
Exponential moving average
public static TimeSeries Ema(TimeSeries series, double factor)
Parameters
series
TimeSeriesfactor
double
Returns
Ema(TimeSeries, int)
Exponential moving average.
public static TimeSeries Ema(this TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
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
TimeSeriesperiod
intdelta
doublefraction
doubleA multiplier applied to the peak and valleys which are then typically smoothed.
Returns
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
Periodicityprices
BarSeries[]
Returns
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
Periodicityprices
TimeSeries[]
Returns
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
Periodicityseries
IEnumerable<BarSeries>
Returns
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
Periodicityprices
IEnumerable<TimeSeries>
Returns
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
PeriodicitystartingValue
doubleseries
IEnumerable<TimeSeries>
Returns
Exp(TimeSeries)
Returns e raised to the specified values.
public static TimeSeries Exp(TimeSeries series)
Parameters
series
TimeSeries
Returns
ExponentialWma(TimeSeries, int)
Exponential weighted moving average.
public static TimeSeries ExponentialWma(TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
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
TimeSeriesbuy
doublesell
doublepercent
bool
Returns
GapDown(BarSeries, bool)
Returns true when open < previous close and optionally high < previous low.
public static BooleanSeries GapDown(BarSeries series, bool strict = false)
Parameters
Returns
Exceptions
GapUp(BarSeries, bool)
Returns true when open > previous close and optionally low > previous high.
public static BooleanSeries GapUp(BarSeries series, bool strict = false)
Parameters
Returns
Gma(TimeSeries, int)
Geometric Moving Average
public static TimeSeries Gma(TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
HangingMan(BarSeries, int)
Hanging man candlestick pattern.
public static BooleanSeries HangingMan(BarSeries series, int highLength = 10)
Parameters
Returns
Highest(TimeSeries)
Returns the highest value over the full series.
public static TimeSeries Highest(TimeSeries series)
Parameters
series
TimeSeries
Returns
Highest(TimeSeries, int)
Returns the highest value over the specified length.
public static TimeSeries Highest(this TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
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
TimeSerieslength
intn
int
Returns
Exceptions
HistoricalVolatility(BarSeries, int)
Calculates historical volatility using unadjusted prices.
public static TimeSeries HistoricalVolatility(BarSeries series, int length)
Parameters
Returns
HistoricalVolatility(BarSeries, int, int)
Calculates historical volatility using unadjusted prices.
public static TimeSeries HistoricalVolatility(BarSeries series, int length, int periodsPerYear)
Parameters
Returns
HistoricalVolatility(TimeSeries, int, int)
Historical volatility.
public static TimeSeries HistoricalVolatility(TimeSeries series, int length, int periodsPerYear = 252)
Parameters
series
TimeSerieslength
intperiodsPerYear
int
Returns
Hma(TimeSeries, int)
Hull Moving Average see www.alanhull.com.au/hma/hma.html
public static TimeSeries Hma(TimeSeries series, int length)
Parameters
series
TimeSeriesThe TimeSeries of intertest
length
intLength of calculation window
Returns
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
TimeSeriesright
TimeSeries
Returns
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
TimeSeriesvalue
double
Returns
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
TimeSeriesright
TimeSeries
Returns
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
TimeSeriesvalue
double
Returns
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
TimeSerieslength
int
Returns
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
TimeSeriesnumber
int
Returns
Exceptions
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
TimeSeriesnumber
int
Returns
Exceptions
InsideBar(BarSeries)
Returns a BooleanSeries indicating true when an inside bar is encountered.
public static BooleanSeries InsideBar(BarSeries series)
Parameters
series
BarSeries
Returns
InsideBar(BarSeries, int)
Returns a BooleanSeries with true when an inside bar is formed.
public static BooleanSeries InsideBar(BarSeries series, int length)
Parameters
series
BarSerieslength
intThe 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
Exceptions
IntradayIntensity(BarSeries)
Bostian's Intraday Intensity Index
public static TimeSeries IntradayIntensity(BarSeries series)
Parameters
series
BarSeries
Returns
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
InvertedHammer(BarSeries, int)
Inverted hammer
public static BooleanSeries InvertedHammer(BarSeries series, int lowLength = 10)
Parameters
Returns
IslandBottom(BarSeries)
Island bottom.
public static BooleanSeries IslandBottom(BarSeries series)
Parameters
series
BarSeries
Returns
IslandTop(BarSeries)
Island top
public static BooleanSeries IslandTop(BarSeries series)
Parameters
series
BarSeries
Returns
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
TimeSerieslength
intfastLength
intslowLength
int
Returns
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
BarSerieslength
intfactor
doubleuseRange
boolWhen true, use the High-Low range per the original formula instead of ATR.
Returns
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
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
Lag(BooleanSeries, int)
Lags a series by the specified number of bars.
public static BooleanSeries Lag(this BooleanSeries series, int offset = 1)
Parameters
series
BooleanSeriesoffset
int
Returns
Lag(IntegerSeries, int)
Lags a series by the specified number of bars.
public static IntegerSeries Lag(this IntegerSeries series, int offset = 1)
Parameters
series
IntegerSeriesoffset
int
Returns
Lag(TimeSeries, int)
Lag a series by a specified number of bars.
public static TimeSeries Lag(this TimeSeries series, int offset = 1)
Parameters
series
TimeSeriesoffset
int
Returns
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
TimeSeriesoffset
int
Returns
LinRegLine(TimeSeries, int)
Returns a rolling linear regression line of the specified length.
public static TimeSeries LinRegLine(TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
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
TimeSerieslength
intprojection
int
Returns
Log(TimeSeries, double)
Natural (base e) log.
public static TimeSeries Log(TimeSeries series, double logBase = 2.718281828459045)
Parameters
series
TimeSerieslogBase
double
Returns
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
Returns
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
TimeSerieslength
intlogBase
double
Returns
Lowest(TimeSeries)
Returns the lowest low over the full series.
public static TimeSeries Lowest(TimeSeries series)
Parameters
series
TimeSeries
Returns
Lowest(TimeSeries, int)
Returns the lowest value over the specified length.
public static TimeSeries Lowest(this TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
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
TimeSerieslength
intn
int
Returns
Exceptions
Macd(TimeSeries, int, int)
Appel's moving average convergence divergence.
public static TimeSeries Macd(TimeSeries series, int fastLength = 12, int slowLength = 26)
Parameters
series
TimeSeriesfastLength
intslowLength
int
Returns
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
TimeSerieslength
int
Returns
Max(SyncOption, params TimeSeries[])
Returns the cross-sectional maximum across multiple timeseries.
public static TimeSeries Max(SyncOption syncOption, params TimeSeries[] series)
Parameters
syncOption
SyncOptionseries
TimeSeries[]
Returns
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
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
Mean(TimeSeries)
Returns the mean value of the specified series using an expanding window.
public static TimeSeries Mean(TimeSeries series)
Parameters
series
TimeSeries
Returns
MeanDeviation(TimeSeries, int)
Mean Absolute Deviation
public static TimeSeries MeanDeviation(TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
Median(TimeSeries, int)
Median
public static TimeSeries Median(this TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
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
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
Midpoint(BarSeries)
Midpoint.
public static TimeSeries Midpoint(BarSeries series)
Parameters
series
BarSeries
Returns
Midpoint(TimeSeries, TimeSeries)
Midpoint.
public static TimeSeries Midpoint(TimeSeries high, TimeSeries low)
Parameters
high
TimeSerieslow
TimeSeries
Returns
Min(SyncOption, params TimeSeries[])
Returns the cross-sectional minimum across multiple timeseries.
public static TimeSeries Min(SyncOption syncOption, params TimeSeries[] series)
Parameters
syncOption
SyncOptionseries
TimeSeries[]
Returns
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
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
Momentum(TimeSeries, int)
Momentum. Simple price change over specified length of bars.
public static TimeSeries Momentum(this TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
MoneyFlowIndex(BarSeries, int)
Returns the Money Flow Index (essentially a volume weighted RSI).
public static TimeSeries MoneyFlowIndex(BarSeries series, int length)
Parameters
Returns
MonthHigh(TimeSeries)
Returns the highest value over the course of a calendar month.
public static TimeSeries MonthHigh(TimeSeries series)
Parameters
series
TimeSeries
Returns
Exceptions
MonthLow(TimeSeries)
Returns the lowest value over the course of a calendar month.
public static TimeSeries MonthLow(TimeSeries series)
Parameters
series
TimeSeries
Returns
Exceptions
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
BarSeriespoints
boolTrue to return points instead of percent, the default.
strict
boolTrue 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
Exceptions
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
BarSerieslength
intBy 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
Exceptions
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
Returns
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
TimeSeriesmanagementFee
doubleperformanceFee
doublecrystallization
PeriodicityHow frequently fees incentive fees are paid to the manager.
Returns
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
TimeSeriestargetVolatility
doubleanchored
boolWhen true an anchored window is used with no lookahead. When false (default), the full dataset is used with hindsight.
Returns
OnBalanceVolume(BarSeries)
Granville's OnBalanceVolume
public static TimeSeries OnBalanceVolume(BarSeries series)
Parameters
series
BarSeries
Returns
OnBalanceVolume(TimeSeries, TimeSeries)
Granville's OnBalanceVolume
public static TimeSeries OnBalanceVolume(TimeSeries close, TimeSeries volume)
Parameters
close
TimeSeriesvolume
TimeSeries
Returns
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
TimeSerieslength1
intlength2
int
Returns
OutsideBar(BarSeries)
Returns a BooleanSeries indicating true if an outside bar is encountered.
public static BooleanSeries OutsideBar(BarSeries series)
Parameters
series
BarSeries
Returns
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
Returns
Exceptions
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
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
Returns
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
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
Returns
PercentChange(TimeSeries)
One period percent change.
public static TimeSeries PercentChange(this TimeSeries series)
Parameters
series
TimeSeries
Returns
PercentChange(TimeSeries, int)
Percent change over specified number of bars.
public static TimeSeries PercentChange(this TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
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
Returns
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
Returns
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
TimeSeriespct
double
Returns
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
TimeSeriesbuyPct
doublesellPct
double
Returns
PercentRank(TimeSeries)
Returns the percentile ranking of an observation versus all prior history.
public static TimeSeries PercentRank(TimeSeries series)
Parameters
series
TimeSeries
Returns
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
TimeSerieslength
int
Returns
Percentile(TimeSeries, double)
Returns the specified percentile using all previous data.
public static TimeSeries Percentile(TimeSeries series, double percentile)
Parameters
series
TimeSeriespercentile
double
Returns
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
TimeSeriespercentile
doublelength
int
Returns
PivotHigh(TimeSeries, int)
Pivot high.
public static TimeSeries PivotHigh(TimeSeries series, int length)
Parameters
series
TimeSerieslength
intNumber of bars on either side of the pivot high.
Returns
PivotHigh(TimeSeries, int, int)
Pivot high.
public static TimeSeries PivotHigh(TimeSeries series, int length, int maxWidth)
Parameters
series
TimeSerieslength
intNumber of bars on either side of the pivot high.
maxWidth
intMax number of consecutive bars equal to the high.
Returns
PivotHighBar(TimeSeries, int)
Returns the number of bars since the last pivot high.
public static TimeSeries PivotHighBar(TimeSeries series, int length)
Parameters
series
TimeSerieslength
intNumber of bars onn either side of the pivot high.
Returns
PivotHighBar(TimeSeries, int, int)
Number of bars since last pivot high.
public static TimeSeries PivotHighBar(TimeSeries series, int length, int maxWidth)
Parameters
series
TimeSerieslength
intNumber of bars on either side of the pivot high
maxWidth
intMax number of consecutive bars equal to the high
Returns
PivotLow(TimeSeries, int)
Pivot low.
public static TimeSeries PivotLow(TimeSeries series, int length)
Parameters
series
TimeSerieslength
intNumber of bars on either side of the pivot low.
Returns
PivotLow(TimeSeries, int, int)
Pivot low
public static TimeSeries PivotLow(TimeSeries series, int length, int maxWidth)
Parameters
series
TimeSerieslength
intNumber of bars on either side of the pivot low.
maxWidth
intMax number of consecutive bars equal to the low.
Returns
PivotLowBar(TimeSeries, int)
Returns the number of bars since the last pivot low.
public static TimeSeries PivotLowBar(TimeSeries series, int length)
Parameters
series
TimeSerieslength
intNumber of bars on either side of the pivot low.
Returns
PivotLowBar(TimeSeries, int, int)
Number of bars since the last pivot low
public static TimeSeries PivotLowBar(TimeSeries series, int length, int maxWidth)
Parameters
series
TimeSerieslength
intNumber of bars on either side of the pivot low.
maxWidth
intMax number of consecutive bars equal to the low.
Returns
PivotPoints(BarSeries)
Gets a TimeSeriesCollection of pivot points R1, R2, R3, S1, S2 & S3.
public static TimeSeriesCollection PivotPoints(BarSeries series)
Parameters
series
BarSeries
Returns
Power(TimeSeries, double)
Raises a series to the specified power.
public static TimeSeries Power(TimeSeries series, double power)
Parameters
series
TimeSeriespower
double
Returns
PriceVolumeTrend(BarSeries)
Price-volume trend.
public static TimeSeries PriceVolumeTrend(BarSeries series)
Parameters
series
BarSeries
Returns
PriceVolumeTrend(TimeSeries, TimeSeries)
Price-volume trend.
public static TimeSeries PriceVolumeTrend(TimeSeries price, TimeSeries volume)
Parameters
price
TimeSeriesvolume
TimeSeries
Returns
Range(BarSeries)
Returns a Timeseries of the high minus the low.
public static TimeSeries Range(BarSeries series)
Parameters
series
BarSeries
Returns
Range(BarSeries, int)
Returns the highest high minus the lowest low over the specified lookback.
public static TimeSeries Range(BarSeries series, int lookback)
Parameters
Returns
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
TimeSerieslow
TimeSerieslookback
int
Returns
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
TimeSerieslookback
int
Returns
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
TimeSeriesshortLength
intlongLength
int
Returns
Rebase(BarSeries, double)
Returns a BarSeries rebased to the specified starting value.
public static BarSeries Rebase(BarSeries series, double startingValue = 100)
Parameters
Returns
Rebase(TimeSeries, double)
Returns a TimeSeries rebased to the specified starting value.
public static TimeSeries Rebase(this TimeSeries series, double startingValue = 100)
Parameters
series
TimeSeriesstartingValue
double
Returns
Regression(TimeSeries)
Simple linear regression over the entire timeseries.
public static RegressionResult Regression(TimeSeries series)
Parameters
series
TimeSeries
Returns
Regression(TimeSeries, TimeSeries)
Simple linear regression
public static RegressionResult Regression(TimeSeries dependent, TimeSeries independent)
Parameters
dependent
TimeSeriesindependent
TimeSeries
Returns
Regression(TimeSeries, TimeSeries, int)
Simple linear regression.
public static RegressionSeries Regression(TimeSeries dependent, TimeSeries independent, int length)
Parameters
dependent
TimeSeriesThe dependent or y variable.
independent
TimeSeriesThe independent or x variable.
length
intUse 0 to run on all data.
Returns
Regression(TimeSeries, int)
Simple linear regression over a fixed lookback.
public static RegressionSeries Regression(TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
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
TimeSerieslength
intlookback
int
Returns
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
Returns
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
TimeSeriesmin
doublemax
double
Returns
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
TimeSeriesmin
doublemax
double
Returns
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
Returns
Roc(TimeSeries, int)
Rate of change.
public static TimeSeries Roc(this TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
Round(TimeSeries, int)
Rounds a timeseries to the specified number of digits.
public static TimeSeries Round(this TimeSeries series, int digitsToRound)
Parameters
series
TimeSeriesdigitsToRound
int
Returns
Rsi(TimeSeries, int)
Wilder's Relative Strength Index.
public static TimeSeries Rsi(this TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
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
BarSeriesdetrend
boolDivide VAMI by average. False for raw VAMI
calendarDays
boolWhen true use calendar day instead of trading day of the year.
Returns
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
BarSeriesdetrend
boolDetrends each individual year using a simple slope calculation.
adjustGap
boolAdjust for gap in seasonal index at the beginning of a new year. Only used when detrend is false.
outlierThresold
doubleThe number of standard deviations at which to winsorize outliers. Set to NaN to disable.
updateForecast
boolWhen 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
boolWhen true use calendar day instead of trading day of the year.
Returns
SharpeRatio(TimeSeries)
Calculates the Sharpe Ratio for the specified return series.
public static double SharpeRatio(TimeSeries series)
Parameters
series
TimeSeries
Returns
SharpeRatio(TimeSeries, int)
Calculates a rolling Sharpe Ratio for the specified return series.
public static TimeSeries SharpeRatio(TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
ShootingStar(BarSeries, int)
Shooting star
public static BooleanSeries ShootingStar(BarSeries series, int highLength = 10)
Parameters
Returns
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
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
TimeSerieslength
int
Returns
SlowD(BarSeries, int)
Stochastics SlowD
public static TimeSeries SlowD(BarSeries series, int length)
Parameters
Returns
SlowD(TimeSeries, TimeSeries, TimeSeries, int)
Stochastics SlowD
public static TimeSeries SlowD(TimeSeries high, TimeSeries low, TimeSeries close, int length)
Parameters
high
TimeSerieslow
TimeSeriesclose
TimeSerieslength
int
Returns
SlowK(BarSeries, int)
Stochastics SlowK
public static TimeSeries SlowK(BarSeries series, int length)
Parameters
Returns
SlowK(TimeSeries, TimeSeries, TimeSeries, int)
Stochastics SlowK
public static TimeSeries SlowK(TimeSeries high, TimeSeries low, TimeSeries close, int length)
Parameters
high
TimeSerieslow
TimeSeriesclose
TimeSerieslength
int
Returns
Sma(TimeSeries, int)
Simple Moving Average
public static TimeSeries Sma(this TimeSeries series, int length)
Parameters
series
TimeSeriesThe timeseries to use.
length
intThe number of bars used in the calculation.
Returns
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
TimeSerieslength
int
Returns
SmoothedMovingAverage(TimeSeries, int)
Smoothed Simple Moving Average
public static TimeSeries SmoothedMovingAverage(TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
SoftMax(TimeSeries, double, int)
Returns the softmax transformation of the specified series.
public static TimeSeries SoftMax(TimeSeries series, double lambda, int length)
Parameters
series
TimeSeriesThe series to transform.
lambda
doubleThe 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
intThe length of the standard deviation calculation.
Returns
SpearmanIndicator(TimeSeries, int)
Returns the Spearman Ranked Correlation indicator using the specified length.
public static TimeSeries SpearmanIndicator(TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
Exceptions
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
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
boolWhen true, a multiplicative adjustment will be applied to the first overlapping value such that they are equal.
series
BarSeries[]
Returns
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
boolWhen true, a multiplicative adjustment will be applied to the first overlapping value such that they are equal.
series
TimeSeries[]
Returns
Sqrt(TimeSeries)
Square root
public static TimeSeries Sqrt(TimeSeries series)
Parameters
series
TimeSeries
Returns
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
Exceptions
StandardDeviation(TimeSeries, int, bool, bool)
Standard deviation.
public static TimeSeries StandardDeviation(this TimeSeries series, int length, bool population = false, bool exponentialSmoothing = false)
Parameters
series
TimeSerieslength
intpopulation
boolTrue for population standard deviation. n.b. TradeStation use population std. dev. for BollingerBand calculation.
exponentialSmoothing
boolTrue for exponential smoothing
Returns
StandardDeviationLog(TimeSeries, int)
Standard deviation of log of P[t]/P[t-1].
public static TimeSeries StandardDeviationLog(TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
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
SyncOptionseries
TimeSeries[]
Returns
StdDev(params TimeSeries[])
Returns the cross-sectional standard deviation of the specified TimeSeries.
public static TimeSeries StdDev(params TimeSeries[] series)
Parameters
series
TimeSeries[]
Returns
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
Stochastic(BarSeries, int)
Raw stochastic.
public static TimeSeries Stochastic(this BarSeries series, int length)
Parameters
Returns
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
Returns
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
Returns
Stochastic(TimeSeries, TimeSeries, TimeSeries, int)
Raw stochastic.
public static TimeSeries Stochastic(TimeSeries high, TimeSeries low, TimeSeries close, int length)
Parameters
high
TimeSerieslow
TimeSeriesclose
TimeSerieslength
int
Returns
Stochastic(TimeSeries, int)
Raw stochastic of a timeseries.
public static TimeSeries Stochastic(this TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
Sum(SyncOption, params TimeSeries[])
Returns the cross-sectional sum of the specified Timeseries.
public static TimeSeries Sum(SyncOption syncOption, params TimeSeries[] series)
Parameters
syncOption
SyncOptionseries
TimeSeries[]
Returns
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
SyncOptionweights
double[]series
TimeSeries[]
Returns
Sum(TimeSeries, int)
Returns a rolling sum over the past n periods.
public static TimeSeries Sum(this TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
Sum(params TimeSeries[])
Returns the cross-sectional sum of the specified TimeSeries.
public static TimeSeries Sum(params TimeSeries[] series)
Parameters
series
TimeSeries[]
Returns
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
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
TimeSeriesfastLength
intslowLength
intfastRoc
intslowRoc
int
Returns
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
BarSeriesThe BarSeries
atrLength
intThe length of the ATR calculation (default = 21)
atrCoefficient
doubleThe coefficient by which to multiply ATR. Higher numbers are more restrictive.
extreme
doubleThe 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
TrendLineHigh(TimeSeries, int)
Returns a trend line value based on trailing two pivot highs.
public static TimeSeries TrendLineHigh(TimeSeries series, int pivotLength)
Parameters
series
TimeSeriespivotLength
int
Returns
TrendLineLow(TimeSeries, int)
Returns a trend line based on the trailing two pivot lows.
public static TimeSeries TrendLineLow(TimeSeries series, int pivotLength)
Parameters
series
TimeSeriespivotLength
int
Returns
Trix(TimeSeries, int)
Returns a triple smoothed exponential moving average of the specified series.
public static TimeSeries Trix(TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
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
TimeSerieslength1
intlength2
intlength3
int
Returns
TrueRange(BarSeries)
True range.
public static TimeSeries TrueRange(this BarSeries series)
Parameters
series
BarSeries
Returns
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
TrueRange(TimeSeries, TimeSeries, TimeSeries)
True range.
public static TimeSeries TrueRange(TimeSeries high, TimeSeries low, TimeSeries close)
Parameters
high
TimeSerieslow
TimeSeriesclose
TimeSeries
Returns
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
TimeSeriesr
intmomentum smoothing
s
intsecondary smoothing
u
intoptional third smoothing
Returns
TypicalPrice(BarSeries)
Typical price. The average of the high, low, and close.
public static TimeSeries TypicalPrice(BarSeries series)
Parameters
series
BarSeries
Returns
TypicalPrice(TimeSeries, TimeSeries, TimeSeries)
Typical price.
public static TimeSeries TypicalPrice(TimeSeries high, TimeSeries low, TimeSeries close)
Parameters
high
TimeSerieslow
TimeSeriesclose
TimeSeries
Returns
VWAP(BarSeries, int)
Volume weighted moving average.
public static TimeSeries VWAP(BarSeries series, int length)
Parameters
Returns
VWAP(TimeSeries, TimeSeries, int)
Volume weighted moving average.
public static TimeSeries VWAP(TimeSeries price, TimeSeries volume, int length)
Parameters
price
TimeSeriesvolume
TimeSerieslength
int
Returns
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
TimeSeriesstartingLevel
double
Returns
VarianceRatio(BarSeries, int, int)
Returns the Lo-MacKinlay Variance Ratio.
public static TimeSeries VarianceRatio(BarSeries series, int length, int lookback = 5)
Parameters
Returns
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
TimeSerieslength
int
Returns
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
Returns
Winsorize(IntegerSeries, int, int)
Winsorize an integer series (truncate outliers)
public static IntegerSeries Winsorize(IntegerSeries series, int min, int max)
Parameters
series
IntegerSeriesmin
intmax
int
Returns
Winsorize(TimeSeries, double, double)
Winsorize a series (truncate outliers)
public static TimeSeries Winsorize(TimeSeries series, double min, double max)
Parameters
series
TimeSeriesmin
doublemax
double
Returns
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
BooleanSerieslookback
int
Returns
Wma(TimeSeries, int)
Weighted Moving Average
public static TimeSeries Wma(TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
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
BarSeriespoints
boolTrue to return points instead of percent, the default.
strict
boolTrue 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
Exceptions
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
ZScore(TimeSeries, int)
Z-score
public static TimeSeries ZScore(this TimeSeries series, int length)
Parameters
series
TimeSerieslength
int
Returns
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
TimeSerieslength
intmean
TimeSeries
Returns
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
TimeSerieslength
intmean
double
Returns
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
TimeSerieslength
intpenaltyThreshold
double
Returns
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
Returns
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
Returns
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
TimeSeriespercent
double
Returns
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
TimeSeriesbuy
doublesell
doublepoints
boolSet to true to calculate in points instead of percents.