Files
QuanTAlib/lib/momentum/rsx/Rsx.md
T

78 lines
3.5 KiB
Markdown

# RSX: Relative Strength Quality Index
> RSX is to RSI what a Tesla is to a horse-drawn carriage: same basic concept, vastly superior engineering.
Mark Jurik's RSX is widely considered the "gold standard" of bounded momentum oscillators. It solves the classic RSI paradox: standard RSI is plagued by "jitter" (jagged noise that triggers false signals), but smoothing it usually introduces unacceptable lag. RSX produces a curve so smooth it looks like a sine wave, yet it turns *precisely* at market tops and bottoms with zero lag.
## The Jurik Standard
Jurik Research specializes in signal processing for noisy financial data. RSX is their flagship momentum filter. It is designed to be "noise-free," meaning it eliminates the minor fluctuations that cause RSI to chatter around the 70/30 levels, while preserving the major phase information (the timing of the turns).
## Architecture & Physics
RSX does not use a simple moving average. It employs a complex, multi-stage IIR (Infinite Impulse Response) filter chain to process momentum.
1. **Momentum Calculation**: We compute the raw momentum ($P_t - P_{t-1}$).
2. **Dual Smoothing**: We pass both the momentum and the absolute momentum through a proprietary cascading filter structure.
3. **Ratio**: We divide the smoothed momentum by the smoothed absolute momentum.
4. **Normalization**: The result is scaled to the 0-100 range.
### The Filter Chain
The magic lies in the filter chain. It consists of three cascaded stages, each containing two internal filters. This specific topology is tuned to eliminate high-frequency noise while maintaining linear phase response in the passband. The result is a signal that looks "future-smoothed" but is calculated entirely in real-time.
### Zero-Allocation Design
The calculation involves 12 state variables per update (6 for momentum, 6 for absolute momentum). Our implementation uses a struct-based state machine to ensure zero heap allocations during the update loop.
## Mathematical Foundation
The algorithm is a recursive filter network.
### 1. Momentum
$$
M_t = (P_t - P_{t-1}) \times 100
$$
### 2. Smoothing Chain
The algorithm passes both $M_t$ and $|M_t|$ through the filter chain.
$$
SmoothM = \text{FilterChain}(M_t, \text{Period})
$$
$$
SmoothAbsM = \text{FilterChain}(|M_t|, \text{Period})
$$
### 3. RSX Calculation
$$
RSX = \left( \frac{SmoothM}{SmoothAbsM} + 1 \right) \times 50
$$
The result is clamped to [0, 100].
## Performance Profile
Despite the complexity of the filter chain, the operation is purely arithmetic and highly efficient.
| Metric | Complexity | Notes |
| :--- | :--- | :--- |
| **Throughput** | ~12ns / bar | 12 state updates per bar |
| **Allocations** | 0 bytes | Hot path is allocation-free |
| **Complexity** | O(1) | Constant time per update |
| **Precision** | `double` | Critical for recursive filter stability |
## Validation
We validate against **Jurik's published algorithms** and **ProRealTime implementations**.
- **Smoothness**: The output is visually distinct from RSI; it lacks the "sawtooth" pattern.
- **Phase**: Turning points align with price peaks/valleys with negligible delay.
### Common Pitfalls
- **Overbought/Oversold**: Because RSX is so smooth, it doesn't "chatter" in and out of the OB/OS zones. When it crosses 70, it tends to stay there until the trend truly reverses. This requires a different trading mindset than the "fading" often used with RSI.
- **Divergence**: RSX is the ultimate tool for divergence trading because its peaks are distinct and unambiguous.