# PHASE-GRID-R1 — PRE-REGISTRATION **FROZEN ON COMMIT. THIS COMMIT IS THE FREEZE.** Ruled by the operator #21-4 (design, five rulings), #21-5 (brief, four rulings + the parity-band freeze) and #21-6 (§8 anchor 2, §9 frozen as drafted). Anti-iteration rule `cb1c53b`: no run precedes this commit, and nothing below may change after it. **Why this campaign exists.** The whitepaper's §4 cited *"Campaign 4, 2026-08-04, three-phase grid"* and *"±1–2% net of costs"*. Neither exists on the record — `Campaign 4` and `three-phase grid` appear in one file, the whitepaper itself; `±1–2% net of costs` appears in none. The operator ruled ROUTE 2 (#21-3): the phase-graded campaign is built for real, and §4 plus the paper's publication are gated on its result. --- ## §0 · Frozen inputs | Input | sha256 | Role | |---|---|---| | `data/valuation_price_daily.csv` | `d40427b48d75217d37a450b5b2be7179ebc3407249f94a8fc553eb6b5c09515f` | price basis (ruled `BASIS="valuation"`) | | `backtest/series_loader.py` | `cc96ad71ddbdfb800f2fceb0b43616d47f155f4b7db3a76decab3b106c7e21d0` | owned series + weekly grid | | `backtest/bt_trf.py` | `883246e1ea3a38526a045ebdda2827e9d2c138daf2c19f3107b9c9b0d9f1701d` | arms (a)/(c), BASIS, START | | `backtest/scenario_dca_20260719.py` | `56c02b0502cc1341aa1dc801f2f71516b40b06ecb05bf27d49302d4efaa3f8ea` | harness shape reused | Engine pin `CFG.pin()` verified at start, abort on mismatch. Scorable start `2016-05-02`. Monday-anchored grid; weekly close = last owned daily close in `[Mon, Mon+6]`. No vendor price enters at any point. ## §1 · The question, and what is not asked **Asked:** within each mechanically-defined market phase, how does the PA-VR zone ladder compare to (i) flat weekly DCA and (ii) a cash-constrained perfect-foresight deployment of the same contributions — in coins acquired and in cost basis per coin? **Not asked:** whether PA beats anything; whether the ladder has timing alpha; whether a phase result generalises to a future phase. No completed campaign is re-graded here. ## §2 · Boundary rule — verbatim > A **cycle peak** is a weekly close that is a running all-time high on the owned valuation series > and that is followed, before any subsequent all-time high, by a decline of **>= 50%** from that > high measured on weekly closes. The **trough** is the minimum weekly close between a peak and the > next all-time high. Phases alternate: *expansion* = trough -> next peak; *decline* = peak -> > trough. Boundaries are grid weeks and belong to the phase that **ends** on them. **Threshold justification, measured not asserted.** The peak set is invariant across **48%–75%**: every threshold in that band returns exactly `2017-12-11` and `2021-11-08`. Below 48% the rule picks up intra-cycle corrections (`2017-06-05`, `2021-04-05`); above 75% it loses the 2021 top, whose own decline was 75.2%. 50% is mid-band, and any other choice in the band gives the same phases. **Stated exception:** the `2025-09-29` peak qualifies only at 48–51% because its decline is open at −51.8%; that phase is ungraded (§3). ## §3 · Phase table — frozen | # | Kind | From | To | Weeks | Move | Grading | |---|---|---|---|---|---|---| | P1 | partial expansion | 2016-05-02 | 2017-12-11 | 84 | +4031.9% | GRADED, labelled *partial expansion* wherever it appears | | P2 | decline | 2017-12-11 | 2018-12-10 | 52 | −83.2% | GRADED | | P3 | expansion | 2018-12-10 | 2021-11-08 | 152 | +1951.9% | GRADED | | P4 | decline | 2021-11-08 | 2022-11-14 | 53 | −75.2% | GRADED | | P5 | expansion | 2022-11-14 | 2025-09-29 | 150 | +659.1% | GRADED | | P6 | decline, open | 2025-09-29 | 2026-06-22 | 38 | −51.8% | COMPUTED AND REPORTED, **UNGRADED** | P1 begins at the scorable bound, not a trough, and is never described as a full expansion. P6 has no confirmed trough and a threshold-sensitive peak; it inherits the Record's ungraded current-cycle precedent. **The runner recomputes this table and HALTS if it differs.** ## §4 · Arms **(a) flat weekly DCA** — `bt_trf.run_naive`, unchanged: 1 unit/week, always deploys at the weekly close, never sells, cash inert. **(c) PA-VR zone ladder** — `bt_trf.run_pavr_ladder`, unchanged: deploys `min(multiplier * 1.0, cash)`, unspent carries as inert cash, never sells. Multipliers frozen as committed: Deep Value 2.0 · Value 1.5 · Neutral 1.0 · Elevated 0.5 · Distribution 0.0. **(p) cash-constrained perfect foresight — NEW:** > Contributions arrive on the same weekly schedule as every other arm. Each week's inflow of 1.0 > unit is spent, net of the leg's fee, at the **lowest weekly close in `[t, T]`**, where `t` is the > arrival week and `T` the phase's last week. > `coins_p = sum_t (1 - fee) / min(price[t..T])`. Ties resolve to the **earliest** qualifying week. > No leverage, no selling, no borrowing against inflows that have not arrived. **REJECTED ALTERNATIVE, named:** all contributions deployed at the single global minimum of the phase. It spends money that has not arrived, inflating the benchmark in the direction that flatters PA. Rejected before any run, on that ground. ## §5 · Fee — legs, and the control it actually is Legs **0.10% / 0.25% / 0.50%**, applied to every trade of every arm including both benchmarks. `bt_trf.FEE` is swept inside this campaign's runner only; the module constant `0.0025` is untouched so prior campaigns stay byte-reproducible. **PRE-REGISTERED PREDICTION — every published RATIO is fee-invariant, exactly.** `_buy` subtracts `units_cash` from cash and applies `(1 - FEE)` only to the coins credited; `run_naive` spends 1.0/week unconditionally; `run_pavr_ladder` spends `min(mult, cash)` and cash never sees the fee. Spending paths are therefore fee-independent and `(1 - FEE)` factors out of numerator and denominator alike. Arm (p) shares the property. **The sweep is registered as a CONTROL with a pre-registered expected value: ratios identical across legs to 1e-12. A deviation is a FAULT, not a finding, and halts the run.** The fee remains load-bearing for absolute figures (coin counts, dollar cost basis), which is where it is reported. **Scope of any published fee qualifier:** *"from 0.10% to 0.50% per trade"*, never *"at realistic costs"* — the record carries a 1.00% all-in fill (`deviation_log.md:76`) above the swept band. ## §6 · Frames, each with its ceiling attached at emit time | Frame | Definition | Ceiling printed with every figure | |---|---|---| | contribution / coin | all contributions / coins acquired | **PARITY-CLASS limb 1 — PA may not claim more coins than flat DCA. A phase above 1.0 licenses no more-coins claim.** | | deployer | cash actually spent / coins | **Conditional on DEPLOY-CLOSURE, not satisfied — no public claim available today.** Never published without its tail. | Both frames derive from the same simulated paths. No frame is emitted without its ceiling in the same row of output: the ceiling is a column of the artifact, not a note in the write-up. ## §7 · Observation units **PRIMARY — full-phase deployment.** One deployment run per phase per configuration, spanning the phase exactly. This is what *"in every phase tested"* claims, and it is the only unit that works for a 52-week decline. **SECONDARY — rolling W=52**, only in phases holding >= 2 windows (P1: 33, P3: 101, P5: 99), published with the SCEN-DCA caveat verbatim: *rolling windows overlap; win rates are not independent trials, and no significance test is implied or offered.* **Never substitutable for the primary, in any surface, at any time.** ## §8 · Parity band — ANCHOR 2, ruled #21-6 > For each phase, recompute the primary ratio with the phase start and end each shifted by **−2, > −1, +1, +2 weeks** (8 perturbations; boundaries clamped to the scorable range). > **`band = max |ratio_perturbed − ratio_base|`.** A phase earns the word **parity** iff > **`|ratio_base − 1| <= band` AND `band <= 3.0%`**. If the band exceeds 3.0%, the phase is reported > **"boundary-sensitive: no parity determination"** — a third outcome, not a pass and not a fail. > **The measured ratio and the band width are printed beside the word, always.** *Rationale: the phase edge is the design's one genuinely arbitrary choice (the threshold is not, per §2). If the gap between the rule and the benchmark is smaller than the wobble from moving the boundary a fortnight, the gap is not a finding about the rule. The 3.0% ceiling exists because a band that permits everything is as useless as a guard that refuses everything.* **ANCHOR 1 (the desk's original proposal) IS RECORDED AS FOUND, DEGENERATE.** *"Within the spread the fee legs alone produce"* evaluates to **exactly zero** for these arms (§5), so no phase could ever have earned the word; the campaign would have failed on a definition rather than on a result. Caught while specifying it, before the freeze. **ANCHOR 3** (a fixed pre-registered threshold) was offered and not taken: a number chosen in advance is still a number nobody derived. ## §9 · Claim ladder — FROZEN AS DRAFTED (#21-6, no wording changes) | # | Candidate §4 sentence | Passes iff | Unearned form | |---|---|---|---| | L1 | *"January 2017 – May 2025, two full halving cycles"* | **never — struck regardless of result** | replaced by the emitted phase table's own dates | | L2 | *"against two benchmarks: flat weekly DCA, and a perfect execution of the same capital plan"* | both arms present in raw output and passing §10 controls | no benchmark sentence | | L3 | *"not a strategy… holding it requires knowing the future"* | licensed by construction (arm (p)'s frozen definition) | n/a | | L4 | *"Parity with both benchmarks, within N%"* | contribution-frame ratio earns *parity* per §8 against **both** benchmarks in **every graded phase** | §4 states the measured per-phase figures; no band, no "approximately", no "broadly" | | L5 | grid row P3 *"…Parity"* | P3 earns parity per §8 | row shows its figure without the word | | L6 | *"it kept buying, on plan, through the entire decline"* | **behavioural: zero skipped weeks.** In P2 and P4, arm (c) deployed a non-zero amount in 100% of weeks, asserted as a count from the trade log | **struck — cannot be rescued by re-framing** | | L7 | grid row P5 *"…Parity"* | P5 earns parity per §8 | as L5 | | L8 | *"(Source: Campaign 4, three-phase grid)"* | **struck now** | replaced by pre-reg commit + raw path + sha256 | | L9a | *"in the test, both arms execute flawlessly by definition"* | licensed by construction | n/a | | L9b | *"flat DCA is where plans go to be quietly abandoned"* | **no result can license it** — empirical claim about human behaviour; PA has no such data | struck, or reduced to L9a's construction argument | | L10 | *"claims no timing alpha — the benchmark was unbeatable by construction"* | L2 + L3; **survives even if L4 fails** | n/a | | L11 | *"the phase that ends most accumulation plans is the one the rule sailed through"* | second half on **L6**; first half unearnable, same class as L9b | first half struck; second half stands on L6 | **L6 is graded first.** It can pass while everything else fails, it is untouched by PARITY-CLASS limb 1 (which constrains coin-count claims, not statements about whether the rule kept executing), and it is the customer-decisive sentence. **Register (operator standing note, #21-5):** the ladder governs the TRUTH of sentences; `R-CALIBRATION` governs their REGISTER. §4 and all derived copy are confident-practical, and a killed sentence returns as its strongest compliant rewrite (the Flattening Gate), never as a hedged retreat. An unearned rung is named as unearned, not softened. ## §10 · Controls — all fail-loud, all before results 1. Engine pin `CFG.pin()` verified; `CFG.verify()` passes. Abort on mismatch. 2. Linearity: closed-form recomputation of naive DCA matches the arm to 1e-9 relative. 3. **Regression on the reused harness: SCEN-DCA's committed headline reproduces exactly — 430 windows, 41.6% win, median 0.9904.** If the reused code no longer reproduces the record, the campaign halts before producing anything. 4. **Fee-invariance (§5): ratios identical across the three legs to 1e-12.** 5. **Dominance: `coins_p >= coins_a` and `coins_p >= coins_c` in every phase and leg.** Arm (p) is an upper bound by construction; a violation means it is misimplemented. 6. Week-count: weeks consumed per phase equal the phase table's own count, asserted per phase. 7. **Phase table recomputed and compared to §3 above; any difference halts the run.** ## §11 · Fault-injection suite — `tools/faultinject_phase_grid.py`, in the pre-commit gate | # | Injection | Must fire | |---|---|---| | F-1 | shift one phase boundary by 1 week | results change (the phase table is consumed, not decorative) | | F-2 | arm (p) buys at the current price instead of the forward minimum | dominance control (§10.5) | | F-3 | fee applied to arm (c) only | fee-invariance control (§10.4) | | F-4 | drop one week from a phase's rows | week-count assertion (§10.6) | | F-5 | zero one deployment week in (c)'s log inside a decline phase | L6's no-skipped-week check | | F-6 | perturb the phase table's frozen dates | §10.7 halt | | F-7 | **the permissive case: a correct, unmodified run** | **all gates PASS** — a suite that only tests refusal is barred | ## §12 · Emitted artifacts `phases.csv` (emitted first) · `phase_results.csv` (both frames, all legs, ceiling column) · `rolling_windows_phase.csv` (secondary) · `phase_grid_raw.json` (pin, pre-reg sha256, controls, raw figures) · findings document. Written under a run-scoped `out_guard.run_dir()`; no LOCKED evidence path is writable. Every figure that reaches §4 travels with its artifact path and sha256. ## §13 · Pre-registered readings - **(i)** All graded phases earn parity against both benchmarks -> L4, L5, L7 licensed with figures. - **(ii)** Some earn it, others do not -> §4 carries the per-phase table anyway (ruling D); the ladder licenses only earned rungs; misses are stated as misses, with figures. - **(iii)** No phase earns parity -> §4 reports the measured shortfalls. **L6 and L10 still stand if their own conditions hold.** - **(iv)** A control fails -> **no result is published at all**; the failure is the finding, and the campaign is re-run only after the cause is fixed and recorded. The campaign publishes whichever way it falls. A confirmed record of a shortfall is a confirmed record (`R-MISSION`). ## §14 · Scope limits - Six phases is not a sample; the primary unit is one observation per phase by design. - The secondary windows overlap and are not independent trials. - In-sample: the same owned series every prior campaign used. No out-of-sample holdout exists. - The fee band tops out below the worst fee PA has actually paid. - **L9b and L11's first half are unearnable by any backtest** — PA has no visitor, subscriber or survey data. - Threshold invariance was verified for the two closed cycles only. ## §15 · Freeze and amendment This document freezes on commit; the commit hash is the freeze and is quoted in every artifact the campaign emits. After the freeze no parameter, boundary, arm definition, band anchor or ladder rung may change. An amendment is a new dated document appended to this one, **before the run it affects** — never an edit to frozen text, and never after seeing a result. If a defect is found post-run it is recorded as a defect and the campaign is re-run under an amended pre-registration, with both documents on the record.