Skip to main content

market-client (Python)

A high‑level Python client for the HFT Simulator gateway (server/) that mirrors the website's behavior but hides the server details.

  • Automatically performs handshake and login
  • Keeps a persistent CMD WebSocket session
  • Optionally auto-subscribes to the MD stream and maintains simple in‑memory state (symbols, book snapshots)
  • Provides high‑level helpers (get_symbols, get_book, place_order, list_orders)
  • Minimizes HTTP usage: performs requests over a persistent CMD WebSocket session
  • MD-driven book maintenance and candle aggregation with minimal refreshes

Install

This package depends on httpx and websockets.

  • With pip (editable for local dev):
python3 -m venv .venv
. .venv/bin/activate
pip install -e ./market-client

Or install directly:

pip install httpx>=0.24 websockets>=10

Quickstart (high‑level)

import asyncio
from market_client import MarketClient

async def main():
    # One call connects: handshake -> CMD -> login -> MD
    client = await MarketClient.connect("http://localhost:8000", connect_md=True)

    # High-level helpers
    symbols = await client.get_symbols()
    print("symbols:", symbols[:3])

    book = await client.get_book(symbols[0]["sym"], depth=10)
    print("book:", book)

    # Candles: configure and read
    await client.configure_candles(symbols[0]["sym"], interval_ms=1000, depth=50)
    print("candles:", client.get_candles(symbols[0]["sym"])[:3])

    # Orders
    # await client.place_order(sym, side="buy", price="100.00", qty=1)
    # orders = await client.list_orders()
    # print("orders:", orders)

    await client.aclose()

asyncio.run(main())

See examples/simple.py for a runnable sample.

Notes

  • The client auto-fills the JSON envelope (type, ver, msg_id, ts) and matches responses by corr_id.
  • Tokens are handled automatically by connect().
  • When connect_md=True, the client starts a background task to process MD events and keeps a simple book snapshot per symbol. Future iterations can extend this to persistent candles, etc.

API

  • await MarketClient.connect(base_url, connect_md=True, on_md_event=None, on_cmd_event=None)
    • Performs handshake, opens CMD, logs in, and optionally subscribes to MD.
  • High‑level methods
    • await get_symbols(force_refresh=False) -> list of { sym, tick, min_qty, lot, status }
    • await get_book(sym, depth=20) -> { sym, seq, bids, asks } (arrays)
    • await configure_candles(sym, interval_ms=1000, depth=50) -> seeds window; MD updates candles
    • get_candles(sym) -> list of OHLC entries suitable for charting
    • await send(op, payload={}, as_role=None, timeout=5.0) -> generic WS request/response helper
    • await place_order(sym, side, price, qty, tif='GTC') -> payload dict
    • await cancel_order(order_id) -> payload dict
    • await list_orders() -> list of order dicts
    • book_snapshot(sym, depth=20) -> current in-memory book from MD
    • best_bid_ask(sym) -> dict with top-of-book {bid, ask}

Low‑level access (still available if needed):

  • handshake(), api_request(), open_cmd(), open_md()

Request session class

  • RequestSession: alias of the request-capable CMD WebSocket session used internally for minimal-latency requests.

Server assumptions

  • Matches the FastAPI server under server/ with routes:
    • POST /auth/handshake
    • POST /api/request
    • WS /ws/cmd
    • WS /ws/md

Release files for hft-market-client 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hft-market-client 0.1.0
File Size Uploaded
hft_market_client-0.1.0.tar.gz 4.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hft-market-client 0.1.0
File Interpreter ABI Platform
hft_market_client-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 10.6 kB

Release files / hft_market_client-0.1.0.tar.gz

Download URL hft_market_client-0.1.0.tar.gz
Size 4.9 kB
Tags Source
SHA-256 checksum
How to use checksums
1dd28862f7e13e25101b47c5fdab9b25d44ed6eb3299d406eb91b98336d8dfc8
BLAKE2b-256 checksum
How to use checksums
a0e6cd7929c3cecaa9ba0c429ed4e5af469903dea78665eb92216509555b7679
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.12.9 Darwin/25.0.0

Release files / hft_market_client-0.1.0-py3-none-any.whl

Download URL hft_market_client-0.1.0-py3-none-any.whl
Size 5.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e50ea94687d0d0f13402c6235c3c66b6a5ce942b5bc99d11b26824a3b22c6174
BLAKE2b-256 checksum
How to use checksums
8255c2eb94715d4cbe6479c9884391f2cc75693a65f3a5027f4f263ac7775f44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.3 CPython/3.12.9 Darwin/25.0.0

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page