Swing Index Node

Wilder's Price Momentum with Limit-Move Normalization

VolumeMomentumWilder

Overview

The Swing Index Node implements J. Welles Wilder's Swing Index, developed for futures markets. It quantifies the swing in price from bar to bar using a formula that accounts for open, high, low, and close of both the current and previous bar — producing a single value bounded between −100 and +100.

The limitMove parameter represents the maximum allowable price change in a session (daily limit move), which was originally used for commodity futures markets. It normalizes the index so that the theoretical maximum SI of 100 corresponds to a full limit-up or limit-down move. Wilder used the Swing Index primarily as an input to the Accumulative Swing Index (ASI), but SI itself is a useful short-term price momentum oscillator.

Algorithm

K = max(|high − prevClose|, |low − prevClose|)
R = largest of: |high − prevClose|, |low − prevClose|, |high − low|
adjusted: R − 0.5×min(first two) + 0.25×|prevClose − prevOpen|
numerator = close − prevClose + 0.5×(close − open) + 0.25×(prevClose − prevOpen)
SI = 50 × (numerator / R) × (K / limitMove)
Output: SI value bounded approx. ±100. Warm-up: 1 bar (needs previous OHLCV).
SI > 0 = bullish price swing; SI < 0 = bearish price swing.

Parameters

ParameterDefaultDescription
limitMove30Maximum allowable daily price move (limit-move constant for normalization)

Inputs & Outputs

SlotDirectionTypeDescription
inputInputOHLCVStandard OHLCV price and volume data
valuesOutput(number | null)[]SI value (approx. −100 to +100; positive = bullish swing)
timestampsOutputnumber[]Unix timestamps aligned to input

Use Cases

Input to Accumulative Swing Index

The primary intended use of Swing Index is as a component in Wilder's Accumulative Swing Index (ASI). ASI is a running cumulative sum of SI values, forming a smoothed price series. Connect the SI output to a cumulative sum node to build ASI, which can then be analyzed with trendlines and breakout logic.

Zero-Line Oscillator Signals

Cross above zero indicates a bullish price swing (current close stronger than prior close with open/gap context); cross below zero indicates bearish. As a standalone oscillator, SI zero-line crossovers provide early momentum signals that precede trend indicators like MAs.

Futures Limit-Move Detection

In futures markets, an SI reading near ±100 indicates a near-limit-move bar — a very powerful directional day. These extremes can be used to flag potential follow-through days or trigger confirmation-based entry systems in trend-following futures strategies.

Tips & Best Practices

Calibrate limitMove per Instrument

The default limitMove of 30 is calibrated for commodity futures. For equities, use the stock's average daily range (e.g., ATR × price). For crypto, use the approximate daily percentage limit equivalent. Incorrect limitMove values don't break the indicator — they just scale the amplitude. What matters is that the sign and relative magnitude are preserved.

More Useful as a Component

Swing Index as a standalone bar-by-bar oscillator is quite noisy. Its true power emerges when accumulated into ASI or smoothed with a short EMA (3–5 period). Use the raw SI output primarily for building composite indicators or for limit-move detection in futures.

Open Price Required

Unlike many indicators that only use close/high/low, Swing Index uses the open price of both the current and previous bar in its formula. Ensure your OHLCV data source provides accurate open prices — indicators built on candles with unreliable open values will produce distorted SI readings.

Related Indicators