Platform Indicators

Current indicators on the platform and their source code from TA-Lib: Technical Analysis Library.

Indicator Values

The indicators used by the bots are supplied wholly by the vetted open-source library, TA-Lib. For the curious, all function definitions and inputs are available in the downloadable source code. The definitions for each indicator may differ slightly from their interpretation in some brokerage platforms. The difference is brokers don't provide the source code - we do.

All historical daily indicators in the auto trading platform are cached pre-market based on yesterday's close which makes an indicator a true N-day indicator.

The autotrading platform's indicators are based on a Daily (D) time frame.

The intraday option on the daily indicator shifts all indicator bars forward and instead of using the most recent close as the final daily bar, it uses the current market price. This interpretation is more in-line with how a brokerage might display values on its platform.

Example: RSI(30) would use the 29 days (N-1) of EOD (end of day) prices and the 30th value (Nth) would be the intraday price at the time the automation is run.

A true intraday indicator would be plotted using an aggregation period, or time-series, of less than 1 day and use a lookback function to match the time series. Example: If you plotted a 30 period RSI on a 15-minute chart, your lookback would include the last 30, 15-minute bars.

IV Rank

Implied Volatility (IV) is the parameter component of an option pricing model, such as the Black-Scholes model, which gives the market price of an option. Implied volatility shows how the marketplace views where volatility should be in the future.

IV Rank is describing how the IV relates to where it has been over the past year (52 weeks) by the formula:

The IV Rank of each security is calculated every morning and cached for use by the bots throughout the day. This data is supplied directly from our data provider. Implied Volatility is derived using the analytical formulas of the Black-Scholes model. Model-free price and implied rates are used as an input parameters to the model.

The IVR number produced by the autotrading platform is provided directly by the data provider and may vary from your brokerage platform. This is due to the brokerage making its own proprietary calculations.  

Discrepancies in IVR

Although the IVR calculation is only comprised of 3 data points, you may notice variance between the reported IVR values by the bots, values reported by brokers, or values reported by other volatility sources. The reason why is two-fold.

Recall that implied volatility is not directly observable, and is therefore a derived metric usually calculated using a closed-form options pricing model. The biggest unknown is the proprietary pricing model that's being applied to the raw data to derive IV by each IVR source.

There are many pricing models to choose from: BSM, Binomial, Trinomial, finite difference, Monte-Carlo, or even the ultra-academic "model-free" methods. Depending on which model is used, the reported implied volatility values are going to differ. Volatility sources rarely state which model is being used in the calculation.

The primary reason for the difference in calculations has to do with where those black box IV calculations place the high and low IV over the last 52 weeks, or 252 trading days. The IVR reported by the bots uses the high/low implied volatility from the set of all instantaneous IV tracked over the last 252 trading days. In other words, all intraday recorded IV is considered, which yields a much more accurate value for IVR.

In contrast, other sources may use only the daily closing IV value over 252 trading days, then determine the high and low from that data set. It is also possible other sources are using the daily average, the high/low weekly average over 52 weeks, etc.

Unless both the pricing model and the method of high/low determination are known, it is very difficult to compare IVR from different sources.


This compares the current real-time reading of the VIX to the referenced value. The VIX is a real-time market index representing the market’s expectations for volatility over the coming 30 days.

The CBOE VIX index is a benchmark index where expected future volatility is calculated based on put and call option pricing in the S&P 500 index (SPX options). The VIX index is a 30-day representation of volatility expectations for the S&P 500.

More Information on VIX


Volume is not a cached N-day indicator and is measured in real-time on a daily basis and displayed as the current day's cumulative volume. This cumulative volume will build throughout the day as more shares or contracts are traded.

Std Dev

Standard Deviation can be used as part of the decision recipe for [Symbol] price [increased] [2 std devs] since [1 day ago]

This decision is asking the following question, what is the 30-day std dev on the underlying? How does the price difference between dates X and Y compare to the sd30? The answer is read as, "The price move during the period in question encompassed the equivalent of 1.00 standard deviations"

Platform Indicators

Average Directional Index - The average directional index (ADX) is a technical analysis indicator used by some traders to determine the strength of a trend. According to the creator Welles Wilder, the trend has strength when ADX is above 25 and the trend is weak or the price is trendless when ADX is below 20. Non-trending values do not necessarily mean the price isn't moving, it very well could be, but the price could also be making a trend change or is too volatile for a clear direction to be present.ADX is considered a non-directional indicator and registers trend whether the price is going up or down. The default setting is 14 bars, although other time periods can be used to increase or decrease the trend strength reading. ADX is plotted as a single line with values ranging from a low of 0 to a high of 100.

The source code for the ADX function is available here.

The Average True Range (ATR) is a technical indicator of volatility based on the average of a particular set of trading ranges over a defined number of periods. The ATR is the average of the true range for a set of periods. The greatest of one of three ranges is calculated as the true range for a period: the current high minus the current low, the current high minus the previous period’s close, or the current low minus the previous close.

Once the true range is calculated, the average for a set lookback period is taken, typically 14 periods. A decline in ATR indicates a decrease in recent volatility. An increase in ATR indicates an increase in recent volatility.

The source code for the ATR function is available here.

Bollinger Bands are a chart overlay, volatility indicator that show the upper and lower range of normal price movement based on standard deviation.

The centerline of Bollinger bands is typically a 20-day simple moving average. The upper and lower bands are twice the 20-day standard deviation of price above and below the centerline.

