Market Making Library
A Rust library implementing quantitative market making strategies, starting with the Avellaneda-Stoikov model. This library provides the mathematical foundations and domain models necessary for building automated market making systems for financial markets.
Overview
Market making is the practice of simultaneously providing buy (bid) and sell (ask) quotes in a financial market. The market maker profits from the bid-ask spread while providing liquidity to the market.
Key Challenges
- Inventory Risk: Holding positions exposes the market maker to price movements
- Adverse Selection: Informed traders may trade against you when they have better information
- Optimal Pricing: Balance between execution probability and profitability
The Avellaneda-Stoikov Model
The Avellaneda-Stoikov model (2008) solves the optimal market making problem using stochastic control theory. It determines optimal bid and ask prices given:
- Current market price and volatility
- Current inventory position
- Risk aversion
- Time remaining in trading session
- Order arrival dynamics
Modules
- [
strategy]: Pure mathematical calculations for quote generation - [
position]: Inventory tracking and PnL management - [
market_state]: Market data representation - [
types]: Common types and error definitions - [
prelude]: Convenient re-exports of commonly used types
Quick Start
Import commonly used types with the prelude:
use *;
Examples
Examples will be added once core functionality is implemented.
🛠 Makefile Commands
This project includes a Makefile with common tasks to simplify development. Here's a list of useful commands:
🔧 Build & Run
🧪 Test & Quality
📦 Packaging & Docs
📈 Coverage & Benchmarks
🧪 Git & Workflow Helpers
🤖 GitHub Actions (via act)
ℹ️ Requires act for local workflow simulation and cargo-tarpaulin for coverage.
Contribution and Contact
We welcome contributions to this project! If you would like to contribute, please follow these steps:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Make your changes and ensure that the project still builds and all tests pass.
- Commit your changes and push your branch to your forked repository.
- Submit a pull request to the main repository.
If you have any questions, issues, or would like to provide feedback, please feel free to contact the project maintainer:
Contact Information
- Author: Joaquín Béjar García
- Email: jb@taunais.com
- Telegram: @joaquin_bejar
- Repository: https://github.com/joaquinbejar/market-maker-rs
- Documentation: https://docs.rs/market-maker-rs
We appreciate your interest and look forward to your contributions!
License: MIT