Skip to content

mintalib.indicators

Indicators offer a composable interface where a calculation routine is bound with its parameters.

This module is pandas-only: indicators accept and return pandas DataFrames or Series.

An indicator instance is a callable applied to prices or series data: SMA(50)(prices).

Series-output indicators chain through the | operator: EMA(20) | ROC(1).

Single-output indicators return a pandas Series; multi-output indicators (e.g. MACD, BBANDS) return a DataFrame. Select one output of a multi-output indicator as a series indicator with MACD()["macd"].


ABS

ABS(*, item: str | None = None) -> SeriesToSeries

Absolute Value

ADX

ADX(period: int = 14) -> PricesToSeries

Average Directional Index

Arguments: - period (int): time period, default 14

ALMA

ALMA(period: int = 9, offset: float = 0.85, sigma: float = 6.0, *, item: str | None = None) -> SeriesToSeries

Arnaud Legoux Moving Average

ATR

ATR(period: int = 14) -> PricesToSeries

Average True Range

Arguments: - period (int): time period, default 14

AVGPRICE

AVGPRICE() -> PricesToSeries

Average Price

Value of (open + high + low + close) / 4

BBANDS

BBANDS(period: int = 20, nbdev: float = 2.0, *, item: str | None = None) -> SeriesToFrame

Bollinger Bands

Arguments: - period (int): time period, default 20 - nbdev (float): bands width in number of standard deviations

BBP

BBP(period: int = 20, nbdev: float = 2.0, *, item: str | None = None) -> SeriesToSeries

Bollinger Bands Percent (%B)

Returns the source position within the bands as a ratio, where 0 is the lower band and 1 is the upper band.

Arguments: - period (int): time period, default 20 - nbdev (float): bands width in number of standard deviations

BBW

BBW(period: int = 20, nbdev: float = 2.0, *, item: str | None = None) -> SeriesToSeries

Bollinger Bands Width

Returns band width relative to the middle band as a ratio.

Arguments: - period (int): time period, default 20 - nbdev (float): bands width in number of standard deviations

BOP

BOP() -> PricesToSeries

Balance of Power

CCI

CCI(period: int = 20) -> PricesToSeries

Commodity Channel Index

Arguments: - period (int): time period, default 20

CLAG

CLAG(period: int = 1, *, item: str | None = None) -> SeriesToSeries

Confirmation Lag

Changes value only after a confirmation period

Arguments: - period (int): time period, default 1

CMF

CMF(period: int = 20) -> PricesToSeries

Chaikin Money Flow

Arguments: - period (int): time period, default 20

CROSSOVER

CROSSOVER(level: float = 0.0, *, item: str | None = None) -> SeriesToSeries

Cross Over

Yields a value of 1 at the point where series crosses over level

Arguments: - level (float): level to cross, default 0.0

CROSSUNDER

CROSSUNDER(level: float = 0.0, *, item: str | None = None) -> SeriesToSeries

Cross Under

Yields a value of 1 at the point where series crosses under level

Arguments: - level (float): level to cross, default 0.0

DEMA

DEMA(period: int, *, item: str | None = None) -> SeriesToSeries

Double Exponential Moving Average

Arguments: - period (int): time period, required

DIFF

DIFF(period: int = 1, *, item: str | None = None) -> SeriesToSeries

Difference

Difference between current value and the one offset by period

Arguments: - period (int): time period, default 1

DMI

DMI(period: int = 14) -> PricesToFrame

Directional Movement Indicator

Arguments: - period (int): time period, default 14

DONCHIAN

DONCHIAN(period: int = 20) -> PricesToFrame

Donchian Channel

Arguments: - period (int): time period, default 20

EMA

EMA(period: int, *, adjust: bool = False, item: str | None = None) -> SeriesToSeries

Exponential Moving Average

Arguments: - period (int): time period, required - adjust (bool): whether to adjust weights, default False when true update ratio increases gradually (see formula)

Formula:

EMA is calculated as a recursive formula The standard formula is ema += alpha * (value - ema) with alpha = 2.0 / (period + 1.0) The adjusted formula is ema = num/div where num = value + rho * num, div = 1.0 + rho * div with rho = 1.0 - alpha

EXP

EXP(*, item: str | None = None) -> SeriesToSeries

Exponential

FLAG

FLAG(*, item: str | None = None) -> SeriesToSeries

Flag Value

Flag value of 1 for positive, 0 for zero or negative, and NaN otherwize

HMA

HMA(period: int, *, item: str | None = None) -> SeriesToSeries

Hull Moving Average

Arguments: - period (int): time period, required

IndicatorBundle

Named collection of indicators evaluated against the same prices.

Keyword argument names become result column names. Positional indicators must return a named Series or a DataFrame with named columns.

