Market Making in Crypto

I am new to market making models and wanted try it out on real time data to see the performance. So I wrote a market making script which uses AS model on real time BTC data with dynamic parameters adjustment based on market conditions.

In addition to the model parameters (volatility, order arrival, risk aversion, spread, inventory etc.) I assumed an order fill probability to simulate the real condition as closely as possible.

I ran the model on paper (but real time data) assuming a starting capital of $10,000 on different time horizons - 1 hour, 30 mins, 10 mins, 5 mins etc.

I always get a positive return. The number of buy and sell orders are close enough, not skewed in one direction. The closing inventory is small, often close to zero. This tells me on paper that it's working like a market maker.

I have not yet included any "alpha" in the model or micro structure features for short term price prediction.

This is what I don't understand - why is it working ? (even without any "alpha"?) I am sure it can't be as simple as this. What challenges come up in actual market maker's trading?

Here's the result from one of the runs. Every run gives almost similar results:

📊 PERFORMANCE:

Duration: 610.1s

Total Trades: 325

Buy/Sell Ratio: 160/165

Initial Capital: $10000.00

Final Value: $10036.96

Total Return: $36.96

Return %: 0.3696%

Total Fees: $2.0965

Net Return: $34.87

Max Drawdown: 0.0%

🎯 INVENTORY MANAGEMENT:

Final Position: -0.0011 BTC

Position Value: $-98.29

Max Inventory: 0.02 BTC

Inventory Ratio: -5.5%

📈 SPREAD ANALYSIS:

Avg Spread: 30.0 bps

Min Spread: 30.0 bps

Max Spread: 30.0 bps

Avg Bid Spread: 15.0 bps

Avg Ask Spread: 15.0 bps

⚙️ MODEL PARAMETERS:

Risk Aversion (γ): 0.100

Volatility (σ): 1.8%

Order Rate (λ): 0.8/s

Market Regime: LOW_VOLATILITY

⚠️ RISK METRICS:

Emergency Mode: NO

Consecutive Losses: 0

Cash: 10135.249513438286

Inventory Value: -98.28522766172692

Total Value: 10036.96428577656

Posted Jan 3, 2026, 9:25 AM UTC

312
Loading comments…