fix: Kalshi market data nested under 'market' key — resolve_bets now correctly settles orders. fix: BTC Binance proxy. All 8 data sources verified. PNL tracking live.

This commit is contained in:
drjones
2026-08-02 20:27:32 -07:00
parent c817216ab1
commit 0408ff026f
9 changed files with 324 additions and 8 deletions

16
bot.py
View File

@@ -420,17 +420,17 @@ def resolve_bets(kx, conn):
for oid, ticker, side, count, px, dry in open_orders:
try:
m = kx.req("GET", f"/markets/{ticker}")
status = m.get("status")
if status not in ("settled", "finalized", "determined"):
# also catch expired-untraded: close_time passed + no result → mark dead
ct = m.get("close_time")
mk = m.get("market", m) # Kalshi nests under "market" key
status = mk.get("status")
if status not in ("settled", "finalized", "determined", "closed"):
ct = mk.get("close_time")
if ct:
from datetime import datetime, timezone
if datetime.fromisoformat(ct.replace("Z","+00:00")).timestamp() < time.time() - 120:
conn.execute("UPDATE orders SET status='expired', settle_ts=? WHERE id=?", (time.time(), oid))
conn.commit()
continue
result = (m.get("result") or "").lower() # 'yes' | 'no'
result = (mk.get("result") or "").lower() # 'yes' | 'no'
if not result:
continue
won = (result == side)
@@ -592,7 +592,8 @@ def run():
for oid, ticker, koid, side, px in open_orders:
try:
m = kx.req("GET", f"/markets/{ticker}")
ct = m.get("close_time","")
mk = m.get("market", m) # Kalshi nests under "market"
ct = mk.get("close_time","")
if ct:
close_ts = datetime.fromisoformat(ct.replace("Z","+00:00")).timestamp()
mins_left = (close_ts - time.time())/60
@@ -643,7 +644,8 @@ def run():
continue
try:
verify = kx.req("GET", f"/markets/{ticker}")
st = verify.get("status", "open")
vm = verify.get("market", verify) # Kalshi nests under "market"
st = vm.get("status", "open")
if st and st not in ("open", "active"):
log_event(conn, "info", f"skip {ticker}: market closed (status={st})")
continue