InteractingMultipleModelFilter

Incremental, causal technical analysis documentation

Summary

InteractingMultipleModelFilter is RTTA's streaming implementation of: Four-regime IMM Kalman tracker that blends low-volatility, high-volatility, trend, and chop models by online probabilities.

Update API

result = rtta.InteractingMultipleModelFilter().update(close)

The update(...) call consumes one observation using close. advance(...) uses the same inputs when the caller wants to update state without materializing a Python return value.

Theory Of Operation

InteractingMultipleModelFilter treats the input stream as noisy observations of a latent state. Each call performs the standard predict/update cycle, then projects the updated state into the public scalar or result fields.

Recurrence

Let \(z_t = close_t\) denote the observation consumed by one update(...) call and let \(\theta\) denote constructor parameters such as window lengths, thresholds, and smoothing constants.

\[\hat{x}_{t|t-1}=F\hat{x}_{t-1|t-1}, \qquad P_{t|t-1}=FP_{t-1|t-1}F^\top+Q\]
\[K_t=P_{t|t-1}H^\top(HP_{t|t-1}H^\top+R)^{-1}\]
\[\hat{x}_{t|t}=\hat{x}_{t|t-1}+K_t(z_t-H\hat{x}_{t|t-1}), \qquad P_{t|t}=(I-K_tH)P_{t|t-1}\]

update(...) returns a result struct with fields value, velocity, low_vol_probability, high_vol_probability, trend_probability, chop_probability.

Implementation Notes

The recurrence is implemented in src/rtta/indicator.cpp in class InteractingMultipleModelFilter.

Reference