- Low latencyIn the engine a book update becomes an order in 143 ns (p50). Core pinning, busy polling, AF_XDP or DPDK receive and OpenOnload or XLIO order entry tune the host around it.
- Sweeps in one passThousands of parameter points share one pass over the data, and each gets the result its own backtest gives: 16,384 points over four hours of Binance BTCUSDT futures took 228 s on 8 threads.
- Quote on one venue, hedge on another
xmmmakes the market on one exchange and hedges each fill with an IOC on another. - C++ or Python, backtest or liveOne strategy file runs in backtests, replays and live sessions; replays are deterministic and the simulated exchange models queue position. Python hooks marked
@fastmm.hotcompile to machine code with Numba. - Many accounts, one gatewaySeveral sub-accounts trade behind one venue, and strategy processes attach to one
fastmm-gatewaythat keeps the exchange connections while they restart. - A/B testsParameter sets run side by side, split by instrument, by time block or both, and are compared on markouts and net with paired intervals.
FastMM trades on Binance (spot and USDⓈ-M futures), OKX, Bybit, Gate, Hyperliquid, Lighter, Deribit, Gemini, Coinbase (Advanced Trade and Exchange) and, for US stocks, Alpaca (Venue connectors).
Quickstart¶
python3 -m venv .venv && . .venv/bin/activate
pip install "fastmm-engine[hot]"
fastmm init my-mm && cd my-mm
python backtest.py
backtest py:MyMm seed=1 md_events=7149 steps=12428 wall=0.02s
net pnl -5.5272
realized / unrealized / fees 0.5198 / 0.0005 / 6.0475
fills (maker / taker) 1036 (1036 / 0)
...
The wheel needs Linux x86-64 and Python 3.10 or later; on Debian and Ubuntu, sudo apt install python3-venv first. For C++, see the Quick start in C++ or Build from source.
The same strategy trades live against a simulated exchange on this machine:
pip install "fastmm-engine[live]"
fastmm sim &
python -m fastmm run strategy:MyMm --config sim.toml --duration 60s
Films¶
FastMM in two minutes
What a market maker does, and what FastMM does for one.
The fastest trader wins
Why the quote that moves first keeps the fill.
One tick through the engine
From the market-data packet to the order on the wire.
Dashboard¶
Where to go next¶
- Quick start: a Python strategy, a backtest and a live session against the local exchange.
- Quick start in C++: a C++ strategy backtested from a CMake project.
- Quote on one venue, hedge on another: run
xmmon Binance Demo. - Run in production: what to set before a keyed session runs unattended.
- How FastMM works: the engine thread, the path of one event and what it guarantees.

