σ-Bench

How reliably do AI coding agents solve quantitative-finance problems?

Verifiable tasks from quant work, frozen LSEG market data, and error bars on every number. Every configuration of harness, model and reasoning effort attempts each task three times.

By Léon Faro, statistics and quantitative finance.

Status
Release 0, updated 2026-10-17. 0 of 450 runs, 0 of 10 tasks built.
Next
A1 variance-ratio-martingale, end to end
Topics
MCMC, martingale tests, Monte Carlo pricing, volatility, FX term structure
Design
10 tasks × 12–15 configurations × 3 runs, about 450 runs per release
Data
LSEG FX and tick data in frozen snapshots, refreshed monthly
Verifier
programmatic, with statistical tolerance for random outputs
Intervals
95%, cluster bootstrap over tasks
JEL
C11, C12, C15, C52, C58, F31, G13

How this benchmark works →


LEADERBOARD

Suite core10-v0: 10 tasks × 3 runs per configuration, run with Harbor [8]. Ranked by pass^3, the share of tasks solved in all three runs. Brackets are 95% intervals from a cluster bootstrap over tasks. Rank = 1 + the number of configurations whose pass^3 interval lies entirely above. * marks the cost–reliability frontier (Figure 1).

Data
RankHarnessModelEffort pass^395% CI pass@195% CI pass@3$/task$/solved TimeStepsTokensCache
No runs yet. Release 1 follows once all ten tasks pass their oracle runs.

Planned: Claude Code, Codex CLI, OpenCode and Pi as harnesses; frontier and open-weight models; reasoning effort low to xhigh. Cost is the API list price on the run date.

Figure 1. pass^3 against mean cost per task, log scale. Blue bars are 95% intervals. Filled points form the cost–reliability frontier. No configuration is cheaper and at least as reliable as a filled point.
Figure 2. Every run. Rows follow the leaderboard, columns run from the most to the least solved task. pass, fail, not run yet. 0 of 450 runs complete.

TASKS

Each task is a container with an instruction, a frozen data snapshot, my reference solution and a verifier that decides pass or fail. A task goes live once its reference solution passes its own verifier on 100 reseeded runs. Solutions, and tasks built on LSEG data, stay private.

A1
variance-ratio-martingalespec, next

Lo–MacKinlay variance ratios VR(q) and robust z*(q) for q = 5, 15, 60 on 1-minute returns, with weekends and gaps handled [6].

Data: LSEG EUR/USD 1-min

A2
heston-martingale-correctionspec

Heston paths with full-truncation Euler. The discounted price must stay a martingale, E[exp(−rT) S_T] = S_0, within the Monte Carlo band on unseen seeds.

Data: synthetic

B1
asian-control-variatespec

Arithmetic Asian call with the geometric Asian as control variate. Correct price and an honest standard error (coverage check) within a compute budget.

Data: synthetic

C1
stochvol-mcmcspec

Bayesian stochastic-volatility model. Posterior means of φ and σ_η match a long NUTS reference, with R-hat < 1.01 and ESS > 400 reported.

Data: LSEG FX daily

C2
mh-sampler-bugfixspec

Find and fix a subtle Metropolis–Hastings bug, such as a missing Hastings ratio or Jacobian. The fixed sampler must match an analytic posterior (KS test).

Data: synthetic

D1
garch-var-backtestspec

GARCH(1,1) with Student-t innovations, one-day 99% VaR. Exceedance count plus Kupiec and Christoffersen p-values.

Data: LSEG, to be decided

E1
fx-forward-settlementspec

Settlement-aware tenor dates (spot lag, holiday calendars, modified following; ON, TN, 1W, 1M) and ACT/365F carry from forward points.

Data: LSEG FX forwards

F1
lookahead-bug-huntspec

Find a look-ahead bias hidden in a backtest, such as a centered window or trading on the close that produced the signal. Report the corrected Sharpe ratio.

Data: LSEG, to be decided

F2
deflated-sharpespec

Deflated Sharpe ratio and probability of backtest overfitting across 200 strategy trials [7].

Data: synthetic

G1
heston-calibrationspec

Calibrate Heston through its characteristic function (Lewis or Carr–Madan) to a volatility surface. Pricing RMSE and parameter recovery.

Data: synthetic surface

Status
spec → build → oracle (reference passes its verifier) → live
Tracks
A martingales · B Monte Carlo · C Bayes and MCMC · D volatility and risk · E rates and FX · F backtest hygiene · G calibration · H contamination
Backlog
A3 optional-stopping-trap, B2 barrier-brownian-bridge, B3 qmc-greeks, C3 regime-switching-gibbs, D2 realized-vol-har, D3 microstructure-signature, E2 term-structure-curvature, F3 weekend-gap-trap, H Green Book originals against perturbed variants

