Summary
InverseFisherRSI is RTTA's streaming Ehlers inverse Fisher transform applied
to RSI. RSI is mapped to a roughly symmetric domain, smoothed with a WMA, then
passed through the inverse Fisher map to produce a sharp oscillator typically
in \((-1, 1)\).
Update API
value = rtta.InverseFisherRSI(rsi_window=5, wma_window=9, fillna=True).update(close)
With fillna=False, output is NaN until rsi_window + wma_window samples
have been processed.
Theory Of Operation
John Ehlers' inverse Fisher transform amplifies values near zero and compresses extremes, turning a smooth oscillator into one with clearer turning points. The common recipe for RSI is:
- Compute RSI.
- Scale RSI so mid-scale (50) maps near 0 and extremes map near \(\pm 5\).
- Smooth with a short weighted moving average.
- Apply \(\tanh\)-equivalent inverse Fisher on the smoothed value.
RTTA uses its streaming RSI and WMA primitives for steps 1–3.
Recurrence
Let \(c_t\) be close, \(n_r\) be rsi_window (default \(5\)), and \(n_w\) be
wma_window (default \(9\)).
Note \(\frac{e^{2y}-1}{e^{2y}+1} = \tanh(y)\). Nested RSI/WMA are constructed
with fillna=True; the outer warm count is \(n_r + n_w\).
Implementation Notes
The recurrence is implemented in src/rtta/indicator.cpp in
class InverseFisherRSI. See also RSI.