KAMA

KAMA(period: int = 10, fastn: int = 2, slown: int = 30, *, item: str | None = None) -> SeriesToSeries

Kaufman Adaptive Moving Average

Arguments: - period (int): time period for efficiency ratio, default 10 - fastn (int): time period for fast moving average, default, 2 - slown (int): time period for slow moving average, default 30

KELTNER

KELTNER(period: int = 20, nbatr: float = 2.0) -> PricesToFrame

Keltner Channel

Arguments: - period (int): time period, default 20 - nbatr (float): channel width in number of atrs, default 2.0

KER

KER(period: int = 10, *, item: str | None = None) -> SeriesToSeries

Kaufman Efficiency Ratio

Arguments: - period (int): time period, default 10

LAG

LAG(period: int, *, item: str | None = None) -> SeriesToSeries

Lag Function

Arguments: - period (int): time period, required

LINREG

LINREG(period: int = 20, offset: int = 0, *, item: str | None = None) -> SeriesToSeries

Linear Regression (least squares moving average)

Value of the regression line at the current bar, with offset projecting the line forward.

Arguments: - period (int): time period, default 20 - offset (int): forecast offset, default 0

LINREG_RMSE

LINREG_RMSE(period: int = 20, *, item: str | None = None) -> SeriesToSeries

Linear Regression Root Mean Square Error

Arguments: - period (int): time period, default 20

LINREG_RVALUE

LINREG_RVALUE(period: int = 20, *, item: str | None = None) -> SeriesToSeries

Linear Regression R-Value

Arguments: - period (int): time period, default 20

LINREG_SLOPE

LINREG_SLOPE(period: int = 20, *, item: str | None = None) -> SeriesToSeries

Linear Regression Slope

Arguments: - period (int): time period, default 20

LOG

LOG(*, item: str | None = None) -> SeriesToSeries

Logarithm

LROC

LROC(period: int = 1, *, item: str | None = None) -> SeriesToSeries

Logarithmic Rate of Change

Equivalent to the difference of log values

Arguments: - period (int): time period, default 1

MACD

MACD(n1: int = 12, n2: int = 26, n3: int = 9, *, item: str | None = None) -> SeriesToFrame

Moving Average Convergence Divergence

Arguments: - n1 (int): short time period, default 12 - n2 (int): long time period, default 26 - n3 (int): signal time period, default 9

Outputs:

macd, macdsignal, macdhist

MACDV

MACDV(n1: int = 12, n2: int = 26, n3: int = 9) -> PricesToFrame

Moving Average Convergence Divergence - Volatility Normalized

Arguments: - n1 (int): short time period, default 12 - n2 (int): long time period, default 26 - n3 (int): signal time period, default 9

Outputs:

macdv, macdvsignal, macdvhist

MAD

MAD(period: int = 14, *, item: str | None = None) -> SeriesToSeries

Rolling Mean Absolute Deviation

MAV

MAV(period: int = 20, *, matype: str = 'sma', item: str | None = None) -> SeriesToSeries

Generic Moving Average

Moving average computed according to matype

Arguments: - matype (str): one of 'sma', 'ema', 'wma', 'hma', 'dema', 'tema' defaults to 'sma'

MAX

MAX(period: int, *, item: str | None = None) -> SeriesToSeries

Rolling Maximum

MDI

MDI(period: int = 14) -> PricesToSeries

Minus Directional Index

Arguments: - period (int): time period, default 14

MEDPRICE

MEDPRICE() -> PricesToSeries

Median Price

Value of (high + low) / 2

MFI

MFI(period: int = 14) -> PricesToSeries

Money Flow Index

Arguments: - period (int): time period, default 14

MIN

MIN(period: int, *, item: str | None = None) -> SeriesToSeries

Rolling Minimum

Arguments: - period (int): time period, required

NATR

NATR(period: int = 14) -> PricesToSeries

Normalized Average True Range

Returns 100 * ATR(period) / close in percentage points.

Arguments: - period (int): time period, default 14

OBV

OBV() -> PricesToSeries

On-Balance Volume

Adds volume when close rises, subtracts volume when close falls, and carries the previous value when close is unchanged. The first value is initialized with the first volume.

PDI

PDI(period: int = 14) -> PricesToSeries

Plus Directional Index

Arguments: - period (int): time period, default 14

PPO

PPO(n1: int = 12, n2: int = 26, n3: int = 9, *, item: str | None = None) -> SeriesToFrame

Price Percentage Oscillator

Arguments: - n1 (int): short time period, default 12 - n2 (int): long time period, default 26 - n3 (int): signal time period, default 9

Outputs:

ppo, pposignal, ppohist

QUADREG

