Project Retrospectives
QAP learned to say NO-GO
How an older signal-led crypto pair CLI evolved into a deterministic research workbench where matched passive controls, realistic costs, and evidence can overrule the model.
Date
Read
4 minRepository snapshot
QAP
Deterministic research workbench for evidence before promotion.
- Commits
- 218
- Product
- Workbench
- Research
- Deterministic
Work done
The first QAP asked a familiar research question: does this pair signal look convincing?
The current QAP asks a harsher one: did this policy beat the correct passive counterfactual after realistic costs?
That change sounds like a metric tweak. It forced a different architecture.
In 30 seconds
- Problem: statistical structure can look sophisticated while the resulting policy still loses to a simple passive baseline after fees, slippage, and turnover.
- Decision: make matched economic controls and causal evidence the authority; models are instruments, not judges.
- Proof: the current
qaprepository has deterministic replay, exact portfolio accounting, immutable run artifacts, forward-paper operations, a finite FastAPI command boundary, a React/Vite workbench, and an explicit live-capitalNO-GO.
The predecessor was tradingview_ratio
The older repository grew into QAP — Quantitative Arbitrage Pairs. It was a correctness-first Python CLI with an explicit Discovery → Validation → Signal → Execution lifecycle, vetoes, paper workflows, and a Student-t Copula Mispricing Index near the center of signal authority.
That architecture was useful. It made bad assumptions visible and refused to turn every chart pattern into a trade.
It also carried a hidden commitment: if the statistical model was sophisticated enough and the gates were strict enough, the research direction was probably worth preserving.
The next version had to be willing to reject that commitment too.
The objective changed before the UI did
The current qap repository makes portfolio wealth relative to the correct matched passive HODL/control after costs the primary economic objective.
Coin-unit accumulation is still useful attribution. It cannot redefine a worse portfolio outcome as success.
That immediately changes what counts as evidence. A model can fit. A spread can mean-revert. A pair can look attractive. None of those facts answer the economic question by themselves.
The research path has to include:
- the same starting inventory for strategy and control;
- realistic fees and slippage;
- causal inputs rather than future information;
- matched contribution handling when outside flows exist;
- immutable artifacts so a disappointing run is not quietly rewritten;
- final-OOS discipline so the last holdout does not become another tuning set.
Models became candidates instead of authorities
The earlier QAP architecture made Student-t Copula especially important. The current research process can admit a richer relationship model only if a simpler experiment leaves a specific falsifiable question unanswered.
That is a much healthier hierarchy.
A model is now allowed to end as REJECT. Keeping the code or the idea alive is not itself a success criterion.
The same rule applies to momentum and other candidate families. If a strategy beats one mechanical control but still loses to the declared HODL benchmark, the weaker comparison does not rescue it.
The CLI became a research product
As the evidence contract got stricter, a terminal-only interface stopped being enough for normal use.
The current system includes:
public market evidence
-> deterministic experiments / replay
-> HODL + matched controls
-> immutable run artifacts
-> forward-paper operations
-> FastAPI command/query boundary
-> React/Vite research workbench
The workbench is organized around user questions—Discover, Validate, Portfolios, Results, Activity—while the scientific and economic authority remains in the backend artifacts.
That separation matters. A nicer chart cannot promote rejected research.
NO-GO is a valid product result
The current Phase-12 live-readiness decision remains NO-GO.
QAP has no private exchange credentials, authenticated live trading API, browser order controls, live scheduler, or live-capital authority. The system can continue research and forward-paper work without pretending that implementation progress equals permission to deploy capital.
I like that boundary because it makes failure useful.
A system that can only report “promising” is not doing research. It is doing marketing.
The project is stronger because its old story became wrong
The portfolio used to describe QAP as a Python/Typer pair-validation CLI centered on copula evidence and coin-piece accumulation. That description belongs to the earlier architecture.
The more interesting project is the transition:
signal confidence
-> stricter vetoes
-> matched economic controls
-> deterministic evidence
-> human research workbench
-> explicit NO-GO when the evidence does not earn promotion
The code got larger. The claim got smaller.
That is the direction I trust more.