tindicators

Quick start

pip install tindicators
from tindicators import ti

Example usage:

>>> import numpy as np
>>> ti.sma(np.arange(10), 3)
array([nan, nan,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.])

List of available indicators

There are currently 161 indicators available in tindicators v0.9.12.

Double Exponential Moving Average

Source: Technical Analysis from A to Z
Implementation: dema.cc
Signature:

ti.dema(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    dema = np.ndarray
)

Exponential Moving Average

Source: Technical Analysis from A to Z
Implementation: ema.cc
Signature:

ti.ema(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    ema = np.ndarray
)

Hampel Filter on Simple Moving Average

Source: Pearson, Neuvo, Astola, Gabbouj, Generalized Hampel Filters
Implementation: hfsma.cc
Signature:

ti.hfsma(
    series: np.ndarray,
    sma_period,
    k,
    threshold
) -> NamedTuple(...,
    hfsma = np.ndarray
)

Hull Moving Average

Source: -
Implementation: hma.cc
Signature:

ti.hma(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    hma = np.ndarray
)

Hampel Filter on Exponential Moving Average

Source: Pearson, Neuvo, Astola, Gabbouj, Generalized Hampel Filters
Implementation: hfema.cc
Signature:

ti.hfema(
    series: np.ndarray,
    ema_period,
    k,
    threshold
) -> NamedTuple(...,
    hfema = np.ndarray
)

Simple Moving Average

Source: Technical Analysis from A to Z
Implementation: sma.cc
Signature:

ti.sma(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    sma = np.ndarray
)

Laguerre Filter

Source: Ehlers, Time Warp - Without Space Travel
Implementation: lf.cc
Signature:

ti.lf(
    series: np.ndarray,
    gamma
) -> NamedTuple(...,
    lf = np.ndarray
)

Recursive Median Filter

Source: Stocks & Commodities V. 36:03 (8–11): Recursive Median Filters by John F. Ehlers
Implementation: rmf.cc
Signature:

ti.rmf(
    series: np.ndarray,
    critical_period,
    median_period
) -> NamedTuple(...,
    rmf = np.ndarray
)

MESA Adaptive Moving Average

Source: Ehlers. Rocket Science for Traders, pp. 182-183
Implementation: mama.cc
Signature:

ti.mama(
    series: np.ndarray,
    fastlimit,
    slowlimit
) -> NamedTuple(...,
    mama = np.ndarray,
    fama = np.ndarray
)

Regularized Exponential Moving Average

Source: Satchwell. Regularization. Stocks & Commodities V. 21:7 (38-41)
Implementation: rema.cc
Signature:

ti.rema(
    series: np.ndarray,
    period,
    lambda
) -> NamedTuple(...,
    rema = np.ndarray
)

Triple Exponential Moving Average

Source: Technical Analysis from A to Z
Implementation: tema.cc
Signature:

ti.tema(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    tema = np.ndarray
)

Triangular Moving Average

Source: Technical Analysis from A to Z
Implementation: trima.cc
Signature:

ti.trima(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    trima = np.ndarray
)

Variable Index Dynamic Average

Source: -
Implementation: vidya.cc
Signature:

ti.vidya(
    series: np.ndarray,
    short period,
    long period,
    alpha
) -> NamedTuple(...,
    vidya = np.ndarray
)

Volume Weighted Moving Average

Source: -
Implementation: vwma.cc
Signature:

ti.vwma(
    close: np.ndarray,
    volume: np.ndarray,
    period
) -> NamedTuple(...,
    vwma = np.ndarray
)

Volume Weighted Average Price

Source: -
Implementation: vwap.cc
Signature:

ti.vwap(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    volume: np.ndarray,
    period
) -> NamedTuple(...,
    vwap = np.ndarray
)

Wilders Smoothing

Source: Technical Analysis from A to Z
Implementation: wilders.cc
Signature:

ti.wilders(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    wilders = np.ndarray
)

Weighted Moving Average

Source: Technical Analysis from A to Z
Implementation: wma.cc
Signature:

ti.wma(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    wma = np.ndarray
)

Zero-Lag Exponential Moving Average

Source: -
Implementation: zlema.cc
Signature:

ti.zlema(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    zlema = np.ndarray
)

Recursive Moving Trend Average

Source: Meyers. The Japanese Yen, Recursed
Implementation: rmta.cc
Signature:

ti.rmta(
    series: np.ndarray,
    period,
    beta
) -> NamedTuple(...,
    rmta = np.ndarray
)

Gaussian Filter - 1 Pole

Source: Gaussian and Other Low Lag Filters - John Ehlers
Implementation: gf1.cc
Signature:

