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.

ItemHJB solvedMethodRigor
AvellanedaExactAS HJB (\(\mu=0\), \(\xi=0\), const \(\sigma\))Matrix exponential \((\exp(\tilde{M}(T-t))\mathbf{1})\)Rigorous
AvellanedaDriftExactAS HJB + drift (\(\mu\neq 0\))Matrix exponential, \(\mu q\) on diagonalRigorous
AvellanedaImpactExactAS HJB + permanent impact (\(\xi\neq 0\))Matrix exponential, asymmetric off-diagonalsRigorous
AvellanedaStoikovApproxAS HJB (near maturity \(T-t \to 0\))Taylor expansion of exact solutionApproximation
AvellanedaGueantAS HJB (infinite horizon \(T\to\infty\))Stationary limit via principal eigenvectorApproximation

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)\).

ModelNHJB solvedFD schemeBSDERigor
AvellanedaStoikov2AS HJB (\(\mu=0\), \(\xi=0\))Implicit/Explicit/CNRegress on (q,S)Rigorous
AvellanedaDrift2AS HJB + price drift (\(\mu\neq 0\))Implicit/Explicit/CNRegress on (q,S)Rigorous
AvellanedaImpact2AS HJB + market impact (\(\xi\neq 0\))Implicit/Explicit/CNRegress on (q,S)Rigorous
AvellanedaHawkes2AS HJB + unilateral Hawkes \(\lambda\)Crank-Nicolson + upwindingRegress on (q,\(\lambda\))Rigorous
BilateralHawkes3AS HJB + bilateral Hawkes \((\lambda^+,\lambda^-)\)Crank-Nicolson + upwindingRegress on (q,\(\lambda^+,\lambda^-\))Rigorous
BilateralHawkesOFI3AS HJB + bilateral Hawkes + OFI price impactCrank-Nicolson + upwindingRegress on (q,\(\lambda^+,\lambda^-\))Rigorous
Heston2AS HJB + Heston stochastic volatilityCrank-Nicolson/Strang ADIRegress on (q,v)Rigorous
HestonHawkes3AS HJB + Heston vol + Hawkes \(\lambda\)Crank-Nicolson + upwindingRegress on (q,v,\(\lambda\))Rigorous
AmericanPut1Optimal stopping: \(V_t + \frac{1}{2}\sigma^2 S^2 V_{SS} + rS V_S - rV \le 0\), \(V \ge (K-S)^+\)ImplicitN/ARigorous

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 of optimize(), running_reward()/generator(), terminal(), and next_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.

StrategyConsumesHJB solvedRigor
AvellanedaStoikovExactStrategyPrecomputed AvellanedaExact tables (2D: [q, tau])AS HJB (\(\mu=0\), \(\xi=0\))Rigorous (via exact solution)
AvellanedaStoikovHestonStrategyPrecomputed FDM tables (3D: [q, v, tau])AS HJB + Heston volRigorous (via FD solver)
AvellanedaStoikovHawkesStrategyPrecomputed FDM tables (3D: [q, \(\lambda\), tau])AS HJB + HawkesRigorous (via FD solver)
AvellanedaStoikovBilateralHawkesStrategyPrecomputed FDM tables (4D: [q, \(\lambda^+\), \(\lambda^-\), tau])AS HJB + bilateral HawkesRigorous (via FD solver)
AvellanedaStoikovBilateralHawkesOFIStrategyPrecomputed FDM tables (4D)AS HJB + bilateral Hawkes + OFIRigorous (via FD solver)
AvellanedaStoikovStrategyAS time-dependent spread formulaNone (inline formula)Approximation — uses analytical spread, not the full matrix exponential
ConstantSymmetricStrategyNoneNoneHeuristic — fixed spread, no optimization
ZeroIntelligenceStrategyNoneNoneHeuristic — random spread
RandomStrategyNoneNoneHeuristic — random side/price
KellyStrategyOnline \(\mu/\sigma\) estimation + AS formula with target shiftNone (CARA ansatz with Kelly-inspired bias)Heuristic — no log-utility HJB is solved
ExternalStrategyInjected order requestsN/AN/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.