Open-source infrastructure for AI-assisted quantitative research.
Holdout is not a conventional alpha-factor library or a trading system. It is the evidence, boundary, and review layer around financial AI agents that draft research, run tools, and move quantitative workflows forward.
We build a governance suite for AI-assisted quant research: every conclusion should carry evidence, every check should be reproducible, and every high-risk action should stay inside an explicit boundary.
ashare-data-immunityfor data quality and snapshotspit-adjusterfor point-in-time price meaninglookahead-freefor timing checksfactor-qcfor backtest qualityfalsification-ledgerfor claims and evidence trailslesson-bookfor surfaced past mistakesholdout-governancefor AI-assisted research receipts
The backbone is one flow:
data -> adjust -> timing -> backtest -> falsify -> review -> publish
holdout-governance sits across that flow as the release gate. It checks what was used, what passed, what is missing, and whether a human approved the result.
For AI agents, Holdout is the boundary layer: agents may propose, run checks, and attach evidence, but missing evidence blocks release by default, and final publication or trading authority stays with humans and downstream systems.
This is the unusual part. Most quant tools help researchers discover, backtest, or execute strategies. Holdout governs the workflow around those steps. It asks: what did the agent use, what changed, what evidence exists, what failed, and who approved the result before it moved forward?
| Flow stage | Repository | What it does |
|---|---|---|
| entry / release gate | holdout-governance |
the wrapper: one artifact, one verdict (also gov mcp for agents) |
| data | ashare-data-immunity |
A-share daily-bar quality, snapshots, SHA-256 manifests |
| adjust | pit-adjuster |
point-in-time back-adjustment with drift detection |
| timing | lookahead-free |
verifiable look-ahead-freedom for pipelines |
| backtest | factor-qc |
fail-closed backtest quality gate (DSR/PBO/MinTRL) |
| falsify | falsification-ledger |
pre-registration, hash-chained ledger, adjudication |
| learn (loop-back) | lesson-book |
surfaced past mistakes become the next round's checks |
The pinned repositories on this profile follow this order: release gate first, then the data pipeline in flow order — read the org alphabetically and you miss the chain; read it as pinned and the pipeline reads top-down.
A holdout set is the data you don't touch until the very end — it keeps your story honest. A holdout juror is the one who refuses to go along until the evidence is in. Every research claim deserves both.
- We do not place orders.
- We do not change trading rules.
- We do not give investment advice.
- We do not treat one passing check as proof of profit.
If you are doing AI-assisted financial research, start with
holdout-governance. It records the evidence cutoff, checks that passed,
the AI identity, and the human review state in one manifest.
-
Three data incidents in one night — a production watchdog caught a ×100 scale corruption, then the same investigation surfaced a missing corporate-action event and a mixed-source unit defect. No single check caught all three — the layers did. Both failure signatures are reproducible offline in
pit-adjuster's examples. -
Listed on awesome-quant — 6 of 7 Holdout tools are listed:
falsification-ledger(PR #593, merged 2026-08-29), pluspit-adjuster,factor-qc,lookahead-free,lesson-book, andashare-data-immunity(PRs #611/#620, merged 2026-09-06).
GitHub lists an org's repositories alphabetically and offers no custom ordering, so the profile pins carry the design order. Keep the pinned repositories in flow order (max 6):
holdout-governance— entry / release gateashare-data-immunity— datapit-adjuster— adjustlookahead-free— timingfactor-qc— backtestfalsification-ledger— falsify
To pin: https://github.com/orgs/holdout-labs/repositories → pin each repo in
that order (the pinned section shows them top-down in pin order). lesson-book
(learn / loop-back) and .github are intentionally not pinned; their role is
documented in the flow table above. When a new family member arrives, decide
its flow stage first, then update the table and the pins together — the
alphabetical list below is not the message.