Snapshot nautilus_mm after EXP_002 Phase 1 stop.

Keep frozen research conclusions and code; raw ledgers and secrets stay out of git.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jackyu66git
2026-09-10 16:53:22 +08:00
co-authored by Cursor
commit e2fbe1c2b3
49 changed files with 9633 additions and 0 deletions
+205
View File
@@ -0,0 +1,205 @@
# 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 MakerAlphafill-weighted):-0.000693%
- Return-space MakerAlphanotional-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