API Reference
Complete reference for the fastboxex Python SDK (v3.3).
Module overview
fastboxex
├── Platform ← entry point: Platform.login(cfg, user, pass)
├── Connection ← trading channel: submit orders, drain fills
├── Observer ← read-only monitor: all fills across all connections
├── Arena ← returned by create_arena() / join_arena() / reconnect_arena()
├── Market ← live market data: get_latest(), to_polars()
├── SimExchange ← local simulator: no network, no server
├── SimConnection ← simulator trading: same API as Connection
├── SimMarket ← simulator market data: same API as Market
├── load_config() ← config loader
├── codec ← Side, OrderStatus, RejectReason, Lifecycle + decode helpers
├── types ← Fill, Ack, Snapshot, OpenOrder, Position, Portfolio
└── price ← to_display(), from_float(), tick_round(), ...
Core classes
| Class |
Obtained via |
Description |
Platform |
Platform.login(cfg, user, pass) |
Auth + registration + all factory methods |
Arena |
p.create_arena(), p.join_arena(), p.reconnect_arena() |
Arena lifecycle + connections |
Connection |
p.connection(), arena.connect_generator(), arena.connect_trader(i) |
Order submission + fills |
Market |
p.market(), p.arena_market() |
Live market data |
Observer |
p.observer() |
Read-only fills/portfolio across all connections |
Simulator classes
| Class |
Description |
SimExchange |
Local matching engine — no network |
SimConnection |
Same order API as Connection |
SimMarket |
Same data API as Market |
See the SimExchange guide for usage.
Quick reference
from fastboxex import Platform, load_config
from fastboxex.price import from_float, to_display
import os
cfg = load_config()
p = Platform.login(cfg, "alice", os.environ["FASTBOXEX_PASSWORD"])
# Regular trading
conn = p.connection()
conn.activate(asset_id=1)
conn.submit_limit(1, side=0, price=999_900, qty=100, client_tag=1)
fills = conn.drain_fills()
# Market data
market = p.market()
md = market.get_latest(asset_id=1)
bid, ask = md["bid"], md["ask"]
mid = (bid + ask) // 2 # no "mid" key — compute it
# Observer (all connections)
obs = p.observer()
all_fills = obs.drain_fills()
# Registration + password reset
Platform.register(cfg, "student", "pass", "student@sjtu.edu.cn")
Platform.confirm_registration(cfg, "student@sjtu.edu.cn", code)
Platform.forgot_password(cfg, "student@sjtu.edu.cn")
Platform.reset_password(cfg, "student@sjtu.edu.cn", token, "newpass")
# Arena
arena = p.create_arena("JTW", num_traders=2, reference_price=from_float(100.00),
generator_cash=from_float(50_000_000), generator_inventory=50_000)
gen = arena.connect_generator()
gen.activate(arena.asset_id)
arena.transition_to("trade")
# SimExchange (no server)
from fastboxex import SimExchange, SimConnection, SimMarket
ex = SimExchange(tick_size=100, lot_size=100, reference_price=1_000_000)
ex.add_asset(1)
pid = ex.add_participant("bot", cash=10_000_000_000, inventory=100_000)
ex.transition_to("Trade")
conn = SimConnection(ex, pid)
conn.submit_limit(1, 0, 999_900, 100, client_tag=1)
Protocol constants
from fastboxex import Side, OrderStatus, RejectReason, Lifecycle
from fastboxex import decode_ack, decode_fill, decode_market
| Constant |
Values |
Side |
BUY=0, SELL=1 |
OrderStatus |
New=1, PendingNew=6, Canceled=4, Rejected=8 |
Lifecycle |
Closed, Suspended, BookOnly, Auction, Trade |
Price utilities
from fastboxex.price import to_display, from_float, tick_round, lot_round
raw = from_float(100.00) # → 1_000_000
display = to_display(1_000_000) # → 100.0
aligned = tick_round(1_000_050, tick_size=100) # → 1_000_000