Exchange is the single trait every venue implements
(engine/core/src/exchange/traits.rs). Public methods, grouped by purpose:
| Group | Methods |
|---|---|
| Identity | id, name, describe |
| Markets | fetch_markets, fetch_market |
| Orderbook | fetch_orderbook, fetch_orderbook_history |
| Orders | create_order, cancel_order, fetch_order, fetch_open_orders |
| Positions & Balance | fetch_positions, fetch_balance, fetch_balance_raw, refresh_balance |
| Trades & History | fetch_trades, fetch_price_history, fetch_fills, fetch_user_activity |
Capability flags
Not every exchange implements every method.describe() returns an
ExchangeInfo struct with one bool per method:
OpenPxError::Exchange(ExchangeError::NotSupported(...)).
Pagination
Methods that paginate return(items, next_cursor). next_cursor is None
on the last page; pass it back in params.cursor to advance.
| Exchange | Pagination style | Max page size |
|---|---|---|
| Kalshi | Cursor | 1000 |
| Polymarket | Offset | 500 |
fetchMarkets() auto-paginates; Rust and Python
expose the cursor.