The UNION FAMILY LADDER — every configuration IN FULL (specs + all recorded numbers)
One-line definition: the Union Ladder is the full-record compendium of every union-family configuration — sealed, recorded, and rejected alike — with each member's complete ruleset and every recorded result number standing in one place, so the whole family can be read side by side without chasing deltas across ledger entries.
Shared machinery (every member, verbatim across the family): NSE bhavcopy EQ+BE+BZ, corporate-action adjusted (the adjust code), split-ratio quarantine (the quarantine code), PIT sector assignment by trailing-500d excess-correlation to the 16 NSE sector indices (yearly refresh), UNION signals — TREND: price-RSI(14) > its 50-SMA AND ≥70% trailing-quarter consistency vs own sector· TURN "6b": RSI(14)-of-RS < 30 → ≥ 30 in trailing ~60d — quarterly rebalance (first trading day Jan/Apr/Jul/Oct), trailing stop −20% from peak close @1% slip, 0.15%/side costs, dead names −50%, same-close convention (-F1 next-day variant = the standing honesty check), benchmark Nifty Next 50 buy-and-hold PR (TRI recut owed), beta/alpha vs Nifty 500 quarterly. Dividend accrual (TR rows) = parsed ₹-per-share ex-date credits at raw-price denominators — a LOWER BOUND (97.7% coverage 2012+, ~34% before).
1. 🔒 THE UNION — seal a9a14058… (the union prereg notes; ledger 16U→X)
Distinct rules: universe floor ABSOLUTE ₹5cr prior-month ADV· no beta cap· engine-order top-60 (documented-rank corrected 16Z)· equal-weight 1/60· idle → Next-50 while Nifty 500 ≥ 200DMA else 0% cash.
| window | CAGR | MaxDD | ₹1Cr→ | β | α | inv |
|---|---|---|---|---|---|---|
| FULL 2006-26 PR | 17.5% | −30.5% | 26.04× | 0.87 | +6.8% | 82% |
| FULL TR | 18.1% | −29.3% | 29.19× | 0.87 | +7.4% | |
| 2006-11 | 19.0% | −27.9% | 2.60× | 0.77 | +9.8% | 67% |
| 2012-17 | 16.5% | −16.2% | 2.32× | 1.42 | −4.6% | 80% |
| 2018-26 | 18.1% | −22.9% | 3.95× | 0.91 | +8.3% | 96% |
2. 🔒 UNION-β14 — seal 08b46199… (the union beta14 prereg notes; ledger 16Y)
Distinct rules: union + EXCLUDE qualifiers with trailing-250d beta vs Nifty 500 > 1.4 (min 150 obs; incomputable kept). Engine-order top-60, EW, sleeve200, 0% cash.
| window | CAGR | MaxDD | ₹1Cr→ | β | α | inv |
|---|---|---|---|---|---|---|
| FULL PR | 18.1% | −24.7% | 28.84× | 0.74 | +8.4% | 69% |
| FULL TR | 18.7% | −24.1% | 32.39× | 0.74 | +9.0% | |
| 2006-11 | 17.4% | −23.0% | 2.42× | 0.67 | +9.3% | 53% |
| 2012-17 | 19.1% | −8.3% | 2.62× | 1.03 | +3.4% | 58% |
| 2018-26 | 18.8% | −15.7% | 4.14× | 0.82 | +9.2% | 90% |
| FULL @2% slip | 17.0% | −25.8% | 24.09× | 0.75 | +7.4% |
Kill-checks recorded (16Y): cap plateau 1.3–1.6 all-positive; beta-window 125/500d robust; dead-cash decomposition proves selection-not-sleeve (2012-17 −5.6% → +1.7% with idle at 0%); 29.0% of qualifier-quarters genuinely excluded, 0.38% kept-missing.
3. 🔒 UNION-C40RA — seal 0715a0d9… (the union c40ra prereg notes; ledger 16AB)
Distinct rules: β14 + rank capped qualifiers by RISKADJ (126d return ÷ 63d vol, min 30 obs; incomputable last) + hold TOP-40 (EW 1/40). Sleeve200, 0% cash.
| window | CAGR | MaxDD | ₹1Cr→ | β | α | inv |
|---|---|---|---|---|---|---|
| FULL PR | 21.0% | −28.4% | 47.29× | 0.81 | +10.3% | 84% |
| FULL TR | 21.8% | −27.5% | 54.29× | 0.82 | +11.0% | |
| 2006-11 | 17.9% | −25.1% | 2.47× | 0.79 | +9.2% | 73% |
| 2012-17 | 20.9% | −8.3% | 2.84× | 1.04 | +4.3% | 78% |
| 2018-26 | 24.6% | −18.3% | 6.15× | 0.81 | +14.3% | 97% |
| FULL @2% slip | 19.7% | −29.8% | 38.34× | 0.83 | +9.2% | |
| FULL next-day (-F1) | 20.0% | −28.5% | 39.86× | 0.82 | +9.5% | |
| worst-honest (lagged+2%+TR) | 19.5% | −29.0% | 37.15× | 0.83 | +9.1% | |
| 2017+ slice (16AG table) | 30.1% | −17.9% | 11.37× | 0.85 | +16.4% | 100% |
4. 📋 A1-COMPOSITE (era-floor RAW + rf-cash) — recorded 16AE, unregistered
Distinct rules: C40RA + era-relative floor RAW (monthly (1−P)-quantile of the ADV cross-section, P = 0.450 frozen; NO clamp) + idle in the bear state earns rf (Nifty 1D Rate Index 2016-06-23+, flat 6.5%/yr before — the attribution code convention). Top-40 EW.
| window | CAGR | MaxDD | ₹1Cr→ | β | α | inv |
|---|---|---|---|---|---|---|
| FULL PR | 25.6% | −32.0% | 100.43× | 0.82 | +14.5% | 99% |
| FULL TR | 26.4% | −32.0% | 114.91× | 0.82 | +15.2% | |
| 2006-11 | 20.2% | −32.0% | 2.75× | 0.69 | +11.3% | 98% |
| 2012-17 | 31.6% | −13.7% | 4.53× | 1.49 | +5.2% | 100% |
| 2018-26 | 27.5% | −17.9% | 7.44× | 0.80 | +17.5% | 100% |
| @2% slip | 24.0% | −34.4% | 77.58× | 0.83 | +13.1% | |
| @3% slip | 22.4% | −36.7% | 59.85× | 0.84 | +11.6% | |
| next-day | 24.7% | −34.8% | 87.25× | 0.82 | +13.8% | |
| worst-honest | 24.0% | −37.1% | 77.35× | 0.83 | +13.1% |
⚠ Dominated by A2 (equal CAGR, 3–6pp worse MaxDD, half the tail ADV, 2012-17 realized β 1.49 vs 1.29; 2013 floor dips to ₹0.37cr — cost model not credible at that tail). Kept for the record.
5. 📋 A2-COMPOSITE (era-floor CLAMPED + rf-cash) — recorded 16AE; **the lower-drawdown
alternative, registration-ready on the desk's word**
Distinct rules: as A1 but floor = max(₹1cr, monthly (1−P)-quantile), P = 0.450 frozen. Top-40 EW, rf-earning bear-cash.
| window | CAGR | MaxDD | ₹1Cr→ | β | α | inv |
|---|---|---|---|---|---|---|
| FULL PR | 25.5% | −27.2% | 99.03× | 0.82 | +14.2% | 97% |
| FULL TR | 26.3% ( measured, 16AO) | −27.2% | 113.65× | 0.82 | +14.9% | |
| 2006-11 | 22.2% | −27.2% | 3.01× | 0.73 | +12.8% | 93% |
| 2012-17 | 28.6% | −13.7% | 4.00× | 1.29 | +5.4% | 97% |
| 2018-26 | 27.4% | −17.9% | 7.37× | 0.82 | +17.1% | 100% |
| @2% slip | 23.9% | −29.3% | 77.21× | 0.83 | +12.8% | |
| @3% slip | 22.4% | −31.4% | 60.12× | 0.84 | +11.5% | |
| next-day | 24.6% | −29.4% | 85.40× | 0.82 | +13.6% | |
| worst-honest | 23.9% | −31.5% | 76.53× | 0.83 | +12.9% |
Median pick-ADV ₹7.7–11.3cr (early/mid windows) vs C40RA's ₹27cr — the character change (16AE): small/mid-cap tilt, personal-scale capital only. Its 2017+ slice = the 30.1% PR row in §3 (same machinery on that window).
6. 🔒 COMPOSITE-30 — THE CONFIRMED LEAD (the desk 2026-07-16), seal in
the union composite30 prereg notes (ledger 16AF/16AH)
Distinct rules: A2-composite + hold TOP-30 + LET-WINNERS-RUN weights (retained names keep market-drifted weight, hard cap 5% of book; entrants 1/30 from freed/idle capital; exit on deselection/stop/death). Everything else per the shared machinery + A2 floor + rf-cash.
| window | CAGR | MaxDD | ₹1Cr→ | β | α | inv |
|---|---|---|---|---|---|---|
| FULL PR | 26.4% | −31.7% | 115.69× | 0.82 | +15.1% | 99% |
| FULL TR | 27.3% | −31.6% | 131.80× | 0.82 | +15.8% | |
| 2006-11 | 24.7% | −31.7% | 3.36× | 0.73 | +14.6% | 97% |
| 2012-17 | 29.2% (TR 30.5%) | −13.1% | 4.10× | 1.32 | +5.8% | 99% |
| 2018-26 | 28.0% (TR 28.9%) | −18.1% | 7.69× | 0.78 | +18.2% | 100% |
| @2% slip | 24.8% | −33.8% | 89.19× | 0.83 | +13.7% | |
| @3% slip | 23.2% | −35.9% | 68.65× | 0.84 | +12.2% | |
| next-day | 25.2% | −34.1% | 94.84× | 0.81 | +14.2% | |
| worst-honest | 24.4% | −36.3% | 83.50× | 0.83 | +13.5% |
Component single-axis rows (16AF, on the A2-composite base): top-30 alone 25.9%/α+14.6· let-winners-run alone 26.5%/α+15.1/DD −27.3· rank-weights alone 26.3%/α+15.1/β0.79 (passed; not composed — drift took the declared precedence).
6b. 🔒 THE R-IMPROVEMENT SIBLINGS — the HOLD / DEEP variants (2026-07-22; ledger 16BD/16BE/16BF)
Three sealed variants from the "lift CAGR / cut drawdown" research pass, each = an existing base + one or two orthogonal, individually robustness-swept levers. Unlike §1–§6 (whose tables are FLAT/seal-basis), these are measured on the identical Zerodha real-cost gauntlet (ledger 16BC), so their NET numbers are comparable to each other. Forward-tested 2026-10-03+ beside the four originals; family adjudication picks ≤1 across ALL sealed specs (these share levers/base with K30/A2, disclosed in their preregs, so a joint pass ≠ separate discoveries).
The two levers:
- HOLD (16BD) — retain a held name while it stays within the top 2× the holding count (refill to size from the best non-held survivors). Cuts turnover + mildly improves selection; drawdown ≈ unchanged. Robust across bands 40–90.
- DEEP (16BE) — the TURN leg fires only from a deeper oversold: RSI-of-RS < 20 (vs the shared machinery's < 30). Higher-conviction turns → stronger bounces AND fewer false turns, so it RAISES return and CUTS drawdown. Robust across floors <25/<20. (Sector-relative RS only — index-relative was tested and FAILED the positive-geometric selector bar, 16BE.)
| sibling | seal | = base + lever(s) | flat CAGR | NET (gauntlet) | ₹1cr → net | worst drop |
|---|---|---|---|---|---|---|
| _(COMPOSITE-30 baseline)_ | 07ef2ef9… | — | 26.4% | +17.8% | ₹27.6cr | −38% |
| K30-HOLD | e6994c19… | COMPOSITE-30 + HOLD (top-60) | 27.2% | +19.0% | ₹33.6cr | −38% |
| A2-HOLD | 17e0dd1a… | A2 (EW top-40) + HOLD (top-80) | 26.6% | +18.6% | ₹31.5cr | −33% |
| K30-DEEP-HOLD | b705f770… | COMPOSITE-30 + DEEP + HOLD | 27.5% | +19.2% | ₹34.8cr | −29% |
Read: K30-DEEP-HOLD is the best net (19.2%) AND the lowest drawdown (−29%) of the whole family — the stack keeps the HOLD return-boost and the DEEP drawdown-cut. A2-HOLD is the lower-drawdown equal-weight cousin (its net is mildly OPTIMISTIC — equal-weight under-charges reweight drift under the gauntlet, 16BC). ⚠ all IN-SAMPLE, and net-of-cost ≠ net-of-selection; K30-DEEP-HOLD carries the HIGHEST overfit risk of the seven (two stacked in-sample levers) — disclosed in its prereg. Per-window breakdowns not separately run (the gauntlet is full-period). Preregs: the union k30 hold prereg notes· the union a2 hold prereg notes· the union k30 deephold prereg notes. All seven siblings now grade mechanically in the union forward code on 2026-10-03+ (ledger 16BG).
7. ❌ The walls (full detail in catalog §G + the ledger)
Sector caps· RSI-rank both ways· beta-rank-asc· 6b threshold/combo/timeframe variants· quality tilt/drop (16Z)· ML Ridge-primary (16AA: 20.4 vs control 20.8 on 2017+)· ML GBM-primary over the era-floor pool (16AG: 21.1 vs the RISKADJ hand rule's 30.1 on 2017+; beta #1 feature all three runs)· trail widths ≠ 20· sleeve-index swaps· cap-floor refill· vs-bench consistency· monthly cadence (4× confirmed)· cross-family LOWVOL_MOM blend, corr 0.83 (16AC)· throttle (16W)· inverse-vol sizing (16X — narrowed by 16AF to VOL-based sizing only)· AND-intersection (16V)· BE/fundamentals vetoes (16T).
8. Measurement estate — TRI RECUT COMPLETE (ledger 16AI/16AJ)
The honest hurdle: Nifty Next 50 TRI = 14.6%/yr full-period (11.3 / 25.1 / 11.5 by window), +1.3pp over the PR bar. Data: the niftyindices hist code (the committed fetch tool; pipeline verified to the paisa vs index_rows) → the niftyindices folder on the box: N500 TRI + NN50 TRI full 2005→2026, GS-10Yr 2011+, GS-Composite 2018+. α vs Nifty 500 TRI (betas unchanged): union +5.8· β14 +7.5· C40RA +9.4· A1c +13.5· A2c +13.3· COMPOSITE-30 +14.2 (book-TR pairing +14.8, windows +14.0/+5.0/+18.0) — every member survives the honest recut; full table in ledger 16AJ. B2 G-sec bear-sleeve: INERT on the lead (idle ~1%) and DATA-BOUNDED on the union (the 2008-09 bear predates the 2011+ G-sec series) — a design option for future bears, no backtest evidence, not adopted. rf convention frozen (1D-Rate + 6.5% proxy). Dividend accrual = lower bound. Median pick-ADV (/16AO, full-period / recent-4-rebalances, ₹cr): U 24.4/31.7· B14 23.4/45.4· C40 27.0/58.7· A1 8.7/52.1· A2 11.3/52.1· K30 12.7/57.7 — the era-floor books' small/mid-cap tilt is an EARLY/MID-ERA phenomenon; current selections are ₹52–58cr liquid. A2's clean-TR is measured: 26.3% (§5 table). Sealed criteria stay PR-vs-PR as frozen; the TRI columns are reported beside every future judgment. Forward-test day (2026-10-03+) is ONE COMMAND — the union forward code (box-verified 2026-07-17: repro 6/6 to the digit; boundary leg 2026-07-01→~2026-10-01 derived from data; criteria sections self-suppress at 0 forward quarters): reproduction gate on all SIX configs (the five 16AL-gated rows hard-STOP on any miss; A1 soft-flagged), then the forward window per the preregs' own boundary ("every NEW quarter from 2026-07"; strict post-seal cut printed beside), the four frozen criteria per sealed member (INTERIM until ≥ 8 quarters, then mechanical family adjudication — highest forward alpha among passers), the once-owed median-pick-ADV + A2-clean-TR prints, and the 16AN portfolio dial (the portfolio layer design notes). Prod index_rows ingestion: DONE (ledger 16AK) — 'Nifty 500 TRI' / 'Nifty Next 50 TRI' / 'Nifty GS 10Yr' / 'Nifty GS Compsite' live in prod, manifest entry indexes_tri, pull-on-demand freshness via the committed tool.
9. THE SEALED VALIDATION (ledger 16AL; protocol 37c28824… run as frozen)
Reproduction gate 5/5 to the digit. C1 (paired block bootstrap, 81 quarters): the decisive C40→K30 increment is REAL (+5.27pp, 95% CI [+0.54, +9.90], p=0.014); the full U→K30 climb +8.87pp (p=0.002); the β-cap and A2→K30 rungs are individually within noise (recorded). C2a: α>0 in 7/7 rolling 3y windows for B14/A2/K30. C2b (TRAIN ≤2018 → TEST 2019+ once): survival 1.01 — supports the seals — but the ERA-FLOOR rung fails the ≤2018 re-derivation (P_train=0.268): the family's highest window-fit-risk rung, first suspect if forward data disappoints. C4: drift contribution not regime-concentrated (+1.2/−0.2/+0.6). C5: dead-name haircut to −90% costs only −1.6/−1.8pp — no artifact.
DEFLATED FORWARD-CAGR EXPECTATIONS (Bailey-LdP, N_trials=69 — quote these beside every headline): U 15.7%· β14 16.6%· C40RA 18.1%· A2-composite 21.0%· COMPOSITE-30 21.6%. The in-sample headlines above are selection-inflated by construction; these bands are the honest forward expectation until 2026-10-03 speaks.
PBO/CSCV (ledger 16AM): PBO = 0.043 — LOW overfit risk over the full 31-config searched matrix (70 combinatorial splits); K30's OOS rank mean 0.938 / min 0.767. With this, the robustness suite is complete: paired significance ✓· interim OOS ✓· deflation ✓· stress ✓· PBO ✓ — one recorded soft spot (the era-floor rung's ≤2018 re-derivation failure).
Independent cross-check (2026-07-17, ledger cross-check of 16AL): C1/C2/C3 were re-run by a SECOND harness that shares no engine code with the runner (the union ladder c1 code + the union ladder c23 code, which exec-load the sealed engine byte-for-byte). Every result reproduced to the digit/3dp — the C40→K30 gate PASS, the A2→K30 and β-cap nulls, P_train=0.268, the 2019+ slices, and the Deflated-Sharpe values (0.898…0.998). The validation is not an implementation artifact.
10. FUNDABILITY BOARD — the web twin (S-UNION-VARIANTS, 2026-08-27, D-PENDING)
Why this section exists. Until this session the variants above were readable only by someone who already knew to open this compendium or the Tier-C block on /dash/model-portfolios. In the strategies area — where a reader goes to ask "what strategies do you have?" — the library carried ONE union row, so eight of the nine configurations, and both falsified ML rankers, were effectively kept aside. the desk (2026-08-27): "They should exist visibly as upcoming / under-review / not-yet-fundable variants."
They are now listed as declared UPCOMING entries in the Strategy library (/dash/home/strategies/library), rendered by the union upcoming code. This section is the doc-side twin of that board and its maintenance anchor: the module transcribes its numbers from §§1–6b above, and an automated test fails if a row cites a section that is not in this file.
The verdict, stated once
No union variant is fundable today, and the reason is identical for all of them: every headline is in-sample, not one has a single CLOSED forward quarter, and capacity is UNVERIFIED at every size. The 2026-10-03 forward verdict is the first moment any of them can produce evidence rather than a lead — and the family's frozen rule graduates at most ONE among any that pass. This is a MEASURED verdict, not a default posture: it would be reversed by forward evidence recorded in the ledger, by nothing else.
| Variant | Fundability | Blocking item(s) |
|---|---|---|
| The Union· β14· C40RA· COMPOSITE-30· K30-HOLD· A2-HOLD· K30-DEEP-HOLD | ⏳ not fundable — under review | the 2026-10-03 forward verdict· family adjudication (≤1 graduates)· capacity study |
| A2-COMPOSITE | ⏳ not fundable — under review | never registered (registration-ready on the desk's word)· then the above |
| A1-COMPOSITE | ⏳ not fundable — kept for the record | dominated by A2 on every axis (§4); not a graduation candidate |
| Union-ML (Ridge, 16AA)· Union-ML v2 (GBM, 16AG) | ❌ rejected | none — CLOSED. Any future ML attempt is a NEW pre-registration, never a revival |
Gross vs net — three columns, never blended
The board publishes three separately-labelled return columns because this estate's standing failure mode is a gross headline read as a fundable return (the strategy ledger BLOCKING FAILURE MODELS; PACER-25's 35.6% gross → −1.4% net is the house example):
| Column | Basis | Coverage |
|---|---|---|
| Gross (flat cost) | the seal-basis model — 0.15%/side, 1% stop slip | every recorded variant (§§1–6b) |
| Net (real cost) | the Zerodha real-cost gauntlet, ledger 16BC | four rows only — COMPOSITE-30 and the three §6b siblings. Every other row prints not measured rather than borrowing its parent's figure |
| Honest forward | Bailey-LdP deflated expectation (§9) | five rows; K30-HOLD / A2-HOLD / K30-DEEP-HOLD print owed |
None of the three is net of TAX, which is the holder's and is not modelled anywhere in this estate. That is stated on the board itself, not only here.
The automatic recheck
the union forward checkpoint script, fired by patearn-union-forward.timer on the 4th of Jan/Apr/Jul/Oct at 09:30 IST — first firing 2026-10-04, the day AFTER the frozen verdict day, so an open window can never be graded. It runs the frozen the union forward code, writes data/union_forward_status.json (which the library board reads and prints), and DMs the verdict.
🔴 It grades; it never promotes. A §3 pass is INPUT to the family adjudication, which graduates at most one sibling and is the desk's decision. The status artefact carries a verdict and a null graduated field by construction — there is no code path that moves a variant into the live strategy flow by itself.
Install still owed (the unit files are committed to the vps live folder, which is what makes the install systemd script --check print them as a legitimate DRIFT: reminder until installed — the README):
scp the union forward checkpoint script root@<box>:a file on the server
chmod +x a file on the server
scp scripts/systemd/vps-live/patearn-union-forward.{service,timer} root@<box>:/etc/systemd/system/
systemctl daemon-reload && systemctl enable patearn-union-forward.timer # enable ONLY — never start