- **Similar:** [RSI](../rsi/Rsi.md), [CMO](../cmo/Cmo.md) | **Complementary:** Bollinger Bands for volatility | **Trading note:** Jurik RSX; smoother version of RSI with less noise. Same 0–100 scale.
Mark Jurik's RSX represents the pinnacle of bounded momentum oscillator design. Standard RSI suffers from a fundamental paradox: raw RSI produces jagged noise triggering false signals at overbought/oversold boundaries, but smoothing introduces unacceptable lag that delays turning points. RSX solves this through cascaded IIR filter topology that eliminates high-frequency noise while preserving linear phase response. The result: output so smooth it resembles a sine wave, yet turns precisely at market extrema with zero effective lag.
## Historical Context
Jurik Research specializes in signal processing for noisy financial data. Mark Jurik developed RSX as the flagship momentum filter in their commercial indicator suite during the 1990s. The algorithm remained proprietary for decades, with reverse-engineering attempts producing approximations of varying quality. Key insight: rather than applying post-hoc smoothing to RSI (which destroys timing), RSX processes momentum and absolute momentum through identical filter chains before computing the ratio. This preserves the phase relationship that determines turning point accuracy.
The filter chain topology draws from control systems engineering: cascaded second-order sections with specific pole placement achieve steep rolloff without phase distortion in the passband. Financial practitioners recognized that RSX peaks are unambiguous (no chatter), making divergence analysis reliable rather than speculative.
## Architecture & Physics
RSX processes momentum through a six-stage filter architecture: three cascaded stages for momentum, three identical stages for absolute momentum. Each stage contains two coupled EMA-like filters with a specific combination formula.
### 1. Momentum Extraction
Raw momentum scaled for numerical stability:
$$
M_t = (P_t - P_{t-1}) \times 100
$$
The 100× scaling prevents underflow in filter calculations while maintaining proportionality. Absolute momentum computed simultaneously:
$$
|M_t| = |P_t - P_{t-1}| \times 100
$$
### 2. Smoothing Constant Derivation
Alpha derived from period with specific formula:
$$
\alpha = \frac{3}{N + 2}
$$
where $N$ is the period parameter. Decay constant precomputed:
$$
\text{decay} = 1 - \alpha
$$
For period 14: $\alpha = 0.1875$, $\text{decay} = 0.8125$. The numerator 3 (rather than 2 as in standard EMA) provides faster initial response while the cascaded structure handles smoothing.
### 3. Filter Stage Architecture
Each stage contains two coupled IIR filters. For stage $k$ with input $x$:
$$
f_{k,1} = f_{k,1,\text{prev}} \cdot \text{decay} + \alpha \cdot x
This $(3f_1 - f_2)/2$ formula provides phase lead compensation: $f_2$ lags $f_1$, and subtracting a fraction of the lagged signal from the leading signal reduces net lag while maintaining smoothness.
### 4. Three-Stage Cascade
Momentum passes through three stages sequentially:
Plus three auxiliary: LastPrice, LastValidValue, IsInitialized. Total state: 15 scalars (120 bytes). Bar correction via `_p_state` snapshot enables rollback when `isNew=false`.
## Mathematical Foundation
### Transfer Function Analysis
Each filter stage approximates a second-order lowpass with phase lead compensation. The combination $3f_1 - f_2$ creates a pole-zero arrangement that partially cancels the phase lag introduced by $f_2$.
The weighted combination introduces a zero that partially compensates the double pole. Three such stages provide steep rolloff (approximately -36 dB/decade in the stopband) while maintaining near-linear phase response below the cutoff frequency.
### Frequency Response Characteristics
| Period | Cutoff (-3dB) | Phase at Cutoff | Stopband Atten (Nyquist) |
| :---: | :---: | :---: | :---: |
| 10 | 0.089 cycles/bar | -22° | -42 dB |
| 14 | 0.064 cycles/bar | -18° | -48 dB |
| 21 | 0.043 cycles/bar | -14° | -54 dB |
| 28 | 0.032 cycles/bar | -11° | -58 dB |
Low phase shift at cutoff means turning points align closely with price extrema. High stopband attenuation eliminates bar-to-bar noise.
### Convergence Behavior
RSX converges faster than equivalent smoothing applied post-hoc to RSI. Effective warmup:
| Period | 99% Settled | 95% Settled |
| :---: | :---: | :---: |
| 10 | ~25 bars | ~18 bars |
| 14 | ~35 bars | ~25 bars |
| 21 | ~52 bars | ~38 bars |
| 28 | ~70 bars | ~50 bars |
## Performance Profile
### Operation Count (Streaming Mode, per bar)
| Operation | Count | Cycles | Subtotal |
| :--- | :---: | :---: | :---: |
| SUB (momentum) | 1 | 1 | 1 |
| MUL (×100) | 1 | 3 | 3 |
| ABS | 1 | 1 | 1 |
| FMA (12 filters) | 12 | 4 | 48 |
| MUL (×3, ×0.5) | 6 | 3 | 18 |
| ADD (stage outputs) | 6 | 1 | 6 |
| DIV (ratio) | 1 | 15 | 15 |
| ADD/MUL (normalize) | 2 | 3 | 6 |
| Clamp (branch) | 1 | 2 | 2 |
| **Total** | **31** | — | **~100 cycles** |
FMA operations dominate, accounting for 48% of compute. Filter chain updates are the critical path.
### Batch Mode Analysis
Due to recursive filter structure, RSX cannot benefit from SIMD vectorization across bars. Each bar depends on all 12 filter states from the previous bar. However, the FMA operations themselves are hardware-accelerated on modern CPUs.
| Mode | Cycles/bar | Throughput |
| :--- | :---: | :---: |
| Scalar (FMA) | ~100 | 10M bars/sec |
| Scalar (no FMA) | ~140 | 7M bars/sec |
FMA provides ~30% improvement through reduced rounding error accumulation and instruction fusion.
### Memory Profile
| Component | Bytes |
| :--- | :---: |
| State struct (15 doubles + bool) | 128 |
| Previous state (snapshot) | 128 |
| Constants (α, decay) | 16 |
| **Per instance** | **272 bytes** |
Zero heap allocation in hot path. All state in stack-allocated record struct.
1.**Overbought/Oversold Trading Style**: Because RSX is noise-free, it does not chatter in and out of OB/OS zones. When RSX crosses 70, it typically stays there until the trend genuinely reverses. Traders accustomed to RSI "fade" strategies (selling immediately at 70) must adapt: RSX signals are fewer but higher quality.
2.**Period Selection Confusion**: RSX period does not map directly to RSI period. RSX with period 14 is significantly smoother than RSI(14). For comparable smoothness to RSI(14), use RSX(8-10). For RSI-equivalent responsiveness, use shorter RSX periods.
3.**Divergence Dependency**: RSX excels at divergence analysis because peaks are unambiguous. However, divergence alone is insufficient: always confirm with price action or volume. RSX makes false divergences rare, not impossible.
4.**Warmup Period Underestimation**: While the minimum period is $N$ bars, RSX requires approximately $2.5N$ bars to fully settle. First $N$ bars should be considered unreliable for signal generation.
5.**Comparison with Smoothed RSI**: Smoothing RSI post-hoc (e.g., RSI → EMA) introduces lag that RSX avoids by smoothing momentum before ratio computation. Smoothed RSI at equivalent smoothness shows 3-5 bar lag at turning points; RSX shows near-zero.
6.**Zero Crossover Interpretation**: RSX 50 represents neutral momentum (equal up and down movement). Extended periods at 50 indicate consolidation, not trend. Some traders misinterpret 50 as a signal line; it is a reference level, not a trigger.
7.**Multi-Timeframe Alignment**: RSX on higher timeframes provides trend context; RSX on lower timeframes provides entry timing. Mismatched timeframe signals (e.g., hourly RSX bearish, daily RSX bullish) require resolution before action.