Performance accounting honestly.
Lesson 22 introduced the Trade Journal as the canonical record. This lesson goes deeper into the metrics every analytics surface displays — and the specific labeling discipline that prevents trader self-deception. Forward-required CAGR and path-from-baseline are different questions and need separate labels. Alpha is reserved for beta-adjusted excess return; raw difference is "Excess Return." % of HCF denominators must match the variable's user-facing label. The framework's display contract (shipped as v6.6.0) enforces every surface to agree on these definitions. The discipline isn't fancy math; it's labeling honesty.
The five metrics that matter
- Profit Factor — Σ(winners) ÷ |Σ(losers)|. Above 1.5 = real edge.
- Sharpe ratio — annualized return ÷ annualized vol. Gates at ≥26 weekly observations.
- Actual CAGR (path-from-baseline) — annualized compound return from journal's first entry.
- Forward-Required CAGR — return required from current equity to hit goal. Different question, different number.
- Alpha — beta-adjusted excess return. Distinct from raw "Excess Return."
Forward-required vs path-from-baseline — different questions
Trader has $50K, goal is $100K in 5 years. Path-from-baseline (Actual CAGR) says: "I started with $50K six months ago, now I have $54K, that's an 8% annualized run rate." Forward-required says: "I have $54K now and need $100K in 4.5 years — that requires 15% from here." Both are valid; they answer different questions. Conflating them produces nonsense like "my CAGR is 15%" when the trader actually needs 15% going forward but has only achieved 8% so far.
The framework labels them separately on the Goal Math surface. Actual CAGR shows the historical path; Forward-Required shows the required forward rate. Users see both numbers; they're not allowed to merge.
Alpha vs Excess Return
"Alpha" gets misused constantly in retail context. The technical definition: portfolio return minus beta-adjusted benchmark return. If a portfolio has beta 1.2 to the S&P and returns 18% in a year the S&P returns 12%, the beta-adjusted benchmark is 12% × 1.2 = 14.4%. Alpha = 18% − 14.4% = 3.6%. The trader did 3.6% better than what their market exposure alone would predict.
"Excess Return" = portfolio return minus benchmark return, no beta adjustment. Same scenario: 18% − 12% = 6% Excess Return. Different number, different meaning. A leveraged portfolio can show high Excess Return with zero or negative Alpha — they made more than the benchmark, but only because they took more risk to do it.
The framework labels both. "Alpha" appears only when beta is computed. "Excess Return" appears when beta isn't or shouldn't be in the analysis. Conflating them flatters performance.
The % of HCF denominator alignment
"3.5% of HCF" tells you nothing unless HCF is defined consistently across all surfaces. The framework's specific rule: % of HCF denominators must match the variable's user-facing label. If "HCF" means cash + Treasuries + SGOV/USFR per Lesson 13, every surface using "% of HCF" computes the denominator the same way. The Sizer, the Risk Status Bar, the Inst Metrics, the Drawdown panel all use identical math. Any surface that diverges (e.g., uses `wt_cash3` raw value instead of HCF) gets fixed in the next display-contract pass.
Sample-size gates as labeling honesty
The framework displays "insufficient sample" rather than computed values when below the gates (Sharpe ≥ 26 weeks, CAGR ≥ 6 months, PF flagged below 30 trades). This is also a labeling discipline: showing 1.9 Sharpe over 8 weeks is statistically meaningless, and most retail platforms display it anyway. The framework refuses to display a meaningless number — even though the math would compute. Honest accounting means refusing to lie via small samples.
The display contract (v6.6.0)
Shipped as v6.6.0 on 2026-05-02 after a 15-fix-group sweep across all analytics surfaces. The contract enforces:
- Trade Journal is the canonical store; every other surface reads from it
- Sample-size gates uniform across surfaces
- "Alpha" and "Excess Return" labeled distinctly per their math definitions
- Forward-Required and Actual CAGR labeled separately, never merged
- % of HCF denominators identical across all surfaces (read the armor stack, not raw cash3)
- Same `closed` filter / win definition / Profit Factor formula across Trade Journal + Inst Metrics + Risk Status Bar (Trade Journal is canon)
- O*-prefix labels on options-sleeve rules (no fake "Pillar 7" / "Pillar 12" claims)
The contract is enforced at code-review time when any analytics surface changes. New surfaces inherit the contract; non-conforming displays get fixed in the next pass.
The real lesson
Performance accounting honestly isn't fancy math — it's labeling discipline. Forward-Required and Actual CAGR are different questions. Alpha and Excess Return are different definitions. % of HCF denominators must match the user-facing variable. Sample-size gates prevent small-sample lies. The framework's display contract enforces every surface to agree, so the trader can't cherry-pick whichever number flatters this week. Most retail dashboards conflate these casually and silently inflate the felt performance; the framework makes the labeling structural so the trader sees honest numbers even when uncomfortable.
Related: L22 — journal canonical · L32 — pre-flight chain