Indicator output tables
Indicator output tables exist only when the Job uses at least one Indicator Instance. They use a wide schema and store numeric outputs beside compact effective-state metadata.
Table names and allocation
The single-table case uses indicators. Larger configurations use indicators_1 through indicators_N.
DataCat allocates at most 1500 indicator output columns per table. One Indicator Instance is indivisible: all outputs from that instance remain together, even when unused capacity remains in the preceding table. meta.indicator_table_count records the actual allocated table count.
Base columns
| Column | Type | Meaning |
|---|---|---|
open_time_ms |
INTEGER PRIMARY KEY |
Joins the output row to bars.open_time_ms |
open_time_utc |
TEXT |
Human-readable UTC mirror |
indicator_output_states_json |
TEXT |
Effective state for every output column in the row |
| Generated output columns | REAL NULL |
Numeric result or NULL when it cannot be computed |
Use indicator_definitions.table_name and column_name to discover the generated output columns. Do not guess them from display labels.
Effective output states
final: numeric output depends only on accepted final real provider input.provisional: output depends on at least onepending_finalizationsource row.derived: output uses calculation-only normalization for at least oneprovider_omittedrow.warmup: output isNULLbecause usable history is insufficient.awaiting_input: output isNULLbecause leading pending input has no previous usable close.unavailable: output isNULLbecause required input is unusable.
When multiple conditions apply, precedence is unavailable > awaiting_input > warmup > provisional > derived > final.
State JSON structure
The JSON value always contains default and exceptions. Outputs not listed in an exception array use the default state.
{
"default": "final",
"exceptions": {
"derived": ["i0005_sma__sma"],
"unavailable": ["i0008_obv__obv"]
}
}
Every output column appears in at most one exception array. Query both the numeric value and its effective state when data quality matters.
NULL output values
A NULL is not automatically a calculation error. It normally corresponds to warmup, awaiting_input, or unavailable. Calculation or persistence failures roll back the candidate transaction rather than committing newer bars with silently stale indicator output.