A lightweight Python client for the Amherst College Quant Club Live Trading Engine.
Project description
purpletrader
A lightweight Python client for the Live Trading Engine HTTP API.
Installation
pip install purpletrader
Usage
from purpletrader import TradingEngineClient, Order, Timeframe
# Optionally set a default user_id so you don't have to provide it per order
client = TradingEngineClient(base_url="http://localhost:8080", user_id="trader_123")
# Submit order
resp = client.submit_order(Order(
id="order_001",
symbol="AAPL",
type="LIMIT",
side="BUY",
quantity=100,
price=150.25,
))
print(resp)
# Fetch data
print(client.get_orderbook("AAPL"))
print(client.get_stats("AAPL"))
print(client.get_stats_timeframe("AAPL", Timeframe.ONE_MINUTE))
print(client.get_all_stats())
print(client.get_stats_summary())
print(client.get_leaderboard())
print(client.health())
Example Bots (for quick engine testing)
This repo also includes simple example bots under bots/ to exercise the live trading engine:
- Market maker: continuously quotes around mid.
- Momentum: buys breakouts, sells breakdowns.
- Random: sends random buy/sell orders.
Each bot is a CLI that targets one or more symbols and a user id. They use the purpletrader client to interact with the engine's HTTP API.
Quick start:
# Set the engine base URL (adjust host/port for your deployment)
export ENGINE_URL="http://localhost:8080"
# Market maker on AAPL, user trader_mm
python -m bots.market_maker --base-url "$ENGINE_URL" --user-id trader_mm --symbol AAPL \
--spread-bps 5 --qty 10 --tick-sec 1.0
# Momentum on AAPL, user trader_momo
python -m bots.momentum --base-url "$ENGINE_URL" --user-id trader_momo --symbol AAPL \
--lookback 20 --threshold-bps 10 --qty 5 --tick-sec 1.0
# Random bot on AAPL and MSFT
python -m bots.random_bot --base-url "$ENGINE_URL" --user-id trader_rand --symbol AAPL --symbol MSFT \
--qty-min 1 --qty-max 20 --tick-sec 0.5
# Run multiple bots concurrently from a config file
python -m bots.runner --base-url "$ENGINE_URL" --config bots/examples/bots.yaml
HPC/Slurm example
See bots/examples/slurm_job.sbatch for a minimal Slurm job that launches two bots. Submit via:
sbatch bots/examples/slurm_job.sbatch
Notes
- Raises
HTTPErroron non-2xx responses withstatus_code,message, andbody. - Default timeout is 30s; override via
TradingEngineClient(timeout=...). - You can still override
userIdper order by passing it in theOrder.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file purpletrader-0.1.1.tar.gz.
File metadata
- Download URL: purpletrader-0.1.1.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1863a4741f2736b6d13df021f857a07dddc1007f5ff4c99ccc5c87024de5a1d7
|
|
| MD5 |
13fcf539b77fd70f9e009c3c7ea16565
|
|
| BLAKE2b-256 |
22edb03fa77b44fa596512e5e808c082c31ea63f951a7d5138dc9c9249f3b799
|
File details
Details for the file purpletrader-0.1.1-py3-none-any.whl.
File metadata
- Download URL: purpletrader-0.1.1-py3-none-any.whl
- Upload date:
- Size: 5.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f45a651b10e0df7909b66e7ee8a5967145daf2a146e71b48069659bd6aa2c051
|
|
| MD5 |
7925507439a6ed257b6440b23407a03b
|
|
| BLAKE2b-256 |
5840b52a9d4ffa1d8b9d8d3fb9cc201b7e39c99cfcd9998d66c03b515dd9d733
|