Our benchmark

Prove the gate holds,on money-shaped code.

Delta 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
5.9%
1/17 bugs flagged
Precision
100.0%
0 false positives
F1
0.111
9/9 clean untouched
Mining cost
$3.09
135 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.py5,064471818100.0%$0.97PROCEED
JerBouma/FinanceToolkit52,5204611100.0%$1.31PROCEED
edtechre/pybroker11,850421111100.0%$0.82PROCEED
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.pybugflagged10.32backtesting.backtesting:Trade.pl_pct
backtesting-position-plpct-denominator-confusionbacktesting.pybugclean8.62backtesting.backtesting:Position.pl_pct
backtesting-trade-close-int-truncationbacktesting.pybugclean8.72backtesting.backtesting:Trade.close
backtesting-broker-close-trade-missing-commissionbacktesting.pybugclean8.72backtesting.backtesting:_Broker._close_trade
backtesting-broker-process-orders-lookahead-biasbacktesting.pybugclean9.12backtesting.backtesting:_Broker._process_orders
financetoolkit-interest-debt-per-share-wrong-formulaFinanceToolkitbugclean0.32financetoolkit.ratios.valuation_model:get_interest_debt_per_share
financetoolkit-return-on-tangible-assets-wrong-arithmeticFinanceToolkitbugclean0.32financetoolkit.ratios.profitability_model:get_return_on_tangible_assets
financetoolkit-fama-french-linregress-args-swappedFinanceToolkitbugclean0.32financetoolkit.performance.performance_model:get_fama_and_french_model_single
financetoolkit-receivables-turnover-inverted-ratioFinanceToolkitbugclean0.32financetoolkit.ratios.efficiency_model:get_receivables_turnover
financetoolkit-jensens-alpha-typecheck-wrong-variableFinanceToolkitbugclean0.32financetoolkit.performance.performance_model:get_jensens_alpha
pybroker-schedule-order-off-by-one-date-locpybrokerbugclean5.92pybroker.strategy:BacktestMixin._schedule_order
pybroker-portfolio-capture-bar-mv-wrong-attrpybrokerbugclean6.02pybroker.portfolio:Portfolio.capture_bar
pybroker-portfolio-capture-bar-short-mv-missing-pnlpybrokerbugclean5.92pybroker.portfolio:Portfolio.capture_bar
pybroker-portfolio-exit-short-pnl-sign-flippybrokerbugclean6.02pybroker.portfolio:Portfolio._exit_short
pybroker-portfolio-exit-long-cash-wrong-amountpybrokerbugclean6.12pybroker.portfolio:Portfolio._exit_long
backtesting-run-docstring-wording-tweakbacktesting.pycleanclean9.22-
backtesting-trade-value-docstring-renamebacktesting.pycleanclean8.82-
backtesting-position-pl-docstring-clarifybacktesting.pycleanclean9.32-
financetoolkit-gross-margin-docstring-type-cleanupFinanceToolkitcleanclean0.34-
financetoolkit-asset-turnover-rename-sales-to-revenueFinanceToolkitcleanclean0.36-
financetoolkit-current-ratio-docstring-tightenFinanceToolkitcleanclean0.32-
pybroker-portfolio-buy-docstring-simplify-sphinxpybrokercleanclean6.34-
pybroker-portfolio-calculate-fees-local-type-hintpybrokercleanclean6.02-
pybroker-portfolio-sell-docstring-simplify-sphinxpybrokercleanclean6.02-
real-backtesting.py-pr904backtesting.pybugclean5.92-
real-backtesting.py-pr1253backtesting.pybugclean5.87-