Make the question admissible
Prevents precise answers to vague or hindsight-defined questions.
- communicate and clarify
- retrieve context, documents and data
- fix definitions, claims, rivals and falsifiers
Quantifact limits the error space around model-generated investment analysis. Follow a real question through research definition, point-in-time data, typed compilation, controlled execution, falsification-aware review, and safe learning.
The system boundary makes authority explicit. Three online subsystems compile evidence; shared services own models, data, execution and artefacts; the fourth subsystem governs learning outside the live success path.
Prevents precise answers to vague or hindsight-defined questions.
Prevents generated code from silently changing the research design.
Prevents terminal autonomy, look-ahead, skipped checks and wasteful reruns.
Prevents user feedback from becoming an untested production mutation.
The success path produces evidence. Learning is a separate governed loop: only an audited failure or expert correction enters it.
Reproducible code can still answer the wrong question. Claims, rival explanations, falsifiers, and limitations are registered before results are known.
The same question at two knowledge dates produces two defensible answers. Late observations are never handed to generated code, and the dates cannot share a cache key.
prices = load_series("MKT.BRENT.CO.TRI")
# loader already bound to the plan's as_of date
load_series("MKT.BRENT.CO.TRI", as_of="later")
# rejected before executionThese are the tasks produced for the bundled research question. Each is a function contract, not a prose to-do: its inputs and output schema exist before code generation.
The numbers below come from the bundled deterministic backend. Run qf bench
on your machine; they describe the mechanism, not a universal latency claim.
Cache identity includes normalized code, upstream keys, data fingerprints, runtime identity, and the knowledge date. A cosmetic code change does not invalidate values; a changed definition does.
The most valuable contributions are adapters with honest vintage semantics, workflows with explicit expected results, contracts that catch real mistakes, and evaluations that expose a missed failure.
Synthetic data, deterministic backend, no credentials.
uv add git+https://github.com/leoncuhk/quantifact qf ask --receipt .qf/run.json