|
| 1 | +# Sentinel v2 preregistration — holdout evaluation |
| 2 | + |
| 3 | +**Frozen:** 2026-08-23 (before any holdout data was ingested) |
| 4 | +**Scope:** one evaluation of the calibrated SentinelHookV1 fee policy on the |
| 5 | +locked holdout period, **Jan – Jul 2026**, evaluated exactly once. |
| 6 | +**Relation to Gate 1:** the Gate 1 verdict (trade-level predictability failed) |
| 7 | +stands and is not revisited. This preregistration tests a *different*, |
| 8 | +window-level claim that survived the post-mortem. |
| 9 | + |
| 10 | +--- |
| 11 | + |
| 12 | +## 1. Hypothesis (single, falsifiable) |
| 13 | + |
| 14 | +On the locked holdout period, the Sentinel v2 fee policy — |
| 15 | +`fee(t) = clamp(4 × EMA₃₀₀ₛ[realized 60s pool-price move], 5 bps, 100 bps)` — |
| 16 | +delivers higher net LP economics (fees collected minus adverse-selection |
| 17 | +losses) than a static 5 bps fee on the same trades. |
| 18 | + |
| 19 | +No trade-level predictability is claimed. The mechanism is loss clustering: |
| 20 | +toxic windows persist, and a fee that rises with realized volatility collects |
| 21 | +compensation while they last. |
| 22 | + |
| 23 | +## 2. Frozen policy parameters |
| 24 | + |
| 25 | +Chosen on Feb–Sep 2025 calibration data, confirmed on untouched Oct–Dec 2025 |
| 26 | +(`evidence/gate1/calibration-vol-fee.json`), identical to the deployed |
| 27 | +[`SentinelHookV1`](../src/SentinelHookV1.sol): |
| 28 | + |
| 29 | +| Parameter | Value | |
| 30 | +|---|---| |
| 31 | +| Signal | EMA of \|sqrtP(t) − sqrtP(t − 60s)\| / sqrtP(t − 60s) | |
| 32 | +| EMA half-life | 300 s | |
| 33 | +| Multiplier k | 4 | |
| 34 | +| Base fee | 5 bps | |
| 35 | +| Fee cap | 100 bps | |
| 36 | +| Rate limit | 500 (0.05%) per update | |
| 37 | + |
| 38 | +These values may not be adjusted after holdout results are seen. No parameter |
| 39 | +search is performed on holdout data. |
| 40 | + |
| 41 | +## 3. Data |
| 42 | + |
| 43 | +- **Period:** all UTC days from 2026-01-01 through 2026-07-31 (the locked |
| 44 | + holdout; never ingested, never queried before this evaluation). |
| 45 | +- **Pools:** the measurable cohort from the Gate 1 preregistration as amended: |
| 46 | + M2 native-ETH/USDC (`0x3258…d9`) and M1 USDC/HYPE (`0xc4f3…79c`), plus their |
| 47 | + frozen reference venues. M1's venue was active from Nov 2025, so both pools |
| 48 | + are expected to be measurable; any pool whose reference venues prove |
| 49 | + unavailable in the holdout is reported as unmeasurable, not substituted. |
| 50 | +- **Ingestion:** identical pipeline (event extraction with anchor-verified |
| 51 | + timestamps, sampled day-windows: 6 per pool-month, seed `20260823`, plan |
| 52 | + committed before ingestion runs). |
| 53 | +- **Labels:** identical 60-second reference-priced adverse-selection cost. |
| 54 | + |
| 55 | +## 4. Evaluation metrics and pass bars |
| 56 | + |
| 57 | +Primary metric: **ΔNet = LP net under v2 policy − LP net under static 5 bps**, |
| 58 | +computed by replaying every labeled holdout trade chronologically through the |
| 59 | +frozen policy (identical to the calibration replay; no re-fitting). |
| 60 | + |
| 61 | +| # | Bar | Threshold | |
| 62 | +|---|---|---| |
| 63 | +| P1 | Pooled ΔNet > 0 | clustered bootstrap (pool-day clusters, B = 10,000, seed 20260823) 95% CI excludes 0 | |
| 64 | +| P2 | Robustness | ΔNet > 0 in ≥ 60% of active pool-months, and positive for at least one of M2/M1 individually | |
| 65 | +| P3 | Burden bound | average trader burden ≤ 12 bps (justification: calibration measured 8.1 bps at these parameters; above 12 bps the policy over-taxes benign flow even if profitable) | |
| 66 | + |
| 67 | +**Pass = P1 ∧ P2 ∧ P3.** Failure of any bar = v2 rejected. |
| 68 | + |
| 69 | +## 5. Commitment |
| 70 | + |
| 71 | +- The holdout is ingested once and evaluated once. Re-running with different |
| 72 | + parameters, windows, or labels — for any reason — voids the result. |
| 73 | +- The result is published in `FINDINGS.md` either way, with the full |
| 74 | + methodology and all exclusion counts. |
| 75 | +- **On failure:** the dynamic-fee approach is abandoned. No third attempt will |
| 76 | + be made without a fundamentally new mechanism supported by evidence that |
| 77 | + predates its evaluation data. |
| 78 | +- On success: the result supports a production-pilot proposal (Gate 3 safety |
| 79 | + work, audit path) — it does not by itself justify mainnet capital. |
| 80 | + |
| 81 | +## 6. What this preregistration does not claim |
| 82 | + |
| 83 | +- No claim that trade-level predictability exists (Gate 1 found it does not). |
| 84 | +- No claim about trader volume response: the replay holds trade sizes fixed; |
| 85 | + real elasticity would change realized economics in both directions. This is |
| 86 | + a known limitation shared with the calibration evidence. |
| 87 | +- No claim about pools outside the frozen cohort. |
| 88 | + |
| 89 | +## 7. Reproduction |
| 90 | + |
| 91 | +The holdout measurement plan, ingestion, labeling, and replay use the same |
| 92 | +committed tooling as Gate 1 (`research/sentinel_data/`), invoked with |
| 93 | +`--year 2026 --months 1..7`. The plan file is committed to |
| 94 | +`evidence/gate2/` before ingestion begins; this document is committed before |
| 95 | +that. |
0 commit comments