QUADREG(period: int = 20, offset: int = 0, *, item: str | None = None) -> SeriesToSeries

Quadratic Regression (parabolic moving average)

Value of the regression parabola at the current bar, with offset projecting the parabola forward.

Arguments: - period (int): time period, default 20 - offset (int): forecast offset, default 0

QUADREG_CURVE

QUADREG_CURVE(period: int = 20, *, item: str | None = None) -> SeriesToSeries

Quadratic Regression Curve

Arguments: - period (int): time period, default 20

QUADREG_RMSE

QUADREG_RMSE(period: int = 20, *, item: str | None = None) -> SeriesToSeries

Quadratic Regression Root Mean Square Error

Arguments: - period (int): time period, default 20

QUADREG_RVALUE

QUADREG_RVALUE(period: int = 20, *, item: str | None = None) -> SeriesToSeries

Quadratic Regression R-Value

Partial correlation of the quadratic term, given the linear term.

Arguments: - period (int): time period, default 20

QUADREG_SLOPE

QUADREG_SLOPE(period: int = 20, offset: int = 0, *, item: str | None = None) -> SeriesToSeries

Quadratic Regression Slope

Slope of the regression parabola at the current bar, with offset projecting the slope forward.

Arguments: - period (int): time period, default 20 - offset (int): forecast offset, default 0

RMA

RMA(period: int, *, item: str | None = None) -> SeriesToSeries

Rolling Moving Average (RSI style)

Exponential moving average with alpha = 1 / period, that starts as a simple moving average until number of bars is equal to period.

ROC

ROC(period: int = 1, *, item: str | None = None) -> SeriesToSeries

Rate of Change

Returns rate of change as a percentage. For example, a 10% increase returns 10.0.

Arguments: - period (int): time period, default 1

ROCP

ROCP(period: int = 1, *, item: str | None = None) -> SeriesToSeries

Rate of Change Percentage

Returns rate of change as a fraction. For example, a 10% increase returns 0.1.

Arguments: - period (int): time period, default 1

RSI

RSI(period: int = 14, *, item: str | None = None) -> SeriesToSeries

Relative Strength Index

Arguments: - period (int): time period, default 14

SAR

SAR(afs: float = 0.02, maxaf: float = 0.2) -> PricesToSeries

Parabolic Stop and Reverse

Arguments: - afs (float): starting acceleration factor, default 0.02 - maxaf (float): maximum acceleration factor, default 0.2

SIGN

SIGN(*, item: str | None = None) -> SeriesToSeries

Sign

SMA

SMA(period: int, *, item: str | None = None) -> SeriesToSeries

Simple Moving Average

Arguments: - period (int): time period, required

STDEV

STDEV(period: int = 20, *, item: str | None = None) -> SeriesToSeries

Standard Deviation

Arguments: - period (int): time period, default 20

STEP

STEP(threshold: float = 1.0, *, item: str | None = None) -> SeriesToSeries

Step Function

Limit value changes to threshold (in absolute value)

Arguments: - threshold (float): threshold value, default 1.0

STOCH

STOCH(period: int = 14, fastn: int = 3, slown: int = 3) -> PricesToFrame

Stochastic Oscillator

Arguments: - period (int): time period of window, default, 14 - fastn (int): time period of fast average, default 3 - slown (int): time period of slow average, default 3

STREAK

STREAK(*, item: str | None = None) -> SeriesToSeries

Consecutive streak of values above zero

SUM

SUM(period: int, *, item: str | None = None) -> SeriesToSeries

Rolling sum

Arguments: - period (int): time period, required

TEMA

TEMA(period: int = 20, *, item: str | None = None) -> SeriesToSeries

Triple Exponential Moving Average

Arguments: - period (int): time period, default 20

TRANGE

TRANGE() -> PricesToSeries

True Range

TYPPRICE

TYPPRICE() -> PricesToSeries

Typical Price

Value of (high + low + close ) / 3

UPDOWN

UPDOWN(up_level: float = 0.0, down_level: float = 0.0, *, item: str | None = None) -> SeriesToSeries

Flag for value crossing up & down levels

Arguments: - up_level (float): flag set at 1 above that level - down_level (float): flag set at 0 below that level

WCLPRICE

WCLPRICE() -> PricesToSeries

Weighted Close Price

Value of (high + low + 2 * close) / 4

WMA

WMA(period: int, *, item: str | None = None) -> SeriesToSeries

Weighted Moving Average

Arguments: - period (int): time period, required

ZLEMA

ZLEMA(period: int, *, item: str | None = None) -> SeriesToSeries

Zero-Lag Exponential Moving Average

Arguments: - period (int): time period, required

Formula:

ZLEMA is an EMA applied to a de-lagged series data = 2 * value - value[lag] with lag = (period - 1) // 2