All finance POCs
POC 01Reproducible now

European Vanilla Pricing

One PDE solve. LRDE vs scipy BDF vs closed-form Black-Scholes. The anchor that proves the contour method gives the same answer — faster.

5–7×
Speedup vs scipy BDF
5+
Matching digits ATM
3–6 ms
LRDE wall time per solve
SHA-256
Every price array hashed

The scenario

Set the picture

A quant needs to price a single European call option. The Black-Scholes PDE on a uniform log-S grid discretizes to a linear ODE system dV/dτ = A·V + g(τ), where A is tridiagonal. Today this is solved by time-stepping: Crank-Nicolson, BDF, or ADI, marching through hundreds of small steps.

LRDE computes V(T) as a single contour integral in the Laplace domain. No marching. Cost is independent of maturity and stiffness.

Cost today

The scipy BDF baseline takes 18–37 ms per solve depending on grid size. An in-house Crank-Nicolson kernel is roughly 3–5× faster than scipy, but still marches through time steps for every solve.

Time-stepping cost scales with maturity: a 5-year option costs more than a 1-month option. Fine grids and high vol make it worse.

What changes with LRDE

LRDE solves in 3–6 ms — 5.2–7.4× faster than scipy BDF at matching precision. Both methods agree with the closed-form Black-Scholes price to 5+ digits ATM.

Cost is independent of T: a 5-year option costs the same as a 1-month option. Cost is independent of stiffness: high-vol and fine-grid problems don’t slow down.

The honest comparison to a hand-tuned in-house CN kernel: LRDE is 1.5–2× faster on a single PDE solve. The structural wins show up in POCs 2–4 where LU amortization across many right-hand sides is the dominant advantage.

Measurable outcome

What we claim — and how it survives review

Each line below maps to a captured number in the demo section. Every number is reproducible from the benchmark suite.

  • LRDE and BDF produce the same ATM price to 5+ significant digits across all 9 (n_grid, T) configurations.
  • LRDE wall time: 3–6 ms per solve. BDF wall time: 18–37 ms per solve.
  • Speedup: 5.2–7.4× across the configuration matrix.
  • Both methods agree with the analytical Black-Scholes formula to spatial-discretization precision.
  • Every price array is SHA-256 hashed for bit-identical verification.

The demo

What was tested. How. What the script printed.

The bench script builds a uniform log-S grid around spot ($100, σ=30%, r=5%), discretizes the Black-Scholes PDE into a tridiagonal MOL operator A, and prices a single ATM call three ways: LRDE Talbot contour (N=32), scipy solve_ivp BDF (rtol=1e-8, atol=1e-9), and closed-form Black-Scholes.

Repeated across (n_grid, T) ∈ {80…400} × {0.25, 0.5, 1, 2}. Every cell records wall time, ATM relative error vs the closed form, trade-region relative error, and a SHA-256 of the full price array.

Captured benchmark output

The numbers the script actually printed.

European vanilla: LRDE vs BDF across grid sizes and maturities
nTATM (true)LRDE (ms)BDF (ms)SpeedupLRDE ATM rel err
800.256.59493.4917.685.1×2.17e-05
1000.509.64543.0219.516.5×2.65e-05
1001.0014.24583.0220.386.8×5.49e-05
2000.509.63753.8325.946.8×6.49e-06
2001.0014.23483.5826.607.4×1.36e-05
2002.0021.19863.5927.407.6×2.94e-05
3001.0014.23286.0331.365.2×6.11e-06
4001.0014.23225.4736.116.6×3.51e-06
4002.0021.19495.8337.016.4×7.48e-06

BDF baseline: scipy.integrate.solve_ivp(method='BDF', rtol=1e-8, atol=1e-9). LRDE: Talbot contour, N=32.

Evidence pointers

Where the claims live in the repo

These are the files a reviewer should run to re-derive every number on this page.

  • poc/lrde_hedge_fund/european_vanilla/bench.py
  • poc/lrde_hedge_fund/common/black_scholes.py
  • poc/contour_integration/talbot_solve.py
  • docs/pitch/LRDE_HEDGE_FUND_BRIEF.md §2

Want to see these numbers on your book?

Run the benchmark on your actual vol surface and trade book.

Two weeks, $25K, fully credited. No production integration, no data leaving your premises. Every claim above traces back to a script you can run locally.

Talk to us