Summary
ATRRegimeDetector is RTTA's streaming implementation of: Stateful ATR regime detector with high/low hysteresis bands.
Update API
result = rtta.ATRRegimeDetector().update(close, high, low)
The update(...) call consumes one observation using close, high, low. advance(...)
uses the same inputs when the caller wants to update state without materializing
a Python return value.
Theory Of Operation
ATRRegimeDetector first constructs a scalar market-state metric from the current observation and compact streaming state, then passes that metric through explicit entry/exit hysteresis. The metric is named in the recurrence below; the hysteresis keeps the output stable until the metric crosses the opposite exit band.
Recurrence
Let \(z_t = (close_t, high_t, low_t)\) denote the observation consumed by one
update(...) call and let \(\theta\) denote constructor parameters such as
window lengths, thresholds, and smoothing constants.
This recurrence composes the standard RTTA ATR update with the same two-sided hysteresis state used by ThresholdRegimeDetector.
The entry/exit constants satisfy \(\ell_e < \ell_x \le u_x < u_e\).
The return value is the current scalar indicator value.
Composed Primitives
Implementation Notes
The recurrence is implemented in src/rtta/indicator.cpp in class ATRRegimeDetector.