ti.gf1(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    gf1 = np.ndarray
)

Gaussian Filter - 2 Poles

Source: Gaussian and Other Low Lag Filters - John Ehlers
Implementation: gf2.cc
Signature:

ti.gf2(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    gf2 = np.ndarray
)

Gaussian Filter - 3 Poles

Source: Gaussian and Other Low Lag Filters - John Ehlers
Implementation: gf3.cc
Signature:

ti.gf3(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    gf3 = np.ndarray
)

Gaussian Filter - 4 Poles

Source: Gaussian and Other Low Lag Filters - John Ehlers
Implementation: gf4.cc
Signature:

ti.gf4(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    gf4 = np.ndarray
)

Exponential Hull Moving Average

Source: Raudys, A., Lenčiauskas, V., & Malčius, E. (2013). Moving Averages for Financial Data Smoothing. Information and Software Technologies, 34–45. doi:10.1007/978-3-642-41947-8_4
Implementation: ehma.cc
Signature:

ti.ehma(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    ehma = np.ndarray
)

Elastic Volume Weighted Moving Average

Source: The Distribution of Share Prices and Elastic Time and Volume Weighted Moving Averages, Christian P. Fries, preprint
Implementation: evwma.cc
Signature:

ti.evwma(
    close: np.ndarray,
    volume: np.ndarray,
    period,
    gamma
) -> NamedTuple(...,
    evwma = np.ndarray
)

Leo Moving Average

Source: LEO MOVING AVERAGE + SUPPORT/RESISTANCE
Implementation: lma.cc
Signature:

ti.lma(
    close: np.ndarray,
    period
) -> NamedTuple(...,
    lma = np.ndarray
)

Power Weighted Moving Average

Source: -
Implementation: pwma.cc
Signature:

ti.pwma(
    series: np.ndarray,
    period,
    power
) -> NamedTuple(...,
    pwma = np.ndarray
)

Sine Weighted Moving Average

Source: Raudys, A., Lenčiauskas, V., & Malčius, E. (2013). Moving Averages for Financial Data Smoothing. Information and Software Technologies, 34–45. doi:10.1007/978-3-642-41947-8_4
Implementation: swma.cc
Signature:

ti.swma(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    swma = np.ndarray
)

Double Weighted Moving Average

Source: Stocks & Commodities V. 12:1 (11-19): Smoothing Data With Faster Moving Averages by Patrick G. Mulloy
Implementation: dwma.cc
Signature:

ti.dwma(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    dwma = np.ndarray
)

Sharp Modified Moving Average

Source: V.18:1 (56-60): More Responsive Moving Averages by Joe Sharp,Ph.D.
Implementation: shmma.cc
Signature:

ti.shmma(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    shmma = np.ndarray
)

Ahrens Moving Average

Source: Stocks & Commodities V. 31:10 (26-30): Build A Better Moving Average by Richard D. Ahrens
Implementation: ahma.cc
Signature:

ti.ahma(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    ahma = np.ndarray
)

T3 Moving Average

Source: V.16:1 (33-37): Smoothing Techniques For More Accurate Signals by Tim Tillson
Implementation: t3.cc
Signature:

ti.t3(
    series: np.ndarray,
    period,
    v
) -> NamedTuple(...,
    t3 = np.ndarray
)

Middle-High-Low Moving Average

Source: Stocks & Commodities V. 34:08 (26–29): The Middle-High-Low Moving Average by Vitali Apirine
Implementation: mhlma.cc
Signature:

ti.mhlma(
    series: np.ndarray,
    period,
    ma_period
) -> NamedTuple(...,
    mhlsma = np.ndarray,
    mhlema = np.ndarray
)

Choppy Market Indicator

Source: Trading Techniques. Measuring market choppiness with chaos
Implementation: cmi.cc
Signature:

ti.cmi(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    period
) -> NamedTuple(...,
    cmi = np.ndarray
)

Inverse Distance Weighted Moving Average

Source: Shepard, D. (1968). A two-dimensional interpolation function for irregularly-spaced data. Proceedings of the 1968 23rd ACM National Conference on -. doi:10.1145/800186.810616
Implementation: idwma.cc
Signature:

ti.idwma(
    series: np.ndarray,
    period,
    exponent
) -> NamedTuple(...,
    idwma = np.ndarray
)

Exponential Moving Standard Deviation

Source: Mathworks. Moving Standard Deviation
Implementation: emsd.cc
Signature:

ti.emsd(
    series: np.ndarray,
    period,
    ma_period
) -> NamedTuple(...,
    emsd = np.ndarray
)

Henderson asymmetric filter

Source: Australian Bureau of Statistics. Time Series Analysis: The Process of Seasonal Adjustment
Implementation: hwma.cc
Signature:

