Our benchmark

Prove the gate holds,on money-shaped code.

DeltaLabs mined and gated 26 entries across three Python repositories: backtesting.py, pybroker, and FinanceToolkit. Bugs are hand-authored plants drawn from real production regression shapes: sign errors on shorts, lookahead bias, denominator confusion, commission accounting drift. Clean entries are no-op refactors that a good reviewer does not flag.

Recall
28.6%
4/14 bugs flagged
Precision
100.0%
0 false positives
F1
0.444
9/9 clean untouched
Mining cost
$12.50
812 calls · gate $0.00
Trend

Recall, precision, and F1 across runs.

Each point is one full benchmark run. The chart tracks how catch rate and false-alarm rate move as the engine improves.

Per-repo funnel

What survived the mine, per repo.

repoLOCproposedsurvivorsratifiedratificationmining $verdict
kernc/backtesting.py0785656100.0%$2.95PROCEED
JerBouma/FinanceToolkit52,520584848100.0%$2.39PROCEED
edtechre/pybroker11,8501557373100.0%$7.15PROCEED
Per-entry verdicts

Every planted regression, one row per entry.

Clean entries and real-PR entries have no planted target function, so their governs column shows a dash.

idrepolabelverdictwall (s)PR linesgoverns
backtesting-trade-plpct-short-sign-errorbacktesting.pybugflagged35.52backtesting.backtesting:Trade.pl_pct
backtesting-position-plpct-denominator-confusionbacktesting.pybugflagged45.72backtesting.backtesting:Position.pl_pct
backtesting-trade-close-int-truncationbacktesting.pybugclean38.62backtesting.backtesting:Trade.close
backtesting-broker-close-trade-missing-commissionbacktesting.pybugclean36.92backtesting.backtesting:_Broker._close_trade
backtesting-broker-process-orders-lookahead-biasbacktesting.pybugclean38.32backtesting.backtesting:_Broker._process_orders
financetoolkit-interest-debt-per-share-wrong-formulaFinanceToolkitupstream-bug-fixclean6.92financetoolkit.ratios.valuation_model:get_interest_debt_per_share
financetoolkit-return-on-tangible-assets-wrong-arithmeticFinanceToolkitupstream-bug-fixclean6.52financetoolkit.ratios.profitability_model:get_return_on_tangible_assets
financetoolkit-fama-french-linregress-args-swappedFinanceToolkitbugclean6.92financetoolkit.performance.performance_model:get_fama_and_french_model_single
financetoolkit-receivables-turnover-inverted-ratioFinanceToolkitupstream-bug-fixclean6.22financetoolkit.ratios.efficiency_model:get_receivables_turnover
financetoolkit-jensens-alpha-typecheck-wrong-variableFinanceToolkitbugclean10.22financetoolkit.performance.performance_model:get_jensens_alpha
pybroker-schedule-order-off-by-one-date-locpybrokerbugclean62.92pybroker.strategy:BacktestMixin._schedule_order
pybroker-portfolio-capture-bar-mv-wrong-attrpybrokerbugclean62.62pybroker.portfolio:Portfolio.capture_bar
pybroker-portfolio-capture-bar-short-mv-missing-pnlpybrokerbugclean60.72pybroker.portfolio:Portfolio.capture_bar
pybroker-portfolio-exit-short-pnl-sign-flippybrokerbugflagged62.62pybroker.portfolio:Portfolio._exit_short
pybroker-portfolio-exit-long-cash-wrong-amountpybrokerbugflagged63.92pybroker.portfolio:Portfolio._exit_long
backtesting-run-docstring-wording-tweakbacktesting.pycleanclean33.82-
backtesting-trade-value-docstring-renamebacktesting.pycleanclean34.12-
backtesting-position-pl-docstring-clarifybacktesting.pycleanclean34.22-
financetoolkit-gross-margin-docstring-type-cleanupFinanceToolkitcleanclean10.44-
financetoolkit-asset-turnover-rename-sales-to-revenueFinanceToolkitcleanclean9.06-
financetoolkit-current-ratio-docstring-tightenFinanceToolkitcleanclean5.92-
pybroker-portfolio-buy-docstring-simplify-sphinxpybrokercleanclean59.04-
pybroker-portfolio-calculate-fees-local-type-hintpybrokercleanclean64.62-
pybroker-portfolio-sell-docstring-simplify-sphinxpybrokercleanclean70.12-
real-backtesting.py-pr904backtesting.pybugclean15.42-
real-backtesting.py-pr1253backtesting.pybugclean15.77-