Exchange
kalshi
Severity
MEDIUM
What Our Normalizer Expects
The kalshi normalizer does not access is_provisional from raw market objects. The field is not declared in the KalshiRawMarket TypeScript interface and is not mapped to any unified field.
What The Live API Returns
The live markets endpoint (GET /trade-api/v2/markets) returns:
markets[].is_provisional: boolean
When true, this indicates the market's settlement is provisional and subject to revision.
Impact
- Normalized kalshi markets carry no indication of provisional settlement status
- Consumers may treat provisional settlements as final, leading to incorrect P&L or position calculations
- No way to filter or flag provisional markets in the unified feed
Suggested Fix
- Add
is_provisional?: boolean to the KalshiRawMarket interface
- Surface it on the normalized
UnifiedMarket (e.g., as isProvisional in sourceMetadata or as a top-level flag if the unified type supports it)
Found by automated response shape drift audit
Exchange
kalshi
Severity
MEDIUM
What Our Normalizer Expects
The kalshi normalizer does not access
is_provisionalfrom raw market objects. The field is not declared in theKalshiRawMarketTypeScript interface and is not mapped to any unified field.What The Live API Returns
The live markets endpoint (
GET /trade-api/v2/markets) returns:When
true, this indicates the market's settlement is provisional and subject to revision.Impact
Suggested Fix
is_provisional?: booleanto theKalshiRawMarketinterfaceUnifiedMarket(e.g., asisProvisionalinsourceMetadataor as a top-level flag if the unified type supports it)Found by automated response shape drift audit