ti.hwma(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    hwma = np.ndarray
)

Homodyne Discriminator

Source: Ehlers. Rocket Science for Traders, pp. 68-69
Implementation: hd.cc
Signature:

ti.hd(
    series: np.ndarray
) -> NamedTuple(...,
    hd = np.ndarray
)

McGinley Dynamic

Source: Stocks & Commodities V. 28:3 (30-37): The McGinley Dynamic by Brian Twomey
Implementation: mgdyn.cc
Signature:

ti.mgdyn(
    series: np.ndarray,
    N
) -> NamedTuple(...,
    mgdyn = np.ndarray
)

Linear Regression

Source: -
Implementation: linreg.cc
Signature:

ti.linreg(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    linreg = np.ndarray
)

Linear Regression Intercept

Source: -
Implementation: linregintercept.cc
Signature:

ti.linregintercept(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    linregintercept = np.ndarray
)

Linear Regression Slope

Source: -
Implementation: linregslope.cc
Signature:

ti.linregslope(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    linregslope = np.ndarray
)

Time Series Forecast

Source: -
Implementation: tsf.cc
Signature:

ti.tsf(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    tsf = np.ndarray
)

Forecast Oscillator

Source: Technical Analysis from A to Z
Implementation: fosc.cc
Signature:

ti.fosc(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    fosc = np.ndarray
)

Bollinger Bands

Source: Technical Analysis from A to Z
Implementation: bbands.cc
Signature:

ti.bbands(
    series: np.ndarray,
    period,
    stddev
) -> NamedTuple(...,
    bbands_lower = np.ndarray,
    bbands_middle = np.ndarray,
    bbands_upper = np.ndarray
)

Butterworth Filter - 2 Poles

Source: Ehlers. POLES, ZEROS, and HIGHER ORDER FILTERS
Implementation: bf2.cc
Signature:

ti.bf2(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    bf2 = np.ndarray
)

Butterworth Filter - 3 Poles

Source: Ehlers. POLES, ZEROS, and HIGHER ORDER FILTERS
Implementation: bf3.cc
Signature:

ti.bf3(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    bf3 = np.ndarray
)

Keltner Channel

Source: Colby. The Encyclopedia of Technical Market Indicators, p. 337
Implementation: kc.cc
Signature:

ti.kc(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    period,
    multiple
) -> NamedTuple(...,
    kc_lower = np.ndarray,
    kc_middle = np.ndarray,
    kc_upper = np.ndarray
)

Kaufman Adaptive Moving Average

Source: -
Implementation: kama.cc
Signature:

ti.kama(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    kama = np.ndarray
)

Parabolic SAR

Source: Technical Analysis from A to Z
Implementation: psar.cc
Signature:

ti.psar(
    high: np.ndarray,
    low: np.ndarray,
    acceleration factor step,
    acceleration factor maximum
) -> NamedTuple(...,
    psar = np.ndarray
)

Price Channel

Source: Colby. The Encyclopedia of Technical Market Indicators, p. 534
Implementation: pc.cc
Signature:

ti.pc(
    high: np.ndarray,
    low: np.ndarray,
    period
) -> NamedTuple(...,
    pc_low = np.ndarray,
    pc_high = np.ndarray
)

Projection Bands

Source: Colby. The Encyclopedia of Technical Market Indicators, p. 545
Implementation: pbands.cc
Signature:

ti.pbands(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    period
) -> NamedTuple(...,
    pbands_lower = np.ndarray,
    pbands_upper = np.ndarray
)

Ehlers Distance Coefficient Filter

Source: Ehlers. Rocket Science for Traders, p.193
Implementation: edcf.cc
Signature:

ti.edcf(
    series: np.ndarray,
    length
) -> NamedTuple(...,
    edcf = np.ndarray
)

Fractal Adaptive Moving Average

Source: Ehlers, FRAMA – Fractal Adaptive Moving Average
Implementation: frama.cc
Signature:

ti.frama(
    high: np.ndarray,
    low: np.ndarray,
    period,
    average_period
) -> NamedTuple(...,
    frama = np.ndarray
)

The Roofing Filter

Source: Stocks & Commodities V. 32:1 (16-25): Predictive And Successful Indicators by John F. Ehlers, PhD
Implementation: roof.cc
Signature:

ti.roof(
    series: np.ndarray
) -> NamedTuple(...,
    roof = np.ndarray
)

SuperSmoother Filter

Source: Stocks & Commodities V. 32:1 (16-25): Predictive And Successful Indicators by John F. Ehlers, PhD
Implementation: ssmooth.cc
Signature:

ti.ssmooth(
    series: np.ndarray
) -> NamedTuple(...,
    ssmooth = np.ndarray
)

Hampel Filter

Source: Pearson, Neuvo, Astola, Gabbouj, Generalized Hampel Filters
Implementation: hf.cc
Signature:

ti.hf(
    series: np.ndarray,
    period,
    threshold
) -> NamedTuple(...,
    hf = np.ndarray
)

Accumulation/Distribution Line

Source: Technical Analysis from A to Z
Implementation: ad.cc
Signature:

ti.ad(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    volume: np.ndarray
) -> NamedTuple(...,
    ad = np.ndarray
)

Accumulation/Distribution Oscillator

Source: Technical Analysis from A to Z
Implementation: adosc.cc
Signature:

ti.adosc(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    volume: np.ndarray,
    short period,
    long period
) -> NamedTuple(...,
    adosc = np.ndarray
)

Acceleration Bands

Source: Headley. Big Trends In Trading, p. 92
Implementation: abands.cc
Signature:

ti.abands(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    period
) -> NamedTuple(...,
    abands_lower = np.ndarray,
    abands_upper = np.ndarray,
    abands_middle = np.ndarray
)

Absolute Price Oscillator

Source: -
Implementation: apo.cc
Signature:

ti.apo(
    series: np.ndarray,
    short period,
    long period
) -> NamedTuple(...,
    apo = np.ndarray
)

Aroon

Source: Technical Analysis from A to Z
Implementation: aroon.cc
Signature:

ti.aroon(
    high: np.ndarray,
    low: np.ndarray,
    period
) -> NamedTuple(...,
    aroon_down = np.ndarray,
    aroon_up = np.ndarray
)

Aroon Oscillator

Source: -
Implementation: aroonosc.cc
Signature:

ti.aroonosc(
    high: np.ndarray,
    low: np.ndarray,
    period
) -> NamedTuple(...,
    aroonosc = np.ndarray
)

Awesome Oscillator

Source: -
Implementation: ao.cc
Signature:

ti.ao(
    high: np.ndarray,
    low: np.ndarray
) -> NamedTuple(...,
    ao = np.ndarray
)

Balance of Power

Source: -
Implementation: bop.cc
Signature:

ti.bop(
    open: np.ndarray,
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray
) -> NamedTuple(...,
    bop = np.ndarray
)

Chaikin Money Flow

Source: Kirkpatrick, Dahlquist. Technical Analysis: The Complete Resource for Financial Market Technicians, pp. 419, 421
Implementation: cmf.cc
Signature:

ti.cmf(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    volume: np.ndarray,
    period
) -> NamedTuple(...,
    cmf = np.ndarray
)

MESA Stochastic (by John F. Ehlers)

Source: Stocks & Commodities V. 32:1 (16-25): Predictive And Successful Indicators by John F. Ehlers, PhD
Implementation: mesastoch.cc
Signature:

ti.mesastoch(
    series: np.ndarray,
    period,
    max_cycle_considered
) -> NamedTuple(...,
    mesastoch = np.ndarray
)

Chande Momentum Oscillator

Source: Technical Analysis from A to Z
Implementation: cmo.cc
Signature:

ti.cmo(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    cmo = np.ndarray
)

Commodity Channel Index

Source: Technical Analysis from A to Z
Implementation: cci.cc
Signature:

ti.cci(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    period
) -> NamedTuple(...,
    cci = np.ndarray
)

Coppock Curve

Source: Colby. The Encyclopedia of Technical Market Indicators, p. 168
Implementation: copp.cc
Signature:

ti.copp(
    series: np.ndarray,
    roc_shorter_period,
    roc_longer_period,
    wma_period
) -> NamedTuple(...,
    copp = np.ndarray
)

Detrended Price Oscillator

Source: Technical Analysis from A to Z
Implementation: dpo.cc
Signature:

ti.dpo(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    dpo = np.ndarray
)

Ease of Movement

Source: Technical Analysis from A to Z
Implementation: emv.cc
Signature:

ti.emv(
    high: np.ndarray,
    low: np.ndarray,
    volume: np.ndarray
) -> NamedTuple(...,
    emv = np.ndarray
)

Fisher Transform

Source: -
Implementation: fisher.cc
Signature:

ti.fisher(
    high: np.ndarray,
    low: np.ndarray,
    period
) -> NamedTuple(...,
    fisher = np.ndarray,
    fisher_signal = np.ndarray
)

Force Index

Source: Colby. The Encyclopedia of Technical Market Indicators, pp. 275, 774
Implementation: fi.cc
Signature:

ti.fi(
    close: np.ndarray,
    volume: np.ndarray,
    period
) -> NamedTuple(...,
    fi = np.ndarray
)

