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