Files
jackyu66gitandCursor e2fbe1c2b3 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>
2026-09-10 16:53:22 +08:00

206 lines
7.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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