Klinger Volume Oscillator

Source: Technical Analysis from A to Z
Implementation: kvo.cc
Signature:

ti.kvo(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    volume: np.ndarray,
    short period,
    long period
) -> NamedTuple(...,
    kvo = np.ndarray
)

Know Sure Thing

Source: Colby. The Encyclopedia Of Technical Market Indicators, pp. 346-347
Implementation: kst.cc
Signature:

ti.kst(
    series: np.ndarray,
    roc1,
    roc2,
    roc3,
    roc4,
    ma1,
    ma2,
    ma3,
    ma4
) -> NamedTuple(...,
    kst = np.ndarray,
    kst_signal = np.ndarray
)

Market Facilitation Index

Source: -
Implementation: marketfi.cc
Signature:

ti.marketfi(
    high: np.ndarray,
    low: np.ndarray,
    volume: np.ndarray
) -> NamedTuple(...,
    marketfi = np.ndarray
)

Mass Index

Source: Technical Analysis from A to Z
Implementation: mass.cc
Signature:

ti.mass(
    high: np.ndarray,
    low: np.ndarray,
    period
) -> NamedTuple(...,
    mass = np.ndarray
)

Money Flow Index

Source: Technical Analysis from A to Z
Implementation: mfi.cc
Signature:

ti.mfi(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    volume: np.ndarray,
    period
) -> NamedTuple(...,
    mfi = np.ndarray
)

Moving Average Convergence/Divergence

Source: Technical Analysis from A to Z
Implementation: macd.cc
Signature:

ti.macd(
    series: np.ndarray,
    short period,
    long period,
    signal period
) -> NamedTuple(...,
    macd = np.ndarray,
    macd_signal = np.ndarray,
    macd_histogram = np.ndarray
)

Negative Volume Index

Source: Technical Analysis from A to Z
Implementation: nvi.cc
Signature:

ti.nvi(
    close: np.ndarray,
    volume: np.ndarray
) -> NamedTuple(...,
    nvi = np.ndarray
)

On Balance Volume

Source: Technical Analysis from A to Z
Implementation: obv.cc
Signature:

ti.obv(
    close: np.ndarray,
    volume: np.ndarray
) -> NamedTuple(...,
    obv = np.ndarray
)

Percentage Price Oscillator

Source: -
Implementation: ppo.cc
Signature:

ti.ppo(
    series: np.ndarray,
    short period,
    long period
) -> NamedTuple(...,
    ppo = np.ndarray
)

Polarized Fractal Efficiency

Source: Colby. The Encyclopedia of Technical Market Indicators, p. 520
Implementation: pfe.cc
Signature:

ti.pfe(
    series: np.ndarray,
    period,
    ema_period
) -> NamedTuple(...,
    pfe = np.ndarray
)

Positive Volume Index

Source: -
Implementation: pvi.cc
Signature:

ti.pvi(
    close: np.ndarray,
    volume: np.ndarray
) -> NamedTuple(...,
    pvi = np.ndarray
)

Projection Oscillator

Source: Colby. The Encyclopedia of Technical Market Indicators, p. 545
Implementation: posc.cc
Signature:

ti.posc(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    period,
    ema_period
) -> NamedTuple(...,
    posc = np.ndarray
)

Qstick

Source: Technical Analysis from A to Z
Implementation: qstick.cc
Signature:

ti.qstick(
    open: np.ndarray,
    close: np.ndarray,
    period
) -> NamedTuple(...,
    qstick = np.ndarray
)

Relative Strength Index

Source: Technical Analysis from A to Z
Implementation: rsi.cc
Signature:

ti.rsi(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    rsi = np.ndarray
)

True Strength Index

Source: Blau. True Strength Index. Stocks & Commodities V. 9:11 (438-446).pdf
Implementation: tsi.cc
Signature:

ti.tsi(
    series: np.ndarray,
    y_period,
    z_period
) -> NamedTuple(...,
    tsi = np.ndarray
)

Relative Momentum Index

Source: Relative Momentum Index: Modifying RSI by Roger Altman, Stocks and Commodities, Feb ‘93
Implementation: rmi.cc
Signature:

ti.rmi(
    series: np.ndarray,
    period,
    lookback_period
) -> NamedTuple(...,
    rmi = np.ndarray
)

Relative Volatility Index

Source: Colby. The Encyclopedia of Technical Market Indicators, p. 618
Implementation: rvi.cc
Signature:

ti.rvi(
    series: np.ndarray,
    ema_period,
    stddev_period
) -> NamedTuple(...,
    rvi = np.ndarray
)

Stochastic Momentum Index

