# Project Status ## MM_EDGE_EXP_001 — CLOSED (FROZEN) | Dimension | Status | |-----------|--------| | Research Phenomenon | **PASS** (conditional markout exists) | | Economic Edge | **FAIL** | | Prefill Predictability | **FAIL** (snapshot observability) | | Strategy | **FROZEN** | | Execution | **STOPPED** | | Stage 3 | **LOCKED** | EXP_001 Prefill strict conclusion: > Under current **snapshot observability** (~1.66s), no CANDIDATE_V0_2_SIGNAL. > This is **NOT** proof that pre-fill signal does not exist in the market. Weak signals (research observations only — **not** trading filters): - `depth_total_5`: ±3.8pp Path C separation, Economic gate FAIL - `obi_change_5s`: +0.00027 USDT/fill economic Δ - `pre_deteriorated_strict=False`: +0.00116 USDT/fill economic Δ Reports: `logs/maker_edge/` — see sections below for detail. --- ## MM_EDGE_EXP_002 — Phase 1 STOPPED (artifact FROZEN) | Dimension | Status | |-----------|--------| | Type | Data Collection / Observability | | Strategy | **NONE** | | Trading | **NO** | | Execution | **STOPPED** 2026-09-10T08:45:24Z | | Stage 3 | **LOCKED** | | Gate 1 | **PASS** (smoke `EXP-002-RUN-001`) | | Gate 2 | **PASS** | | Gate 3 | **PASS** | | Gate 4 | **BLOCKED** (no `fill_anchor`; not opened) | | Long-run | **EXP-002-RUN-002** STOPPED + systemd **disabled** | | Hypothesis Closure | **NO** — Gate 4 never ran | Human decision 2026-09-10: stop further collection. Phase 1 is an observability artifact only. This is **not** “market has no pre-fill signal” and **not** a v0.2 unlock. `event-state-probe.service` (user): **inactive / disabled**. Do not restart `EXP-002-RUN-002`. Ledger: `logs/event_state/EXP-002-RUN-002/` — 24 files, 2026-08-18 → 2026-09-10 (last day partial), **18.06 GiB**. Event counts not fully censused; size-based estimate ~1.2e7 lines (volume gates clearly exceeded). `fill_anchor` expected **0** (observability-only). Marker: `EXP-002-RUN-002.PHASE1_STOPPED.json` Do **not** Path-C snoop this artifact. Frozen Gate 4 sample gates remain in `MM_EDGE_EXP_002.md`. Spec: `MM_EDGE_EXP_002.md` Smoke: `./scripts/smoke_test_event_state.sh` Validate: `python scripts/validate_event_ledger.py --dir logs/event_state/EXP-002-RUN-001 --run-id EXP-002-RUN-001` Logs: `logs/event_state/EXP-002-RUN-001/` ### EXP-002-RUN-001 Smoke (2026-08-18, ~12 min + restart) Host: `jADUtR1041803` | Sessions: **2** (restart test) | Schema: `immutable_event_v1` | Check | Result | |-------|--------| | Gate 1 Event Completeness | **PASS** (Phase 1 stream; no fill_anchor) | | Gate 2 Temporal Integrity | **PASS** | | Gate 3 Event Coverage | **PASS** | | Restart contract | **PASS** (0 parse fail, 0 dup event_id, seq reset) | | Gate 4 | **BLOCKED** | Write rates: - `aggressive_trade`: **3.21 / sec** (2300 events) - `book_update`: **6.09 / sec** (4366 events) - **total**: **9.30 / sec** (6666 market events) Timestamp quality (100% exchange + local present): - `local − exchange` lag: p50 **112.5ms**, p95 **237.7ms**, p99 **251.4ms**, max **443.4ms** - `exchange > local + 50ms`: **0** violations Event order (recorded, not sorted): - `exchange_ts_ns` regressions: **1053** (max back **276ms**) — multi-source async; explicit in report Raw schema sample (n=200 each): **0% missing** on core fields; **0** hollow book_update. Manifest: `logs/event_state/EXP-002-RUN-001/EXP-002-RUN-001.manifest.json` Report: `logs/event_state/EXP-002-RUN-001/Event_Ledger_Validation.json` Long-run identity: **EXP-002-RUN-002** (separate from smoke) — **STOPPED** 2026-09-10. Status: `./scripts/event_state_status.sh` --- ## MM_EDGE_EXP_001 Detail **Phase: Prefill Adverse-Selection Attribution v0.1** (probe **STOPPED**) | Gate | Status | |------|--------| | Research Freeze | **ACTIVE** | | Probe | **STOPPED** | | Data Integrity | **PASS** | | Maker-only | **PASS** (`TAKER=0`) | | Account Reconciliation (RECON-01) | **PASS** | | RECON-02 classification | **PASS** | | Order-level closure (RECON-03) | **PASS** | | Strict trade-level closure | **FAIL** (Testnet userTrades cutoff — **not** Alpha FAIL) | | Economic Edge | **FAIL** (current execution economics) | | Prefill Predictability (v0.1 strict) | **FAIL** (no CANDIDATE_V0_2_SIGNAL) | | Stage 3 | **LOCKED** | ## Evidence taxonomy (4777 fills) | Class | Count | Grade | |-------|-------|-------| | **MATCHED** | 3890 | Order + Trade (dual) | | **VENUE_CONFIRMED_NO_TRADE_HISTORY** | 876 | Order FILLED, no trade row | | **VENUE_PARTIAL_ORDER_CANCELED** | 11 | Partial fill + TTL cancel | | DUPLICATE / MISMATCH / UNCONFIRMED | 0 | — | `userTrades` cutoff: **2026-08-17T03:08 UTC** — see `TESTNET_LIMITATIONS.md` Matched trade-level: qty residual **0**, |Δt| p50 **72ms** ## Separation ``` MakerAlpha (+0.008%) ≠ Account Δ (−61.66 = fee + realized) Strict trade FAIL ≠ Maker Edge FAIL 887 orphans = VENUE-HISTORY-CUTOFF (now order-confirmed) ``` ## Economic Attribution v0.1 (Hard Evidence Population only) Population: **MATCHED=3890** Core report: `logs/maker_edge/Economic_Attribution_v0_1.txt` - Matched fills / paths / clusters: **3890 / 3886 / 3334** - Fee total: **42.42 USDT** - Realized component: **−8.52 USDT** - Gross markout @30s: **−1.73 USDT** - Net attributable @30s: **−52.67 USDT** - Inventory carry: - Max `|net BTC|`: **0.0059** - TW `|net BTC|`: **0.0035** - Turnover: **3.3316 BTC** Counterfactual Attribution: - Baseline matched net30: **−52.67 USDT** - Exclude `Path C`: **−21.22 USDT** - Exclude toxic: **−21.22 USDT** - Exclude negative states: **−27.64 USDT** Interpretation: - v0.1 已完成 baseline 使命:**Maker markout phenomenon exists, economic edge not established** - 当前主要拖累不是“假 alpha”,而是 **fee + realized / inventory economics** ## Metric Reconciliation (MATCHED=3890) - Return-space MakerAlpha(fill-weighted):-0.000693% - Return-space MakerAlpha(notional-weighted):-0.000816% - Dollar-space gross markout @30s:-1.730780 USDT 结论:回报口径一致,但“加权方式”导致返回与美元金额的方向差异。 ## Fee Sensitivity (counterfactual, fee only) net_attr_30s @fee_factor: 1.00 → -52.674655 USDT 0.50 → -31.463582 USDT 0.25 → -20.858046 USDT 0.10 → -14.494724 USDT 0.00 → -10.252510 USDT 结论:即使假设 0 fee,net 仍 < 0,因此“真实拖累”不仅是 fee。 ## Prefill Adverse-Selection Attribution v0.1 (strict contract) Population: **MATCHED paths = 3886** (100% strict-prefill coverage) Core report: `logs/maker_edge/Prefill_Adverse_Selection_Attribution_v0_1.txt` Time contract: `feature_timestamp <= t_fill - 0.25s` Feature source: sampled `mid_tick` / `inventory_tick` only (no fill-callback leakage) Baseline (strict population): - P(Path C): **33.20%** - P(Toxic): **34.61%** - P(Neg30s): **47.43%** - P(Economic<0): **77.61%** - Mean net_attr_30s: **−0.0136 USDT/fill** - Feature age: mean **1681ms**, median **1660ms** Conclusion Matrix (auto-grade): - **CANDIDATE_V0_2_SIGNAL**: **0 / 19 features** - **STATISTICAL_SIGNAL_ONLY**: spread_change_5s (Toxic/Neg30s), inventory/inventory_skew (Economic only) - **NO_PREFILL_SIGNAL**: all others under strict gate Unavailable under strict contract (deferred to EXP_002): - `time_since_last_market_event`, intensity, large trades, fill-callback `market_event_before_fill` ## Forbidden (both experiments) - Resume EXP_001 probe without new experiment ID - Restart EXP_002 / `EXP-002-RUN-002` collection - Enable trading under EXP_002 - Reclassify VENUE_CONFIRMED as MATCHED - Unlock Stage 3 on observability or attribution alone - Treat STATISTICAL_SIGNAL_ONLY as v0.2 candidate - Design v0.2 or claim Hypothesis Closure without a later fill-authorized Gate 4