Engine Strategies
The engine crate defines its own Strategy trait for order-book-aware
trading:
#![allow(unused)] fn main() { pub trait Strategy { fn on_tick(&mut self, obs: &Observation, requests: &mut Vec<OrderRequest>); } }
This is a different trait from market_model::PriceStrategy. It operates
on Observation (BBO, portfolio, volatility, drift, parameters) and emits
OrderRequests (place, cancel, cancel-all) into the exchange.
Available strategies
Avellaneda-Stoikov family
The core market-making strategy with several variants:
-
AvellanedaStoikovStrategy: the canonical AS quotes. Optional online volatility estimation (EWMA rolling window) and real-vol passthrough. Optional permanent price impact adjustment. -
AvellanedaStoikovHestonStrategy: AS quotes with Heston stochastic volatility dynamics. The strategy observes the current variance from theObservationfilter. -
AvellanedaStoikovHawkesStrategy: AS quotes with Hawkes self-exciting intensity dynamics. -
AvellanedaStoikovBilateralHawkesStrategy: separate Hawkes intensities for bid and ask sides. -
AvellanedaStoikovBilateralHawkesOrderFlowImbalanceStrategy: extends the bilateral Hawkes variant with an order flow imbalance signal for additional adverse selection protection. -
AvellanedaStoikovExactStrategy: uses the exact (non-approximate) AS solution for the optimal spread.
Baseline strategies
-
ConstantSymmetricStrategy: posts a fixed spread around the mid price. Good for isolating the effect of spread width. -
ZeroIntelligenceStrategyandRandomStrategy: random order placement. Used as noise-trader agents in multi-agent simulations. -
ExternalStrategy: loads strategy parameters from a configuration file. Allows swapping strategies without recompiling.
Observation filtering
Each agent sees a filtered view of the market via ObservationFilter:
- Transparent: all ground truth visible (volatility, drift, parameters).
- Opaque: only BBO and portfolio visible.
- Partial: whitelist of visible parameters.
This lets you test strategies under realistic information constraints: a market maker that cannot observe true volatility must estimate it from price data.