{ "_comment": "Copy to data/ibkr_contracts.json and fill in your own IBKR ForecastEx conids. data/ibkr_contracts.json is git-ignored. IBKR uses TWO conids per strike — one for YES (right=CALL, the 'or above' side) and one for NO (right=PUT). Find them via the included scripts/discover_ibkr.py once your Gateway is auth'd (it walks /iserver/secdef/strikes + /iserver/secdef/info for a given underlying conid + month and prints YES/NO pairs). `close_iso` is the UTC timestamp the contract settles at (e.g. 4pm ET = 20:00:00Z during EDT). The scanner pairs each entry to the Kalshi KXBTCD market closing at the same instant with nearest strike.", "contracts": [ { "asset": "BTC", "strike": 71000, "yes_conid": 886364930, "no_conid": 886364935, "close_iso": "2026-05-24T20:00:00Z", "label": "BTC > $71,000 @ 4pm ET, 5/24" }, { "asset": "BTC", "strike": 71500, "yes_conid": 886364936, "no_conid": 886364941, "close_iso": "2026-05-24T20:00:00Z", "label": "BTC > $71,500 @ 4pm ET, 5/24" }, { "asset": "BTC", "strike": 72000, "yes_conid": 886364947, "no_conid": 886364950, "close_iso": "2026-05-24T20:00:00Z", "label": "BTC > $72,000 @ 4pm ET, 5/24" } ] }