Source: Blau. Stochastic Momentum. Stocks & Commodities V. 11:1 (11-18).pdf
Implementation: smi.cc
Signature:

ti.smi(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    q_period,
    r_period,
    s_period
) -> NamedTuple(...,
    smi = np.ndarray
)

Stochastic Oscillator

Source: Technical Analysis from A to Z
Implementation: stoch.cc
Signature:

ti.stoch(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    k period,
    k slowing period,
    d period
) -> NamedTuple(...,
    stoch_k = np.ndarray,
    stoch_d = np.ndarray
)

Stochastic RSI

Source: -
Implementation: stochrsi.cc
Signature:

ti.stochrsi(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    stochrsi = np.ndarray
)

Trix

Source: Technical Analysis from A to Z
Implementation: trix.cc
Signature:

ti.trix(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    trix = np.ndarray
)

Williams Accumulation/Distribution

Source: Technical Analysis from A to Z
Implementation: wad.cc
Signature:

ti.wad(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray
) -> NamedTuple(...,
    wad = np.ndarray
)

Williams %R

Source: Technical Analysis from A to Z
Implementation: willr.cc
Signature:

ti.willr(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    period
) -> NamedTuple(...,
    willr = np.ndarray
)

Ultimate Oscillator

Source: Technical Analysis from A to Z
Implementation: ultosc.cc
Signature:

ti.ultosc(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    short period,
    medium period,
    long period
) -> NamedTuple(...,
    ultosc = np.ndarray
)

Vertical Horizontal Filter

Source: Technical Analysis from A to Z
Implementation: vhf.cc
Signature:

ti.vhf(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    vhf = np.ndarray
)

Volume Oscillator

Source: Technical Analysis from A to Z
Implementation: vosc.cc
Signature:

ti.vosc(
    volume: np.ndarray,
    short period,
    long period
) -> NamedTuple(...,
    vosc = np.ndarray
)

Efficiency Ratio

Source: Kaufman. Trading Systems and Methods
Implementation: er.cc
Signature:

ti.er(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    er = np.ndarray
)

Price Volume Trend

Source: Buff Pelz Dormeier - Investing with Volume Analysis_ Identify, Follow, and Profit from Trends-FT Press (2011)
Implementation: pvt.cc
Signature:

ti.pvt(
    close: np.ndarray,
    volume: np.ndarray
) -> NamedTuple(...,
    pvt = np.ndarray
)

Hurst Exponent Indicator

Source: Stocks & Commodities V. 25:3 (36-42): Trading Systems And Fractals by Radha Panini
Implementation: hurst.cc
Signature:

ti.hurst(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    hurst = np.ndarray,
    fractal_dim = np.ndarray
)

Adaptive Relative Strength Index

Source: Ehlers. Rocket Science for Traders, pp. 229-231
Implementation: arsi.cc
Signature:

ti.arsi(
    series: np.ndarray,
    cycpart
) -> NamedTuple(...,
    arsi = np.ndarray
)

Directional Movement

Source: Technical Analysis from A to Z
Implementation: dm.cc
Signature:

ti.dm(
    high: np.ndarray,
    low: np.ndarray,
    period
) -> NamedTuple(...,
    plus_dm = np.ndarray,
    minus_dm = np.ndarray
)

Directional Movement Index

Source: Technical Analysis from A to Z
Implementation: dx.cc
Signature:

ti.dx(
    high: np.ndarray,
    low: np.ndarray,
    period
) -> NamedTuple(...,
    dx = np.ndarray
)

Directional Indicator

Source: Technical Analysis from A to Z
Implementation: di.cc
Signature:

ti.di(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    period
) -> NamedTuple(...,
    plus_di = np.ndarray,
    minus_di = np.ndarray
)

Average Directional Movement Index

Source: Technical Analysis from A to Z
Implementation: adx.cc
Signature:

ti.adx(
    high: np.ndarray,
    low: np.ndarray,
    period
) -> NamedTuple(...,
    adx = np.ndarray
)

Average Directional Movement Rating

Source: Technical Analysis from A to Z
Implementation: adxr.cc
Signature:

ti.adxr(
    high: np.ndarray,
    low: np.ndarray,
    period
) -> NamedTuple(...,
    adxr = np.ndarray
)

Mesa Sine Wave

Source: -
Implementation: msw.cc
Signature:

ti.msw(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    msw_sine = np.ndarray,
    msw_lead = np.ndarray
)

Momentum

Source: -
Implementation: mom.cc
Signature:

ti.mom(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    mom = np.ndarray
)

Rate of Change

Source: -
Implementation: roc.cc
Signature:

ti.roc(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    roc = np.ndarray
)

