Skip to content
Ahmed Hamza

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 min

Repository snapshot

QAP

Deterministic research workbench for evidence before promotion.

Commits
218
Product
Workbench
Research
Deterministic

Work done

Matched passive controlsForward-paper evidenceReact research workbench

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

QAP evolution from signal authority to evidence authority The older tradingview_ratio QAP CLI evolves through an evidence reset into the current deterministic qap research workbench with matched passive controls and an explicit live-capital no-go boundary. QAP / the authority moved MODEL CONFIDENCE → MATCHED ECONOMIC EVIDENCE EARLIER / tradingview_ratioSignal-led QAP CLICopula signal authorityvetoes + paper workflow EVIDENCE RESETCan it beat the control?after costs, causally CURRENT / qapResearch workbenchdeterministic replaymatched HODL / controlsimmutable evidenceFastAPI + React/Vite CURRENT PRODUCT BOUNDARY Research and forward-paper work can continue while live-capital authority remains NO-GO. LESSONThe code got larger; the claim got smaller.
The important change was authority: the model moved down the hierarchy and the counterfactual moved up.

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:

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.