Skip to main content

A compact aggregate order-book market simulator.

Project description

orderwave

Compact aggregate order-book simulation for Python, with readable built-in heatmaps.

orderwave keeps the runtime model small: a sparse bid/ask book, Poisson limit/market/cancel flow, bounded mean-reverting fair value, and a light liquidity-state kernel that creates sweep and refill structure without the older heuristic stack.

Overview

Install

pip install orderwave

Quick Start

from orderwave import Market

market = Market(seed=42, capture="visual")
result = market.run(steps=1_000)

snapshot = result.snapshot
history = result.history
overview = market.plot()
heatmap = market.plot_heatmap(anchor="price")
book = market.plot_book()

Public API

  • Market(...): create a simulator with an initial price, tick size, visible depth, seed, optional MarketConfig, and capture="summary" | "visual".
  • step(): advance one step and return the latest snapshot.
  • gen(steps): run multiple steps and return the latest snapshot.
  • run(steps): return SimulationResult(snapshot=..., history=...).
  • get(): return the current snapshot as a dict.
  • get_history(): return the summary history as a pandas.DataFrame.
  • plot(): render the price path with a stable level-ranked signed-depth heatmap. Requires capture="visual".
  • plot_heatmap(anchor="mid" | "price"): render a standalone heatmap on stable level coordinates. Requires capture="visual".
  • plot_book(): render the current order book.

capture="summary" keeps the fast path lean. capture="visual" stores a fixed signed-depth window around the moving market center so the heatmap can show sweep, void, and refill structure clearly. Heatmap rows are always fixed visible ranks, laid out as ask N ... ask 1 | bid 1 ... bid N, so they do not drift vertically with price.

Snapshot and History

Snapshot fields:

  • step
  • last_price
  • mid_price
  • best_bid
  • best_ask
  • spread
  • bids
  • asks
  • bid_depth
  • ask_depth
  • depth_imbalance
  • buy_aggr_volume
  • sell_aggr_volume
  • fair_price

History columns:

  • step
  • last_price
  • mid_price
  • best_bid
  • best_ask
  • spread
  • bid_depth
  • ask_depth
  • depth_imbalance
  • buy_aggr_volume
  • sell_aggr_volume
  • fair_price

Model

  • Fair price follows a bounded mean-reverting Gaussian process.
  • Limit, market, and cancel counts are sampled from Poisson distributions.
  • Event side is driven by fair-value gap, depth imbalance, and recent signed flow.
  • Limit placement mixes inside join/improve, best-level refill, and deeper wall placement.
  • Aggressive flow raises side-specific stress and refill pressure so the heatmap shows asymmetric withdrawal and recovery.

Documentation Assets

Book

Diagnostics

Variants

Regenerate the documentation images with:

python -m scripts.render_doc_images

Render the standalone heatmap example with:

python -m examples.plot_market_heatmap --output artifacts/orderwave_heatmap.png

More docs:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

orderwave-0.6.3.tar.gz (18.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

orderwave-0.6.3-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

Details for the file orderwave-0.6.3.tar.gz.

File metadata

  • Download URL: orderwave-0.6.3.tar.gz
  • Upload date:
  • Size: 18.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for orderwave-0.6.3.tar.gz
Algorithm Hash digest
SHA256 a960d7c73e27d8668dc149ffcdb31ec016e14af4ae6b07a89e4db9ee139f5f24
MD5 8eb6c6e572f057aa1b72ab51bc037b53
BLAKE2b-256 64ed02d4c352e0be754747539ab09924c898d1674dbcf3cc19415a0114b25bf5

See more details on using hashes here.

Provenance

The following attestation bundles were made for orderwave-0.6.3.tar.gz:

Publisher: workflow.yml on smturtle2/quoteflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file orderwave-0.6.3-py3-none-any.whl.

File metadata

  • Download URL: orderwave-0.6.3-py3-none-any.whl
  • Upload date:
  • Size: 16.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for orderwave-0.6.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0d0f40d05cab068f20f27271d30f7728b41b36f2f78aa8e970de99b58a33ab76
MD5 5db5edf6b250e92197a9885f091f50c3
BLAKE2b-256 4c0d38147fef07523c71ad7e34621a212cd609b65931501bff1e877d90517d1b

See more details on using hashes here.

Provenance

The following attestation bundles were made for orderwave-0.6.3-py3-none-any.whl:

Publisher: workflow.yml on smturtle2/quoteflow

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page