indicato

Reference

Every function in indicato, generated from the source. Do not edit this file β€” run node scripts/build-docs.mjs instead.

89 functions. The confidence column says how firmly each one is pinned down; accuracy notes has the detail.

That document counts 73 verified series where this table counts 58 verified functions β€” not a contradiction. A function like dmi returns three series (+DI, βˆ’DI and ADX) and each was checked separately.

status meaning
βœ… exact pinned to the value, across 6,126 bars of real market history
🟑 scaled pinned to the shape; a documented scaling or parameter convention differs
βšͺ by definition follows its published formula, held by the property tests
πŸ”΄ ambiguous the indicator itself is under-specified and implementations diverge

All of them

function signature status
ac (bars) βœ… exact
adl (bars) βœ… exact
alligator (bars) 🟑 scaled
alma (src, n, offset = 0.85, sigma = 6) βœ… exact
ao (bars) βœ… exact
aroon (bars, n = 25) βœ… exact
atr (bars, n = 14) βœ… exact
bbPercent (bars, n = 20, mult = 2) βœ… exact
bbWidth (bars, n = 20, mult = 2) 🟑 scaled
beta (a, b, n = 20) βšͺ by definition
bollinger (bars, n = 20, mult = 2) βœ… exact
bop (bars) βœ… exact
cci (bars, n = 20) βœ… exact
chaikinOsc (bars, fast = 3, slow = 10) βœ… exact
chandeKrollStop (bars, p = 10, x = 1, q = 9) βšͺ by definition
chandelierExit (bars, n = 22, mult = 3) 🟑 scaled
chop (bars, n = 14) βœ… exact
cmf (bars, n = 20) βœ… exact
cmo (src, n = 14) βœ… exact
coppock (src, a = 14, b = 11, n = 10) βœ… exact
correlation (a, b, n = 20) βšͺ by definition
crsi (bars, rsiLen = 3, streakLen = 2, rankLen = 100) 🟑 scaled
dema (src, n) βœ… exact
dmi (bars, n = 14) βœ… exact
donchian (bars, n = 20, prior = false) βšͺ by definition
dpo (src, n = 20) βœ… exact
elderRay (bars, n = 13) βœ… exact
ema (values, n) βœ… exact
emv (bars, n = 14) 🟑 scaled
envelopes (bars, n = 20, pct = 2.5) βšͺ by definition
fisher (bars, n = 9) 🟑 scaled
forceIndex (bars, n = 13) βœ… exact
frama (bars, n = 16) βšͺ by definition
gator (bars) βšͺ by definition
historicalVolatility (bars, n = 20, barsPerYear = 252) βšͺ by definition
hma (src, n) βœ… exact
ichimoku (bars, conv = 9, base = 26, spanB = 52) βšͺ by definition
kama (src, n = 10, fast = 2, slow = 30) βœ… exact
keltner (bars, n = 20, mult = 2) βšͺ by definition
klinger (bars, fast = 34, slow = 55, sig = 13) πŸ”΄ ambiguous
kst (src) 🟑 scaled
linreg (src, n = 14) βœ… exact
linregSlope (src, n = 14) βœ… exact
macd (bars, fast = 12, slow = 26, signal = 9) βœ… exact
massIndex (bars, n = 25, e = 9) βœ… exact
mcginley (src, n = 14) βœ… exact
median (src, n = 14) βœ… exact
mfi (bars, n = 14) βœ… exact
mode (src, n = 20, dp = 1) βšͺ by definition
momentum (src, n = 10) βœ… exact
natr (bars, n = 14) βœ… exact
nvi (bars) 🟑 scaled
obv (bars) βœ… exact
pivotPoints (bars) βšͺ by definition
po (src, fast = 12, slow = 26) βœ… exact
ppo (src, fast = 12, slow = 26) βœ… exact
psar (bars, step = 0.02, max = 0.2) 🟑 scaled
pvi (bars) 🟑 scaled
pvt (bars) βœ… exact
roc (src, n = 12) βœ… exact
rsi (bars, n = 14) βœ… exact
rvi (bars, n = 10) βœ… exact
rwi (bars, n = 14) 🟑 scaled
sma (values, n) βœ… exact
starc (bars, n = 15, atrLen = 15, mult = 2) βšͺ by definition
stc (src, fast = 23, slow = 50, cycle = 10) βœ… exact
stochastic (bars, n = 14, k = 3, d = 3) βœ… exact
stochRsi (bars, n = 14, k = 3, d = 3) 🟑 scaled
supertrend (bars, n = 10, mult = 3) βœ… exact
t3 (src, n = 5, v = 0.7) βœ… exact
tema (src, n) βœ… exact
trima (src, n) βœ… exact
trix (src, n = 15) βœ… exact
tsf (src, n = 14) βœ… exact
tsi (src, long = 25, short = 13) βœ… exact
ulcerIndex (bars, n = 14) βœ… exact
ultosc (bars, s = 7, m = 14, l = 28) βœ… exact
variance (src, n = 14) βœ… exact
vidya (src, n = 14, smooth = 20) 🟑 scaled
volumeOsc (bars, fast = 5, slow = 10) 🟑 not comparable
vortex (bars, n = 14) βœ… exact
vroc (bars, n = 14) βœ… exact
vwap (bars) βšͺ by definition
vwma (bars, n) βœ… exact
williamsFractals (bars, w = 2) βšͺ by definition
williamsR (bars, n = 14) βœ… exact
wma (values, n) βœ… exact
yearBand (bars, n = 252) βšͺ by definition
zlema (src, n) βœ… exact

