Keep frozen research conclusions and code; raw ledgers and secrets stay out of git. Co-authored-by: Cursor <cursoragent@cursor.com>
5.3 KiB
nautilus_mm — Research Freeze / Data Collection Phase
Freqtrade 保留缠论 / 中低频;Maker / L2 / Fill 事件迁到 NautilusTrader。
研究对象:可验证的市场现象(不是策略)。
Trading OS
├─ Market Intelligence (Market Pulse) ← Stage5 才接(Quote Adjustment)
├─ Execution Reality Layer (本仓库) ← Fill Alpha Dataset
├─ Freqtrade ← Chan / 中低频
└─ NautilusTrader ← 事件驱动执行
冻结研究路径(禁止跳级)
Stage 0 Data Integrity
↓
Stage 1 Fill Alpha ← 当前
↓
Stage 2 Maker Edge Report ← 当前(决策门)
↓
Stage 3 Economic Simulation ← LOCKED until Edge PASS
↓
Stage 4 Quote Engine
↓
Stage 5 Market Regime Adaptation (Market Pulse → Quote Adjustment)
| Stage | 目标 | 状态 |
|---|---|---|
| 0 | WS/L2 可信:seq gap / latency / book_age | 探针已记 |
| 1 | Fill Alpha Dataset:真实成交 + 路径 | 进行中 |
| 2 | Maker Edge 决策门:PASS / FAIL / COLLECTING | 进行中 |
| 3 | 经济仿真:quote→fill→inventory→exit(partial/cancel/funding/fee) | 未解锁 |
| 4 | Quote Engine | 未开始 |
| 5 | Regime Adaptation | 未开始 |
原则:先证明成交有优势,再谈账户收益,再设计报价。
禁止现在加:Quote Engine / AI / Market Pulse 交易信号 / 参数优化。
核心问题(交给 ~2000 真实 fills)
个人开发者在 BTC 永续上,通过被动流动性提供,是否能获得统计优势?
若有:优势来自哪里?
可能结果:
| 情况 | 含义 | 下一步 |
|---|---|---|
| A 全市场 PASS | 稳定被动流动性优势 | Symmetric MM |
| B 仅特定状态 PASS | 高波动 / 吸收 / 震荡等 | Event-driven LP(更可能) |
| C 全部 FAIL | 普通 Maker edge 不存在 | Cash Carry / Basis / Funding / 跨所 |
最值得等待的不是 PASS,而是 Edge 来自哪里。 第一份 FAIL 也是高价值结果。
防自我欺骗(已内建)
- Cluster-weighted — 暴跌 50 笔 Bid ≠ 50 独立样本;同时看 fill-w 与 cluster-w,方向一致才可信
- Matched Mid / Maker Alpha —
MakerAlpha = Fill Outcome − Market Move(剥离方向收益) - Adverse Selection — 成交是否天然站在错误一侧;spread capture 挡不住毒流
Stage 3(Economic Simulation)只在 Edge PASS 后做:partial fill、cancel latency、inventory limit、position aging、funding、fee tier → 真实账户收益分布。
Maker Edge Report v0.1
./scripts/analyze.sh # 默认 min-fills=2000
./scripts/analyze.sh 500 # 早期预览(仍为 COLLECTING)
报告结构:Data Integrity → Sample Independence → Fill Quality + Benchmark → Adverse Selection(POSITIVE_EDGE / EDGE_AFTER_COST / NO_EDGE)→ Path Attribution → State Stability → Decision。
快速开始
cd nautilus_mm
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # TESTNET key;代理默认 7897
./scripts/run_probe.sh # 攒真实 fills
./scripts/analyze.sh 2000 # 决策门报告
探针只记 quote / fill / outcome。market_state_snapshot 预留为 null。
目录
nautilus_mm/
├── configs/
├── logs/maker_edge/ # Fill Alpha Dataset (jsonl)
├── scripts/
│ ├── run_probe.sh
│ ├── analyze.sh
│ ├── analyze_maker_edge.py
│ └── record_l2_ccxt.py
└── src/nautilus_mm/
├── recorder.py
├── health.py
├── book_utils.py
├── run_live.py
└── strategies/maker_edge_probe.py
与 Freqtrade
| Freqtrade | nautilus_mm | |
|---|---|---|
| 用途 | 缠论 / 中低频 | Maker / L2 / Edge 验证 |
| 驱动 | K 线 | order book / fill 事件 |
安全
- 默认
BINANCE_ENVIRONMENT=TESTNET ENABLE_TRADING=false可只订数据- 独立
.venv,勿与 freqtrade 混装
实验冻结(见 FREEZE.md)
三不动: Quote Logic / 成本模型 / PASS·COLLECTING·FAIL
| ✅ 冻结期允许 | ❌ Gate 解锁前禁止 |
|---|---|
| 数据字段 | 新交易规则 |
| 数据质量检查 | 新过滤条件 |
| 报告解释能力 | 新收益优化参数 |
Decision:PASS / PARTIAL_PASS / COLLECTING / FAIL
观察窗:500 异常 · 2000 初步 · 10000 稳定性;clusters > fills。
第一份报告先看分布(Fill / Cluster / Toxicity),再看 Decision。
服务器 Data Collection(zun_hk)
默认:
| Host | jack@jackyu66.com |
| Key | ~/Project/deploy/zun_hk/id_ed25519_hk |
| Dir | /www/Project/nautilus_mm |
| Experiment | MM_EDGE_EXP_001 |
./scripts/deploy_server.sh
ssh -i ~/Project/deploy/zun_hk/id_ed25519_hk jack@jackyu66.com
nano /www/Project/nautilus_mm/.env # BINANCE_API_KEY / SECRET
systemctl --user start mm-edge-probe # 用户级 systemd(无需 sudo)
journalctl --user -u mm-edge-probe -f
./scripts/probe_status.sh
./scripts/pull_report.sh 2000
本地短测:USE_PROXY=true ./scripts/run_probe.sh