Rate of Change Ratio

Source: Technical Analysis from A to Z
Implementation: rocr.cc
Signature:

ti.rocr(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    rocr = np.ndarray
)

Lag

Source: -
Implementation: lag.cc
Signature:

ti.lag(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    lag = np.ndarray
)

Maximum In Period

Source: -
Implementation: max.cc
Signature:

ti.max(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    max = np.ndarray
)

Minimum In Period

Source: -
Implementation: min.cc
Signature:

ti.min(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    min = np.ndarray
)

Sum Over Period

Source: -
Implementation: sum.cc
Signature:

ti.sum(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    sum = np.ndarray
)

Standard Deviation Over Period

Source: -
Implementation: stddev.cc
Signature:

ti.stddev(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    stddev = np.ndarray
)

Standard Error Over Period

Source: -
Implementation: stderr.cc
Signature:

ti.stderr(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    stderr = np.ndarray
)

Mean Deviation Over Period

Source: -
Implementation: md.cc
Signature:

ti.md(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    md = np.ndarray
)

Variance Over Period

Source: -
Implementation: var.cc
Signature:

ti.var(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    var = np.ndarray
)

Average Price

Source: -
Implementation: avgprice.cc
Signature:

ti.avgprice(
    open: np.ndarray,
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray
) -> NamedTuple(...,
    avgprice = np.ndarray
)

Median Price

Source: Technical Analysis from A to Z
Implementation: medprice.cc
Signature:

ti.medprice(
    high: np.ndarray,
    low: np.ndarray
) -> NamedTuple(...,
    medprice = np.ndarray
)

Typical Price

Source: Technical Analysis from A to Z
Implementation: typprice.cc
Signature:

ti.typprice(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray
) -> NamedTuple(...,
    typprice = np.ndarray
)

Weighted Close Price

Source: Technical Analysis from A to Z
Implementation: wcprice.cc
Signature:

ti.wcprice(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray
) -> NamedTuple(...,
    wcprice = np.ndarray
)

Average True Range

Source: Technical Analysis from A to Z
Implementation: atr.cc
Signature:

ti.atr(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    period
) -> NamedTuple(...,
    atr = np.ndarray
)

Chandelier Exit

Source: J. Welles Wilder. New Concepts in Technical Trading Systems, 1978, pp. 21-23
Implementation: ce.cc
Signature:

ti.ce(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    period,
    coef
) -> NamedTuple(...,
    ce_high = np.ndarray,
    ce_low = np.ndarray
)

Normalized Average True Range

Source: -
Implementation: natr.cc
Signature:

ti.natr(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    period
) -> NamedTuple(...,
    natr = np.ndarray
)

True Range

Source: Technical Analysis from A to Z
Implementation: tr.cc
Signature:

ti.tr(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray
) -> NamedTuple(...,
    tr = np.ndarray
)

Ichimoku

Source: Trading with Ichimoku Clouds
Implementation: ichi.cc
Signature:

ti.ichi(
    high: np.ndarray,
    low: np.ndarray,
    period9,
    period26,
    period52
) -> NamedTuple(...,
    ichi_tenkan_sen = np.ndarray,
    ichi_kijun_sen = np.ndarray,
    ichi_senkou_span_A = np.ndarray,
    ichi_senkou_span_B = np.ndarray
)

Annualized Historical Volatility

Source: -
Implementation: volatility.cc
Signature:

ti.volatility(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    volatility = np.ndarray
)

Chaikins Volatility

Source: Technical Analysis from A to Z
Implementation: cvi.cc
Signature:

ti.cvi(
    high: np.ndarray,
    low: np.ndarray,
    period
) -> NamedTuple(...,
    cvi = np.ndarray
)

Crossany

Source: -
Implementation: crossany.cc
Signature:

ti.crossany(
    series: np.ndarray,
    series: np.ndarray
) -> NamedTuple(...,
    crossany = np.ndarray
)

Crossover

Source: -
Implementation: crossover.cc
Signature:

ti.crossover(
    series: np.ndarray,
    series: np.ndarray
) -> NamedTuple(...,
    crossover = np.ndarray
)

Linear Decay

Source: -
Implementation: decay.cc
Signature:

ti.decay(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    decay = np.ndarray
)

Exponential Decay

Source: -
Implementation: edecay.cc
Signature:

ti.edecay(
    series: np.ndarray,
    period
) -> NamedTuple(...,
    edecay = np.ndarray
)

Vector Addition

Source: -
Implementation: add.cc
Signature:

ti.add(
    series: np.ndarray,
    series: np.ndarray
) -> NamedTuple(...,
    add = np.ndarray
)

Vector Subtraction

