Calculate once on the whole requested history, then align to finite, strictly
increasing UTC evaluation times. The confirmed prefix ends at the first
unconfirmed bar or unknown availability; that bar and all later bars remain
in expression input but cannot emit. Availability is the cumulative maximum
across each prefix. Simultaneously available rows select the latest one.
Missing/nonfinite results become null and replace older readings. An empty
snapshot returns {} without invoking the expression; an empty target with
nonempty requested history still evaluates to obtain named empty columns.
Invalid timestamps, metadata, options or output shapes throw IndicatorInputError.
Inputs are fully validated before the callback. Runtime is O((n + targets) *
columns), plus expression cost. No transport, aggregation or clock inference.
Calculate once on the whole requested history, then align to finite, strictly increasing UTC evaluation times. The confirmed prefix ends at the first unconfirmed bar or unknown availability; that bar and all later bars remain in expression input but cannot emit. Availability is the cumulative maximum across each prefix. Simultaneously available rows select the latest one.
Missing/nonfinite results become null and replace older readings. An empty snapshot returns {} without invoking the expression; an empty target with nonempty requested history still evaluates to obtain named empty columns. Invalid timestamps, metadata, options or output shapes throw IndicatorInputError. Inputs are fully validated before the callback. Runtime is O((n + targets) * columns), plus expression cost. No transport, aggregation or clock inference.