ac

import { ac } from "indicato";

ac(bars)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


adl

import { adl } from "indicato";

adl(bars)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Accumulation/Distribution β€” Chaikin’s money flow multiplier, accumulated.


alligator

import { alligator } from "indicato";

alligator(bars)

🟑 scaled β€” Ratio 0.997, correlation 0.9995 against pandas-ta β€” a smoothed-average variant.

Bill Williams’ Alligator: three displaced smoothed averages. The displacement is FORWARD, which on a chart is a line drawn ahead of price β€” so for a signal each is read from its own past, never from a bar that has not happened.


alma

import { alma } from "indicato";

alma(src, n, offset, sigma)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Arnaud Legoux β€” a gaussian window offset toward the recent end.


ao

import { ao } from "indicato";

ao(bars)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Awesome and Accelerator β€” Bill Williams, on the bar’s midpoint.


aroon

import { aroon } from "indicato";

aroon(bars, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Aroon β€” Chande. How long since the window’s high and low, as a percentage. Both at 100 means the extreme is today.


atr

import { atr } from "indicato";

atr(bars, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Exported since Keltner needs it and a reader may want it on its own: the size of a typical session, in rupees. TRUE range, not high minus low β€” a share that gapped 100 to 130 overnight then traded 130-132 had a 2-rupee day by high minus low and a 32-rupee day in truth.


bbPercent

import { bbPercent } from "indicato";

bbPercent(bars, n, mult)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Bollinger %B and bandwidth β€” where price sits in the band, and how wide it is.


bbWidth

import { bbWidth } from "indicato";

bbWidth(bars, n, mult)

🟑 scaled β€” Γ—100 against the OpenAlgo SDK β€” a percentage here, a fraction there. Percentage matches the TradingView convention.


beta

import { beta } from "indicato";

beta(a, b, n)

βšͺ by definition β€” Follows its published formula. Held by the property tests β€” causality, warmup, range and flat-series identity.


bollinger

import { bollinger } from "indicato";

bollinger(bars, n, mult)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


bop

import { bop } from "indicato";

bop(bars)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Balance of Power β€” where the close finished relative to the open, scaled by range.


cci

import { cci } from "indicato";

cci(bars, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Commodity Channel Index β€” Donald Lambert. The 0.015 scales it so roughly 70-80% of readings fall within Β±100; it is his, not a tuning knob.


chaikinOsc

import { chaikinOsc } from "indicato";

chaikinOsc(bars, fast, slow)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


chandeKrollStop

import { chandeKrollStop } from "indicato";

chandeKrollStop(bars, p, x, q)

βšͺ by definition β€” Follows its published formula. Held by the property tests β€” causality, warmup, range and flat-series identity.

Chande Kroll stop β€” the same idea with a two-stage lookback.


chandelierExit

import { chandelierExit } from "indicato";

chandelierExit(bars, n, mult)

🟑 scaled β€” Ratio 0.976 against pandas-ta β€” a different ATR variant inside the stop.

Chandelier Exit β€” Le Beau. A stop hung from the highest high since entry.


chop

import { chop } from "indicato";

chop(bars, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Choppiness β€” Dreiss. 100 means directionless, 0 means a clean trend.


cmf

import { cmf } from "indicato";

cmf(bars, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Chaikin Money Flow, and the Chaikin Oscillator over the A/D line.


cmo

import { cmo } from "indicato";

cmo(src, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Chande Momentum Oscillator β€” RSI keeping its sign, so it swings -100..100.

WILDER-SMOOTHED, not a plain window sum. The first version here summed raw up and down moves over n bars, which is a fair reading of Chande’s description and is not what anyone else computes: TA-Lib smooths them the way RSI does, which makes CMO exactly 2*RSI - 100. Verified against TA-Lib to 0.000000000 on 6,126 bars. A CMO that disagrees with every chart a reader has ever seen is a wrong CMO, whatever the book says.


coppock

import { coppock } from "indicato";

coppock(src, a, b, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Coppock Curve β€” a 10-period WMA of two rates of change. Built for monthly bars.


correlation

import { correlation } from "indicato";

correlation(a, b, n)

βšͺ by definition β€” Follows its published formula. Held by the property tests β€” causality, warmup, range and flat-series identity.

Rolling correlation and beta of the close against its own lagged self β€” the two-series versions need a benchmark the chart does not carry.


crsi

import { crsi } from "indicato";

crsi(bars, rsiLen, streakLen, rankLen)

🟑 scaled β€” 1.3% from the OpenAlgo SDK, correlation 1.0000 β€” the rank component’s window edge.

Connors RSI β€” Connors and Alvarez. Three ideas averaged: a very short RSI, an RSI of the streak of consecutive up or down closes, and where today’s return ranks against the last hundred. Built for mean reversion over two or three days.


dema

import { dema } from "indicato";

dema(src, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Double and triple exponential β€” Patrick Mulloy, 1994. Subtracting the lag of an EMA of an EMA is the whole trick.


dmi

import { dmi } from "indicato";

dmi(bars, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


donchian

import { donchian } from "indicato";

donchian(bars, n, prior)

βšͺ by definition β€” Follows its published formula. Held by the property tests β€” causality, warmup, range and flat-series identity.


dpo

import { dpo } from "indicato";

dpo(src, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Detrended Price Oscillator β€” price against an average displaced back by half the period, which removes the trend rather than measuring it.


elderRay

import { elderRay } from "indicato";

elderRay(bars, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Elder Ray β€” how far buyers and sellers pushed past the trend.


ema

import { ema } from "indicato";

ema(values, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


emv

import { emv } from "indicato";

emv(bars, n)

🟑 scaled β€” Γ—10⁴ against the OpenAlgo SDK β€” both scale an arbitrary ratio and neither scaling is canonical.

Ease of Movement β€” Arms. How far price moved per unit of volume.


envelopes

import { envelopes } from "indicato";

envelopes(bars, n, pct)

βšͺ by definition β€” Follows its published formula. Held by the property tests β€” causality, warmup, range and flat-series identity.

Moving-average envelopes β€” a fixed percentage either side.


fisher

import { fisher } from "indicato";

fisher(bars, n)

🟑 scaled β€” Correlation 0.944 against the OpenAlgo SDK β€” Ehlers published 0.66/0.67 smoothing constants, other implementations use different ones.

Fisher Transform β€” Ehlers. Forces a bounded series toward a gaussian shape so turns become sharp rather than gradual.


forceIndex

import { forceIndex } from "indicato";

forceIndex(bars, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Force Index β€” Elder. Price change times volume.


frama

import { frama } from "indicato";

frama(bars, n)

βšͺ by definition β€” Follows its published formula. Held by the property tests β€” causality, warmup, range and flat-series identity.

Ehlers’ fractal-adaptive β€” measures the price path’s fractal dimension over the window and lets that set the EMA’s alpha. A straight run gives D near 1 and a fast average; a jagged one gives D near 2 and a slow one.


gator

import { gator } from "indicato";

gator(bars)

βšͺ by definition β€” Follows its published formula. Held by the property tests β€” causality, warmup, range and flat-series identity.


historicalVolatility

import { historicalVolatility } from "indicato";

historicalVolatility(bars, n, barsPerYear)

βšͺ by definition β€” Follows its published formula. Held by the property tests β€” causality, warmup, range and flat-series identity.

Historical volatility β€” the annualised standard deviation of log returns.

THE ANNUALISATION DEPENDS ON YOUR BAR SIZE and this is the one place a timeframe assumption can be silently wrong. 252 is the count of trading DAYS in a year, so the default is right for daily bars and wrong for every other size: pass 52 for weekly, 12 for monthly, or roughly 1,575 for hourly bars on a 6.25-hour Indian session. Getting this wrong does not error β€” it scales the answer by the square root of the ratio.


hma

import { hma } from "indicato";

hma(src, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Hull β€” Alan Hull. WMA(2*WMA(n/2) - WMA(n), sqrt(n)). Fast and smooth at once, at the cost of overshooting turns.


ichimoku

import { ichimoku } from "indicato";

ichimoku(bars, conv, base, spanB)

βšͺ by definition β€” Follows its published formula. Held by the property tests β€” causality, warmup, range and flat-series identity.

Ichimoku, drawn without the forward shift. The cloud is normally plotted 26 sessions into the future, and a chart that ends today would then end 26 bars of empty space to the right of the last candle. The two spans are drawn at the bar they were computed on, which is the honest version of the same lines.


kama

import { kama } from "indicato";

kama(src, n, fast, slow)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Kaufman’s adaptive β€” speeds up in a trend, slows in chop, via an efficiency ratio of net travel over total travel.


keltner

import { keltner } from "indicato";

keltner(bars, n, mult)

βšͺ by definition β€” Follows its published formula. Held by the property tests β€” causality, warmup, range and flat-series identity.

Keltner channel: an EMA with ATR-width rails. Bollinger’s bands widen with standard deviation, Keltner’s with true range β€” which is why traders watch the pair together, and why shipping one without the other was a gap.


klinger

import { klinger } from "indicato";

klinger(bars, fast, slow, sig)

πŸ”΄ ambiguous β€” Correlation 0.92 against pandas-ta with a ratio of 47, and it does not match their signal line either. Klinger’s original description is ambiguous about the cumulative-measurement logic and implementations genuinely diverge. Treat as unverified.

Klinger β€” Kroll’s volume force, and Price Volume Trend.


kst

import { kst } from "indicato";

kst(src)

🟑 scaled β€” Γ—0.01 against pandas-ta β€” they report a fraction where this reports Pring’s scaled value.

Know Sure Thing β€” Pring. Four smoothed rates of change, weighted 1..4.


linreg

import { linreg } from "indicato";

linreg(src, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


linregSlope

import { linregSlope } from "indicato";

linregSlope(src, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


macd

import { macd } from "indicato";

macd(bars, fast, slow, signal)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

β€”- the families β€”-


massIndex

import { massIndex } from "indicato";

massIndex(bars, n, e)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Mass Index β€” Dorsey. Range expansion as a reversal warning.


mcginley

import { mcginley } from "indicato";

mcginley(src, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

McGinley Dynamic β€” John McGinley. Divides the step by a speed factor so the line tracks price instead of trailing it through a fast move.


median

import { median } from "indicato";

median(src, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Rolling median and variance of the close.


mfi

import { mfi } from "indicato";

mfi(bars, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


mode

import { mode } from "indicato";

mode(src, n, dp)

βšͺ by definition β€” Follows its published formula. Held by the property tests β€” causality, warmup, range and flat-series identity.

Rolling mode, to one decimal. Genuinely rare in trading and included for completeness: on continuous prices almost every value is unique, so it reports the most common ROUNDED price in the window β€” which is a crude support/resistance read and nothing more.


momentum

import { momentum } from "indicato";

momentum(src, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


natr

import { natr } from "indicato";

natr(bars, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Normalised ATR β€” volatility as a percentage of price, so it compares across stocks.


nvi

import { nvi } from "indicato";

nvi(bars)

🟑 scaled β€” Seeds at 1000, per Fosback. Other libraries seed at 0 or 100 and accumulate differently.


obv

import { obv } from "indicato";

obv(bars)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


pivotPoints

import { pivotPoints } from "indicato";

pivotPoints(bars)

βšͺ by definition β€” Follows its published formula. Held by the property tests β€” causality, warmup, range and flat-series identity.

Classic floor-trader pivots from the previous bar.


po

import { po } from "indicato";

po(src, fast, slow)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


ppo

import { ppo } from "indicato";

ppo(src, fast, slow)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Percentage Price Oscillator, and its absolute-difference sibling.


psar

import { psar } from "indicato";

psar(bars, step, max)

🟑 scaled β€” Differs on 24 bars of 5,826, median difference 0.0000 β€” all at a reversal, where a new leg’s starting direction is an implementation choice.

Wilder’s Parabolic SAR, acceleration 0.02 stepping to 0.20. Written out in full rather than approximated: the whole content of the indicator is where it flips, and a flip one bar early is the only thing a reader would check.


pvi

import { pvi } from "indicato";

pvi(bars)

🟑 scaled β€” Seeds at 1000, per Fosback. The OpenAlgo SDK seeds at 100.


pvt

import { pvt } from "indicato";

pvt(bars)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


roc

import { roc } from "indicato";

roc(src, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Rate of change, and momentum’s plain difference.


rsi

import { rsi } from "indicato";

rsi(bars, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

WILDER’S RSI, seeded one bar earlier than TA-Lib.

Measured against TA-Lib 0.7.1 on 6,126 bars: we emit a first value at bar n-1 where it emits at bar n, and Wilder’s smoothing carries that seed forward β€” 0.65 apart at bar 26, 0.08 by bar 50, 0.002 by bar 100, and EXACTLY zero from bar 300 on. No backtest here is affected, because none of them trades inside the warmup. It is written down because a library that is silently a hair different from the reference for its first fifty bars is a library somebody will file an issue about, and they would be right.


rvi

import { rvi } from "indicato";

rvi(bars, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Relative Vigor Index β€” Dorsey. Where the close finished within the bar, smoothed, on the theory that a rising market closes above its open.


rwi

import { rwi } from "indicato";

rwi(bars, n)

🟑 scaled β€” Two unsigned lines here; the OpenAlgo SDK returns one signed line.

Random Walk Index β€” Poulos. How far price travelled against how far a random walk of the same volatility would be expected to.


sma

import { sma } from "indicato";

sma(values, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


starc

import { starc } from "indicato";

starc(bars, n, atrLen, mult)

βšͺ by definition β€” Follows its published formula. Held by the property tests β€” causality, warmup, range and flat-series identity.

STARC bands β€” Stoller. A simple average with Wilder ATR either side.


stc

import { stc } from "indicato";

stc(src, fast, slow, cycle)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Schaff Trend Cycle β€” Schaff. A stochastic applied twice to the MACD line, which makes a slow trend indicator turn like a fast one.


stochastic

import { stochastic } from "indicato";

stochastic(bars, n, k, d)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

The plain stochastic β€” where the close sits inside the recent high-low range. Not the same thing as the Stochastic RSI already in this file, which runs the same formula over RSI instead of over price; the file had the derivative and not the original.


stochRsi

import { stochRsi } from "indicato";

stochRsi(bars, n, k, d)

🟑 scaled β€” Returns the smoothed %K a chart draws; TA-Lib’s STOCHRSI returns the raw fastk. Computed the same way they are identical.

STOCHASTIC RSI. This returns the SMOOTHED %K and its %D β€” the pair a chart draws. TA-Lib’s STOCHRSI returns the raw, unsmoothed fastk, which is our %K before its 3-period average; computed that way the two are identical to 0.000000. Both are right and they are different outputs, so the difference is named here rather than found by someone comparing one against the other.


supertrend

import { supertrend } from "indicato";

supertrend(bars, n, mult)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


t3

import { t3 } from "indicato";

t3(src, n, v)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Tillson T3 β€” six chained EMAs with a volume-factor weighting.


tema

import { tema } from "indicato";

tema(src, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


trima

import { trima } from "indicato";

trima(src, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Triangular β€” a simple average of a simple average, weighting the middle.


trix

import { trix } from "indicato";

trix(src, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

TRIX β€” the percentage change of a triple-smoothed EMA.


tsf

import { tsf } from "indicato";

tsf(src, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


tsi

import { tsi } from "indicato";

tsi(src, long, short)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

True Strength Index β€” Blau. Double-smoothed momentum over double-smoothed absolute momentum.


ulcerIndex

import { ulcerIndex } from "indicato";

ulcerIndex(bars, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Ulcer Index β€” Martin. Depth and duration of drawdown, which is closer to what holding something actually feels like than standard deviation is.


ultosc

import { ultosc } from "indicato";

ultosc(bars, s, m, l)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Ultimate Oscillator β€” Williams. Three horizons weighted 4:2:1, so a single timeframe cannot dominate it.


variance

import { variance } from "indicato";

variance(src, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


vidya

import { vidya } from "indicato";

vidya(src, n, smooth)

🟑 scaled β€” Ratio 0.998 against pandas-ta β€” their alpha default differs from Chande’s CMO-driven one.

Chande’s VIDYA β€” an EMA whose smoothing scales with the CMO, so it moves when direction is one-sided and stalls when it is not.


volumeOsc

import { volumeOsc } from "indicato";

volumeOsc(bars, fast, slow)

🟑 not comparable β€” The classic SMA-based oscillator. pandas-ta ships the Percentage Volume Oscillator, which is EMA-based β€” a different indicator, not a different answer.

Volume oscillator and volume rate of change.


vortex

import { vortex } from "indicato";

vortex(bars, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Vortex β€” Botes and Siepman. Two lines crossing marks a trend change.


vroc

import { vroc } from "indicato";

vroc(bars, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.


vwap

import { vwap } from "indicato";

vwap(bars)

βšͺ by definition β€” Follows its published formula. Held by the property tests β€” causality, warmup, range and flat-series identity.

VWAP β€” running, from the first bar. Intraday VWAP resets daily; on daily bars there is no session to reset on, so this is the cumulative one and is labelled so.


vwma

import { vwma } from "indicato";

vwma(bars, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Volume-weighted: each bar counts for what traded on it.


williamsFractals

import { williamsFractals } from "indicato";

williamsFractals(bars, w)

βšͺ by definition β€” Follows its published formula. Held by the property tests β€” causality, warmup, range and flat-series identity.

Williams Fractals β€” a high with two lower highs either side. Confirmed only two bars later, which is the whole point: it cannot be known sooner.


williamsR

import { williamsR } from "indicato";

williamsR(bars, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Williams %R β€” where the close sits in the range, as a negative percentage.


wma

import { wma } from "indicato";

wma(values, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Weighted moving average: the newest bar counts n times as much as the oldest, weights 1..n over the window. Between SMA (every bar equal) and EMA (weights decay forever), which is the whole reason people ask for it by name.


yearBand

import { yearBand } from "indicato";

yearBand(bars, n)

βšͺ by definition β€” Follows its published formula. Held by the property tests β€” causality, warmup, range and flat-series identity.

The rolling high and low over a window of BARS, defaulting to 252 β€” a trading year of daily sessions. On weekly bars 252 is five years, not one, so pass the window you mean. The name says β€œyear” because that is what it is used for; the maths counts bars.

Excludes the current bar, deliberately: a level computed including today is a level today cannot exceed, so β€œmakes a new 52-week high” would be false on every bar of every stock, for ever, and silently. days, so a calendar year would quietly be a fourteen-month high.


zlema

import { zlema } from "indicato";

zlema(src, n)

βœ… exact β€” Pinned to the value across 6,126 bars of real market history.

Zero-lag β€” Ehlers. An EMA fed price plus its own recent change.