Rigor Reference
This page catalogues every solver item and engine strategy, mapping each to the HJB equation it solves and the method used. Use it to understand what problem is being solved and with what rigour.
Rigor levels
- Rigorous: solves the stated HJB from first principles, no shortcuts. Numerical solutions (FD, BSDE) are rigorous when they discretize the exact HJB without further approximation.
- Approximation: controlled simplification with known error bounds (e.g. asymptotic expansion, small-parameter limit, stationary limit).
- Heuristic: practical rule derived from rigorous theory but without formal derivation or error bounds.
Solver: Analytical Solutions
All analytical solutions solve the CARA-utility AS HJB with \(U(x) = -e^{-\gamma x}\) and exponential fill intensities \(\lambda(\delta) = A e^{-k\delta}\). The reduced HJB and its matrix-exponential solution are derived in Exact Solutions in Stochastic Optimal Control.
| Item | HJB solved | Method | Rigor |
|---|---|---|---|
AvellanedaExact | AS HJB (\(\mu=0\), \(\xi=0\), const \(\sigma\)) | Matrix exponential \((\exp(\tilde{M}(T-t))\mathbf{1})\) | Rigorous |
AvellanedaDriftExact | AS HJB + drift (\(\mu\neq 0\)) | Matrix exponential, \(\mu q\) on diagonal | Rigorous |
AvellanedaImpactExact | AS HJB + permanent impact (\(\xi\neq 0\)) | Matrix exponential, asymmetric off-diagonals | Rigorous |
AvellanedaStoikovApprox | AS HJB (near maturity \(T-t \to 0\)) | Taylor expansion of exact solution | Approximation |
AvellanedaGueant | AS HJB (infinite horizon \(T\to\infty\)) | Stationary limit via principal eigenvector | Approximation |
Solver: Numerical Models (ControlProblem<N> trait)
All models implement ControlProblem<N> and are solved by either
PolicyIterationSolver (FD on a grid) or BsdeSolver
(least-squares Monte Carlo). Models solved on a diffusive grid also
implement the FD-specific PdeProblem<N> transport contract.
All market-making models below use the CARA utility ansatz \(V = -e^{-\gamma(X + qS + \theta)}\). The HJB they discretize is the reduced PDE for \(\theta(t,q,\ldots)\).
| Model | N | HJB solved | FD scheme | BSDE | Rigor |
|---|---|---|---|---|---|
AvellanedaStoikov | 2 | AS HJB (\(\mu=0\), \(\xi=0\)) | Implicit/Explicit/CN | Regress on (q,S) | Rigorous |
AvellanedaDrift | 2 | AS HJB + price drift (\(\mu\neq 0\)) | Implicit/Explicit/CN | Regress on (q,S) | Rigorous |
AvellanedaImpact | 2 | AS HJB + market impact (\(\xi\neq 0\)) | Implicit/Explicit/CN | Regress on (q,S) | Rigorous |
AvellanedaHawkes | 2 | AS HJB + unilateral Hawkes \(\lambda\) | Crank-Nicolson + upwinding | Regress on (q,\(\lambda\)) | Rigorous |
BilateralHawkes | 3 | AS HJB + bilateral Hawkes \((\lambda^+,\lambda^-)\) | Crank-Nicolson + upwinding | Regress on (q,\(\lambda^+,\lambda^-\)) | Rigorous |
BilateralHawkesOFI | 3 | AS HJB + bilateral Hawkes + OFI price impact | Crank-Nicolson + upwinding | Regress on (q,\(\lambda^+,\lambda^-\)) | Rigorous |
Heston | 2 | AS HJB + Heston stochastic volatility | Crank-Nicolson/Strang ADI | Regress on (q,v) | Rigorous |
HestonHawkes | 3 | AS HJB + Heston vol + Hawkes \(\lambda\) | Crank-Nicolson + upwinding | Regress on (q,v,\(\lambda\)) | Rigorous |
AmericanPut | 1 | Optimal stopping: \(V_t + \frac{1}{2}\sigma^2 S^2 V_{SS} + rS V_S - rV \le 0\), \(V \ge (K-S)^+\) | Implicit | N/A | Rigorous |
Numerical method details
- FD Policy Iteration: discretizes the HJB on a tensor-product grid. At each time step: (1) policy improvement via \(\sup\) optimization on each grid node, (2) policy evaluation via solving a linear system (SOR, Thomas tridiagonal, or LAPACK dgtsv).
- BSDE: forward Euler-Maruyama simulation, backward least-squares regression onto a polynomial basis (Power, Hermite, Chebyshev, or Laguerre). Regresses continuation values, then applies the control optimiser to extract optimal \(\lambda_\pm\).
- Both solvers are generic over
ControlProblem<N>. Correctness for any model reduces to correct implementation ofoptimize(),running_reward()/generator(),terminal(), andnext_step().
Engine: Strategies
Engine strategies consume observations and emit order requests. They are separate from the solver: some consume precomputed solver output, others use closed-form formulas, and others are entirely heuristic.
| Strategy | Consumes | HJB solved | Rigor |
|---|---|---|---|
AvellanedaStoikovExactStrategy | Precomputed AvellanedaExact tables (2D: [q, tau]) | AS HJB (\(\mu=0\), \(\xi=0\)) | Rigorous (via exact solution) |
AvellanedaStoikovHestonStrategy | Precomputed FDM tables (3D: [q, v, tau]) | AS HJB + Heston vol | Rigorous (via FD solver) |
AvellanedaStoikovHawkesStrategy | Precomputed FDM tables (3D: [q, \(\lambda\), tau]) | AS HJB + Hawkes | Rigorous (via FD solver) |
AvellanedaStoikovBilateralHawkesStrategy | Precomputed FDM tables (4D: [q, \(\lambda^+\), \(\lambda^-\), tau]) | AS HJB + bilateral Hawkes | Rigorous (via FD solver) |
AvellanedaStoikovBilateralHawkesOFIStrategy | Precomputed FDM tables (4D) | AS HJB + bilateral Hawkes + OFI | Rigorous (via FD solver) |
AvellanedaStoikovStrategy | AS time-dependent spread formula | None (inline formula) | Approximation — uses analytical spread, not the full matrix exponential |
ConstantSymmetricStrategy | None | None | Heuristic — fixed spread, no optimization |
ZeroIntelligenceStrategy | None | None | Heuristic — random spread |
RandomStrategy | None | None | Heuristic — random side/price |
KellyStrategy | Online \(\mu/\sigma\) estimation + AS formula with target shift | None (CARA ansatz with Kelly-inspired bias) | Heuristic — no log-utility HJB is solved |
ExternalStrategy | Injected order requests | N/A | N/A |
HJB Derivation References
The full HJB derivation, CARA separation, and matrix-exponential solution are in Exact Solutions in Stochastic Optimal Control.
The Merton and linear-quadratic closed forms are in Exact Solutions in Stochastic Optimal Control. The Kelly criterion and its relationship to CARA are in Optimal Criteria.