Order Book Matching Engine
Project description
Order Book Matching Engine
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 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 = pd.Timestamp("2023-01-01")
>>> transaction_timestamp = timestamp + pd.Timedelta(1, unit="D")
>>> 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=Timestamp('2023-01-02 00:00:00'))]
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
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
order-matching-0.3.3.tar.gz
(21.1 kB
view hashes)
Built Distribution
Close
Hashes for order_matching-0.3.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 722aaee280c9ce4bf95b125a56e173cc7722b2f0a09e0a64f00419ee6593347c |
|
MD5 | 09f03e7d1a594b7a050b8253bf245b79 |
|
BLAKE2b-256 | 1595242332ee16feed107d141e83e6ce0abcd5e5ffa55e62a948f7929a2740ea |