Source code for the Bollinger Bands (BBANDS) function is available here.

The Balance of Power indicator (BOP) measures the strength of buyers have to push prices higher against the power of sellers to move prices lower. When the indicator is in positive territory, the bulls are in charge; and conversely, the sellers control price when the indicator is negative. A reading near the zero line indicates a balance between the two and a possible trend reversal.

The source code for the BOP function is available here.

Some trading platforms offer a version of BOP with a moving average added and others do not. We offer Balance of Power exactly as TA-Lib provides without a moving average. As a result, when using BOP inside of your bots, there will be no difference in the value provided when assessing different lookback intervals.

The Commodity Channel Index​ (CCI) is a momentum-based oscillator used to help determine when an investment vehicle is reaching a condition of being overbought or oversold. This technical indicator measures the difference between the current price and the historical average. It assesses trend direction and strength, allowing traders to determine if they want to enter, exit, or avoid placing a trade.

The source code for the CCI function is available here.

The Chande Momentum Oscillator is a technical momentum developed by Tushar Chande. His formula calculates the difference between the sum of recent gains and the sum of recent losses and then divides the result by the sum of all price movements over the same time period.

The indicator oscillates between +100 and -100 and is similar to other momentum indicators such as Welles Wilder’s RSI. It measures momentum on both up and down days and does not smooth results. This method triggers more frequent oversold and overbought occurrences.

An instrument is considered to be overbought when the Chande momentum oscillator is above +50 and oversold when it is below -50. The oscillator can be used as a confirmation signal when it crosses above or below the 0 line. Trend strength can also be measured using the CMO as the oscillator's value denotes the strength or weakness of the expected trend. Bear in mind that the chosen time frame will affect the signals generated by the indicator.

The source code for the CMO function is available here.

The Directional Movement Index (DX) is an indicator that identifies which direction the price of an asset is moving. The DX indicator is generally part of the Directional Movement Index (DMI)The indicator functions by comparing prior highs and lows and drawing two lines. A negative directional movement line (-DI) and a positive directional movement line (+DI). An optional third line called the Directional Index (DX) or sometimes Average Directional Index (ADX) can also be used to gauge the strength of the uptrend or downtrend.

The source code for the DX function is available here.

An Exponential Moving Average (EMA) is the weighted average of a set of data points where new data points receive greater weight in the average calculation. An exponential moving average is a technical indicator of a trend that responds faster to new data points than a simple moving average because a multiplier is used to give preference to the new data points and reduce lag in responsiveness to price movements.

The source code for the EMA function is available here.

The Kaufman Adaptive Moving Average (KAMA) indicator belongs to the group of adaptive moving averages. Like all moving averages, the KAMA can be used to visualize the trend. This powerful trend-following indicator is based around the Exponential Moving Average (EMA) and is responsive to both trend and volatility. It closely follows price when noise is low and attempts to smooth out market noise when price fluctuates.

The source code for the KAMA function is available here.

The Moving Average Convergence/Divergence (MACD) is a technical indicator of momentum that uses moving averages to determine a trend’s strength. The MACD uses three exponential moving averages (a short term, a long term, and the average difference between the short and long term) to show price momentum.

The source code for the MACD function is found here.

The Money Flow Index (MFI) is a technical indicator that generates overbought or oversold signals using both price and volume data. An MFI reading above 80 is considered overbought and an MFI reading below 20 is considered oversold. MFI levels of 90 and 10 are also used as thresholds.

The source code for the MFI function is available here.

The Momentum Indicator (MOM) is a leading indicator measuring a security's rate of change. It compares the current price with the previous price from a number of periods ago. The plot forms an oscillator that moves above and below 0. It is an unbounded oscillator with no lower or upper limit.

The source code for the MOM function is available here.

Rate of change (ROC) is a technical indicator of momentum that measures the percentage change in price from period to period. Rate of change is also referred to as “momentum” and is often used to confirm trends. For example, when a security reaches a new high but the rate of change does not, then there is a negative divergence between price and momentum.

The source code for the ROC function is available here.

The Relative Strength Index (RSI) is a technical indicator of momentum that measures the speed and change of price on a scale of 0 to 100, typically over the past 14 periods. Readings over 70 are considered overbought while readings below 30 are considered oversold.

The source code for the RSI function is available here.

A Simple Moving Average (SMA) is an arithmetic average of a set of data points where each data point is added together and then divided by the total number of data points. For example, a 10-period simple moving average finds the closing price of the last 10-periods, sums the 10 closing prices, and divides by 10 to calculate the average closing price of the previous 10 periods. New periods are then added to the calculation and the oldest period is deleted from the calculation.

The source code for the SMA function is available here.

The Stochastic Oscillator is a technical indicator of momentum that shows where the closing price for a period fits in the relative high-low range of a lookback period, typically 14 periods.

The stochastic oscillator expresses the closing price for a period as a percentage of the recent high and low for a security. The most recent closing price is the most important data point in the calculation.

The stochastic oscillator is plotted as two lines. The first line is the current stochastic oscillator percentage value, and the second line is a three-day simple moving average of the percentage value. These are known as %K and %D, respectively.

Source code for the Stochastic Oscillator function is available here.

The Triangular Moving Average (TRIMA) represents an average of prices but places weight on the middle prices of the time period. The calculations double-smooths the data using a window width that is one-half the length of the series.

The source code for the TRIMA function is available here.

Was this helpful?


Related articles