METHOD

Metrics

pass@1
Share of runs that pass. Baseline accuracy.
pass@3
At least one of three runs passes [3]. Can the agent do it at all?
pass^3
All three runs pass [4]. A pricer that is right two times out of three cannot be used, so this is the ranking metric.
rel. error
Relative error of failed answers. Separates near misses from nonsense.
$/task
API cost per attempt. $/solved is total cost over passing runs.
Time, steps
Wall-clock time and agent steps per run.
Tokens, cache
Tokens per run, and the share of prompt tokens read from cache.

Estimators

With T tasks, n = 3 runs per task and c_t passing runs on task t:

pass@k = (1/T) Σ_t [ 1 − C(n − c_t, k) / C(n, k) ]      (1)
pass^k = (1/T) Σ_t C(c_t, k) / C(n, k)                  (2)

(1) is the unbiased estimator of Chen et al. [3]. (2) is the pass^k of τ-bench [4], the chance that k independent attempts all succeed. For n = k = 3 it is the share of tasks solved three times out of three.

Verifying random outputs

Monte Carlo and MCMC answers vary between runs, so for these tasks the verifier is itself a statistical test. An estimate passes when

|θ_hat − θ_ref| ≤ z_(1−α/2) · √(SE_agent² + SE_ref²)
      and  SE_agent ≤ SE_max                                  (3)

with α fixed per task. The reference solution must pass at least 99 of 100 reseeded runs. If it passes fewer, the tolerance is too strict and the task goes back to build.

Uncertainty

Reproducibility

Agents never receive credentials or live data access. Each container holds a frozen data snapshot identified by its hash. Every run writes one record; the values below are examples.

{
  "run":     "r1/A1/H1-M1-high/2",
  "harness": { "name": "…", "version": "…" },
  "model":   { "id": "…", "effort": "high" },
  "data":    { "snapshot": "sha256:4be1…09c2",
               "window": "2026-10" },
  "seed":    20261017,
  "verdict": { "pass": true, "stat": "z*(15)", "value": 2.214,
               "ref": 2.209, "tol": 0.031 },
  "usage":   { "usd": 0.31, "seconds": 372, "steps": 41,
               "tokens_in": 171204, "tokens_out": 11842,
               "cache_hit": 0.87 }
}

PRE-REGISTERED EXPERIMENTS

Hypotheses, design and analysis plan are committed to the repository before the first run. The commit hash appears here once an experiment is registered.

AB1
How much does the harness matter for a fixed model?draft

Same model in Claude Code, Codex CLI, OpenCode and Pi.

AB2
Where does extra reasoning effort stop paying off?draft

One model, effort low to xhigh, cost against pass^3.

AB3
Does a one-page conventions file raise pass^3?draft

With and without a file on day counts, calendars and quoting.

AB4
Does an API reference stop invented identifiers?draft

With and without LSEG API documentation in the container.

AB5
Do agents recall textbook answers?draft

Textbook parameters against fresh data; Green Book originals against perturbed variants.

AB6
What does a correct answer cost with open weights?draft

Open-weight models (Qwen, DeepSeek, GLM) against frontier models.

AB7
Does QuantLib help, or bring the wrong conventions?draft

numpy and scipy only, against QuantLib installed.

AB8
Does asking for a numerical self-check help?draft

Prompt with and without a verification instruction.


LIMITATIONS


LOG

2026-10-15
Concept, tracks and statistics plan written.
2026-10-16
LSEG data access confirmed. sigmabench.dev registered.
2026-10-17
Release 0: this page, no runs yet.
next
A1 variance-ratio-martingale end to end, oracle passing.
next
core10 complete; pilot with two models to calibrate difficulty.
next
Release 1: about 450 runs with intervals and a first write-up.

REFERENCES

  1. [1] I. Badertdinov. Personal coding evals. ibragim.dev
  2. [2] QFBench, quantitative-finance tasks for coding agents. qfbench.com
  3. [3] M. Chen et al. Evaluating large language models trained on code. arXiv:2107.03374, 2021.
  4. [4] S. Yao et al. τ-bench: a benchmark for tool-agent-user interaction in real-world domains. arXiv:2406.12045, 2024.
  5. [5] E. Miller. Adding error bars to evals: a statistical approach to language model evaluations. arXiv:2411.00640, 2024.
  6. [6] A. W. Lo and A. C. MacKinlay. Stock market prices do not follow random walks: evidence from a simple specification test. Review of Financial Studies 1(1), 1988.
  7. [7] D. H. Bailey and M. López de Prado. The deflated Sharpe ratio. Journal of Portfolio Management 40(5), 2014.
  8. [8] Harbor, a runner for agent benchmarks in containers. github.com/harbor-framework/harbor