betting_combat.store.trading
The card run’s record in betting.betting_combat: sessions, fight states,
decisions, orders, fills, settlements and the 5-second ticks.
Everything a relaunched card run needs to resume is here: the fight clocks
(fight_states), which rounds were already decided (decisions), and every order
with its fills and settlement.
Classes
FightStateRow
TradingStore
card_orders
card_orders(card_date: dt.date) -> list[OrderRecord]card_settlements
card_settlements(card_date: dt.date) -> list[SettlementRecord]claim_order
claim_order(order: OrderRecord) -> boolThe write-ahead only one run can win: the order is inserted unless its id (or its decision, venue and market) is already recorded. False = someone else owns it and this run must not send it.
close_session
close_session(session_id: str, status: str, error: str | None = None) -> Nonedecided_minutes
decided_minutes(card_date: dt.date) -> set[tuple[str, str, int]]fight_states
fight_states(card_date: dt.date) -> dict[str, FightStateRow]missing_columns
missing_columns() -> list[str]Columns this code writes that the database does not have (empty = current).
open_session
open_session(session_id: str, card_id: str, card_date: dt.date, dagster_run_id: str | None, config_snapshot: dict[str, Any], models_snapshot: dict[str, Any]) -> Noneorder
order(client_order_id: str) -> OrderRecord | Nonesave_decisions
save_decisions(records: Sequence[DecisionRecord], session_id: str) -> Nonesave_fight_states
save_fight_states(states: Sequence[FightStateRow]) -> Nonesave_fills
save_fills(fills: Sequence[FillRecord]) -> Nonesave_order
save_order(order: OrderRecord) -> Nonesave_settlements
save_settlements(settlements: Sequence[SettlementRecord]) -> Nonesave_ticks
save_ticks(ticks: Sequence[dict[str, Any]]) -> Noneunsettled_orders
unsettled_orders(since: dt.date) -> list[OrderRecord]Orders holding contracts (or an unknown outcome) with no settlement yet.