Skip to main content

Order Book Matching Engine

Project description

Order Book Matching Engine

pytest Documentation Status !pypi !python-versions pre-commit Ruff

Overview

This package is a simple order book matching engine implementation in Python. Its main features are:

  • price-time priority
  • limit and market orders
  • order cancellation and expiration
  • conversion into pandas DataFrame of orders, executed trades, order book summary

Install

pip install order-matching

Documentation

order-book-matching-engine.readthedocs.io

Usage

>>> from datetime import datetime, timedelta
>>> from pprint import pp
>>> import pandas as pd

>>> from order_matching.matching_engine import MatchingEngine
>>> from order_matching.order import LimitOrder
>>> from order_matching.side import Side
>>> from order_matching.orders import Orders

>>> matching_engine = MatchingEngine(seed=123)
>>> timestamp = datetime(2023, 1, 1)
>>> transaction_timestamp = timestamp + timedelta(days=1)
>>> buy_order = LimitOrder(side=Side.BUY, price=1.2, size=2.3, timestamp=timestamp, order_id="a", trader_id="x")
>>> sell_order = LimitOrder(side=Side.SELL, price=0.8, size=1.6, timestamp=timestamp, order_id="b", trader_id="y")
>>> executed_trades = matching_engine.match(orders=Orders([buy_order, sell_order]), timestamp=transaction_timestamp)

>>> pp(executed_trades.trades)
[Trade(side=SELL,
       price=1.2,
       size=1.6,
       incoming_order_id='b',
       book_order_id='a',
       execution=LIMIT,
       trade_id='c4da537c-1651-4dae-8486-7db30d67b366',
       timestamp=datetime.datetime(2023, 1, 2, 0, 0))]

Related Projects

Contribute

Create a virtual environment and activate it:

python -m venv venv
source venv/bin/activate

Install development dependencies:

pip install -e .[dev]

and use pre-commit to make sure that your code is formatted using black and isort automatically:

pre-commit install

Run tests:

pip install -e .[test]
pytest

Run benchmark and see the result either in the terminal or as a plot in benchmark_history.svg:

./benchmark.sh

Build and serve documentation website:

pip install -e .[doc]
mkdocs serve

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

order_matching-0.3.8.tar.gz (80.3 kB view details)

Uploaded Source

Built Distribution

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

order_matching-0.3.8-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file order_matching-0.3.8.tar.gz.

File metadata

  • Download URL: order_matching-0.3.8.tar.gz
  • Upload date:
  • Size: 80.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for order_matching-0.3.8.tar.gz
Algorithm Hash digest
SHA256 cb4944860cf61f11f9dbcf5f9130ac90a4ff959e53bed958b2de8a1ec0531d56
MD5 3564ba538c8ab69fd0fcc0c0f4207823
BLAKE2b-256 9057354fde10f9ea180e5af7e1e73cadd5891aabd6ea050d52d37e30118db9cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for order_matching-0.3.8.tar.gz:

Publisher: workflow.yaml on khrapovs/OrderBookMatchingEngine

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

File details

Details for the file order_matching-0.3.8-py3-none-any.whl.

File metadata

  • Download URL: order_matching-0.3.8-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for order_matching-0.3.8-py3-none-any.whl
Algorithm Hash digest
SHA256 ee762446e7e2518210eb394684e842ab843babc39227d0b85609e97a2baa9e59
MD5 6f1dc0b6ba701ed6e74063d1ad56f01b
BLAKE2b-256 dac4e7bf3a7e7ab796fbc323c0b271e08ea9d78cda8802db900a28f13eceea9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for order_matching-0.3.8-py3-none-any.whl:

Publisher: workflow.yaml on khrapovs/OrderBookMatchingEngine

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