Rate Lock Index (mortgage lock/float)
RLI v2.1 Lock Decision Engine (mortgage lock/float)
ResolvedThe question
For a borrower with a known close date, what does locking versus floating actually COST — measured on real issued mortgage-rate paths under disclosed lender terms, not forecast from a direction model? A public-service research family for the Rate Lock Index; deliberately NOT a fund-strategy trial.
How it was tested
The hypothesis, its exact trigger, the outcome it predicts, and the pass/fail bar were written down and cryptographically hash-locked before any data was tested, then held through a mandatory cooling-off period. The backfill ran exactly once against those frozen parameters — no re-tuning, no curve-fitting — using adversarial statistics (stationary-bootstrap confidence intervals, multiple-testing correction, purged cross-validation with an embargo, and walk-forward out-of-sample splits). The specific trigger thresholds are proprietary and omitted here.
The outcome
RAN 2026-09-16 → INFO (the ~60% honest-prior modal outcome; `data/backfill/rli_v2_1_lock_decision_2026-09-16.json`). h30 n=91 (first scored 2019-09-04): W1 Spearman ρ=0.258 t=2.52 p=0.0067 PASS · B3 [P5,P95] coverage 94.5% in band [0.84,0.96] + KS 0.100<0.142 + terciles ≥0.80 PASS · CRPS 13.39 vs null 13.84 (ratio 0.968 ≤1.02) PASS · W2 width 91.2 vs 104.9 (0.870 ≤0.95) PASS · B5 engine mean regret 7.39 vs best-static 7.30 (+0.08 ≤ +0.5) + P95 18.8 vs always-lock 39.1, grid 9/9 PASS. h45 n=57 (first scored 2019-10-03): W1 ρ=0.283 t=2.18 p=0.017 PASS · B3 coverage 91.2% in [0.82,0.97] + KS PASS · CRPS 18.58 vs 19.11 (0.972) PASS · W2 121.7 vs 145.9 (0.834 ≤1.00) PASS · **B5 FAIL** — engine mean regret 17.43 vs best-static (always-float-with-trigger) 14.08, grid 1/9. Fresh-segment guard (SHIP_CANDIDATE-only condition in the frozen harness) ALSO FAILS at both horizons on the 2019H2-2020 segment never scored by v2.0 (h30 n=18: ρ=0.67 + CRPS 0.947 fine but engine regret 6.84 vs best-static 3.24; h45 n=11: 4.75 vs 2.52) — the post-v2.0-run segment has n=1 (report-only). W3 DM (non-binding) z=−2.15 p=0.032 at h30 / −1.52 at h45. ZN Parkinson ablation A2 ≈ primary. READ: the engine has real WIDTH skill (both horizons, the one bar with power) and honestly-calibrated, sharper-than-null intervals — the v2.0 scale error is fixed — but the PRICED decision layer does NOT beat the best static policy at 45 days and under-performs static in the COVID-era fresh segment → the decision layer is not earned. Per the verdict_mapping: registry RESOLVED; the EMPIRICAL PRIOR STAYS LIVE as /api/rates.lockEngine; RATES_LOCK_ENGINE stays unset; nothing ships. Rule #10: no iterate — a re-priced decision layer / different horizon set = NEW pre-reg. Run note: the 09:00 PT scheduled task was interrupted before its harness step (no artifact); the daily audit ran the unmodified harness under node@22 the same morning (the host `node` 25.8.1 binary was dyld-broken by a simdjson bump) — no methodology change, SHA re-verified. HISTORY: LOCKED 2026-09-09 (SHA fe647e32…c12b6, 7d cooling). The NEW-construct successor to the NO_SHIP v2.0 lock-cost engine (Rule #10): v2.0's rows showed a 1.39× interval SCALE error with Gaussian shape and its free float-down made the decision bar vacuous (always-floatdown 3.20 beat the engine's 5.13). v2.1 replaces both — split-conformal intervals on as-issued OOS residuals + a PRICED decision layer under disclosed lender terms (bound by termsHash) — with bars powered at n≈90 (W1 width skill, B3 hygiene, CRPS non-inferiority, W2 sharpness, B5 vs best-static on a 9-cell terms grid, fresh-segment guard) at h30 AND h45. Honest prior INFO ~60%. Harness scripts/research/rli-v2-1-lock-decision-validation.ts is COMPLETE at lock (--validate-data ✓ n30≈86/n45≈57, power .88/.74; --selftest ✓; refuses before 2026-09-16); run ONCE attended. SHIP_CANDIDATE does NOT auto-ship: Phase C = RATES_LOCK_ENGINE=v2_1 adapter with the empirical prior kept visible as the benchmark. Memo project_rli_v153_lock_decision_2026_09_09.md.
The backfill ran and concluded — the hypothesis did not fail, but the result is informational rather than a clean strategy-grade pass. See the outcome below.
Pre-registration record
- Registered
- 2026-09-09
- Pre-registered
- yes
- SHA-256 hash
- #fe647e32…
The hash and timestamp are a contemporaneous, immutable record that the hypothesis and its success criteria were fixed before testing — not chosen with hindsight.