Source: -
Implementation: sub.cc
Signature:

ti.sub(
    series: np.ndarray,
    series: np.ndarray
) -> NamedTuple(...,
    sub = np.ndarray
)

Vector Multiplication

Source: -
Implementation: mul.cc
Signature:

ti.mul(
    series: np.ndarray,
    series: np.ndarray
) -> NamedTuple(...,
    mul = np.ndarray
)

Vector Division

Source: -
Implementation: div.cc
Signature:

ti.div(
    series: np.ndarray,
    series: np.ndarray
) -> NamedTuple(...,
    div = np.ndarray
)

Vector Absolute Value

Source: -
Implementation: abs.cc
Signature:

ti.abs(
    series: np.ndarray
) -> NamedTuple(...,
    abs = np.ndarray
)

Vector Arccosine

Source: -
Implementation: acos.cc
Signature:

ti.acos(
    series: np.ndarray
) -> NamedTuple(...,
    acos = np.ndarray
)

Vector Arcsine

Source: -
Implementation: asin.cc
Signature:

ti.asin(
    series: np.ndarray
) -> NamedTuple(...,
    asin = np.ndarray
)

Vector Arctangent

Source: -
Implementation: atan.cc
Signature:

ti.atan(
    series: np.ndarray
) -> NamedTuple(...,
    atan = np.ndarray
)

Vector Ceiling

Source: -
Implementation: ceil.cc
Signature:

ti.ceil(
    series: np.ndarray
) -> NamedTuple(...,
    ceil = np.ndarray
)

Vector Cosine

Source: -
Implementation: cos.cc
Signature:

ti.cos(
    series: np.ndarray
) -> NamedTuple(...,
    cos = np.ndarray
)

Vector Hyperbolic Cosine

Source: -
Implementation: cosh.cc
Signature:

ti.cosh(
    series: np.ndarray
) -> NamedTuple(...,
    cosh = np.ndarray
)

Vector Exponential

Source: -
Implementation: exp.cc
Signature:

ti.exp(
    series: np.ndarray
) -> NamedTuple(...,
    exp = np.ndarray
)

Vector Floor

Source: -
Implementation: floor.cc
Signature:

ti.floor(
    series: np.ndarray
) -> NamedTuple(...,
    floor = np.ndarray
)

Vector Natural Log

Source: -
Implementation: ln.cc
Signature:

ti.ln(
    series: np.ndarray
) -> NamedTuple(...,
    ln = np.ndarray
)

Vector Base-10 Log

Source: -
Implementation: log10.cc
Signature:

ti.log10(
    series: np.ndarray
) -> NamedTuple(...,
    log10 = np.ndarray
)

Vector Round

Source: -
Implementation: round.cc
Signature:

ti.round(
    series: np.ndarray
) -> NamedTuple(...,
    round = np.ndarray
)

Vector Sine

Source: -
Implementation: sin.cc
Signature:

ti.sin(
    series: np.ndarray
) -> NamedTuple(...,
    sin = np.ndarray
)

Vector Hyperbolic Sine

Source: -
Implementation: sinh.cc
Signature:

ti.sinh(
    series: np.ndarray
) -> NamedTuple(...,
    sinh = np.ndarray
)

Vector Square Root

Source: -
Implementation: sqrt.cc
Signature:

ti.sqrt(
    series: np.ndarray
) -> NamedTuple(...,
    sqrt = np.ndarray
)

Vector Tangent

Source: -
Implementation: tan.cc
Signature:

ti.tan(
    series: np.ndarray
) -> NamedTuple(...,
    tan = np.ndarray
)

Vector Hyperbolic Tangent

Source: -
Implementation: tanh.cc
Signature:

ti.tanh(
    series: np.ndarray
) -> NamedTuple(...,
    tanh = np.ndarray
)

Vector Degree Conversion

Source: -
Implementation: todeg.cc
Signature:

ti.todeg(
    series: np.ndarray
) -> NamedTuple(...,
    degrees = np.ndarray
)

Vector Radian Conversion

Source: -
Implementation: torad.cc
Signature:

ti.torad(
    series: np.ndarray
) -> NamedTuple(...,
    radians = np.ndarray
)

Vector Truncate

Source: -
Implementation: trunc.cc
Signature:

ti.trunc(
    series: np.ndarray
) -> NamedTuple(...,
    trunc = np.ndarray
)

Vortex Indicator

Source: The Vortex Indicator
Implementation: vi.cc
Signature:

ti.vi(
    high: np.ndarray,
    low: np.ndarray,
    close: np.ndarray,
    period
) -> NamedTuple(...,
    vi_p = np.ndarray,
    vi_m = np.ndarray
)