Keep frozen research conclusions and code; raw ledgers and secrets stay out of git. Co-authored-by: Cursor <cursoragent@cursor.com>
7.6 KiB
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 FAILobi_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 − exchangelag: p50 112.5ms, p95 237.7ms, p99 251.4ms, max 443.4msexchange > local + 50ms: 0 violations
Event order (recorded, not sorted):
exchange_ts_nsregressions: 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
- Max
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-callbackmarket_event_before_fill
Forbidden (both experiments)
- Resume EXP_001 probe without new experiment ID
- Restart EXP_002 /
EXP-002-RUN-002collection - 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