Summary
BollingerBands is RTTA's streaming implementation of: Moving-average envelope based on standard deviations.
Update API
result = rtta.BollingerBands().update(value)
The update(...) call consumes one observation using value. advance(...)
uses the same inputs when the caller wants to update state without materializing
a Python return value.
Theory Of Operation
BollingerBands combines a rolling mean with a rolling population-standard-
deviation envelope. The middle band is the local mean, while the upper and
lower bands mark a two-standard-deviation channel around it.
Recurrence
Let \(z_t = value_t\) denote the observation consumed by one
update(...) call and let \(\theta\) denote constructor parameters such as
window lengths, thresholds, and smoothing constants.
update(...) returns a result struct with fields middle, upper, lower.
Composed Primitives
Implementation Notes
The recurrence is implemented in src/rtta/indicator.cpp in class BollingerBands.
Mean and variance share centered rolling moments, avoiding cancellation at
large absolute price levels.
