McClellan Family
6 algorithms in Market Breadth and Internals · 6 with asserted arithmetic.
In this family#
-
Traditional McClellan Oscillator verified
The difference between a 19-day and a 39-day EMA of net advances. Because both averages are taken over raw counts, values are not comparable across eras in which the number of listed issues changed — which is exactly what the ratio-adjusted variant fixes.
calculateMcClellanValues(netAdvances) -
Ratio-Adjusted McClellan Oscillator verified
The McClellan oscillator computed on net advances divided by advances plus declines. Ratio adjustment is what makes a 1970 reading comparable with a 2026 one — without it the oscillator's range grows with the exchange.
calculate(records, cutoff) -
Traditional McClellan Summation Index verified
The running total of the McClellan oscillator. Turns a fast, noisy signal into a slow regime gauge — the oscillator says what is happening this week, the summation index what has been happening for months.
calculate(records, cutoff) -
Ratio-Adjusted Summation Index (RASI) verified
RASI: the summation index built on the ratio-adjusted oscillator. Scaling A−D by 1000/(A+D) makes each input invariant when advances and declines grow together, so issue-count growth does not dominate the scale. Threshold levels remain historical practice, not universal rules.
calculate(records, cutoff) -
McClellan Volume Oscillator verified
The McClellan construction applied to advancing minus declining *volume* rather than issue counts. Weighting participation by share volume gives a series that can move differently from the issue-count oscillator, but this package neither measures nor interprets that difference: divergence signals are excluded. Magnitude is only comparable within one declared volume unit and adjustment basis, because doubling every allocated volume doubles the input, both EMA states, and the oscillator.
calculate(records, cutoff) -
McClellan Volume Summation Index verified
The running total of the volume oscillator — the volume-weighted counterpart of the summation index.
calculate(records, cutoff)
What they share#
Every topic here is a record-transform, so once you have
called one the rest follow the same shape. Import paths differ only in the final segment:
import { calculateMcClellanValues } from "fintech-algorithms/market-breadth-and-internals/mcclellan-family/traditional-mcclellan-oscillator";
import { calculate } from "fintech-algorithms/market-breadth-and-internals/mcclellan-family/ratio-adjusted-mcclellan-oscillator";Read them in the order above — the sequence is pedagogical, not alphabetical.
Where this sits#
Market Breadth and Internals collects 28 algorithms across 5 families. For the concept behind this family rather than the call signatures, see the concept guides.