Files
eth_hedge_sim/docs/开发方案.md
T
2026-07-24 16:33:25 +08:00

222 lines
8.2 KiB
Markdown
Raw 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.
# eth_hedge_sim — 自动对冲模拟盘开发方案
> 独立项目,与现网 `crypto_monitor` / `zk.hyf2.cc` **无部署、无进程、无密钥共用关系**。
> 可参考现有仓库的实现思路或复制片段到本仓库,但 **禁止修改** `crypto_monitor` 内任何文件。
> Git 仓库由负责人自行创建;本目录为本地工程骨架与文档。
---
## 1. 项目定位
| 项 | 约定 |
|----|------|
| 项目名 / 目录名 | `eth_hedge_sim` |
| 本机路径 | `C:\Users\dekun\Desktop\新建文件夹\eth_hedge_sim` |
| 云服务器 | **单独一台 Ubuntu**(或同机不同目录/不同 PM2 进程名,且与现网隔离) |
| 部署 | PM2 |
| 行情 | OKX **实盘只读** APIREST + WebSocket |
| 成交(默认) | **本地模拟撮合 + 本地虚拟资金**(非 OKX 模拟盘) |
| 后期 | 支持切换 **实盘下单**(显式开关 + 二次确认) |
### 1.1 硬边界
- 模拟阶段:**零交易类 API**(不下单、不撤单、不改单)。
- 永续:全部 **市价**(不做限价)。
- 期权:只吃 **买一 / 卖一**
- 仓位固定:永续 **1 ETH**,期权 **2 ETH** 名义(始终 2 倍,与权利金金额无关)。
- 卖一比对 **仅用于选方向**;平仓用买一,并检查买一流动性。
---
## 2. 业务规则
### 2.1 时间与次数
- 期权合约:选 **次日 16:00** 到期。
- 可开仓窗:业务日 **D 日 16:00** 起 → **D+1 日 08:00** 前。
- **D+1 08:00 起禁止新开仓**(已有持仓仍按平仓规则处理,不强制到点清仓——若改规则在设置中可配)。
- 每个业务窗最多 **3 轮**;同时最多 **1 组**仓;平完才能开下一组。
### 2.2 方向(Call 卖一 vs Put 卖一)
| 条件 | 永续 | 期权 |
|------|------|------|
| Call 卖一 > Put 卖一 | 市价做多 1 ETH | 做空 2 ETH 名义 |
| Call 卖一 < Put 卖一 | 市价做空 1 ETH | 做多 2 ETH 名义 |
| 相等 | 不开仓,等待 | — |
> **实现前待定稿**:期权「做多/做空」具体买卖 Call 还是 Put(或组合);行权价选择(建议默认 ATM / 最接近标记价的同一行权价)。
### 2.3 平仓(任一触发 → 该组全平)
1. **权利金覆盖**:永续浮盈 ≥ 该组开仓锁定的 **期权初始权利金总额**(建议触发口径 **不含手续费**;费用单独记账)。此时期权侧通常仍有盈余/剩余价值,属预期内。
2. **方向 30 点**:期权方向运行满 30 点 → 全平(**待定**:标的 ETH 点数 vs 权利金点数)。
平仓执行:
- 永续:本地市价平仓。
- 期权:吃买一;买一深度需覆盖 2 ETH 名义;不足则不成交并记「流动性不足」,默认继续等待。
### 2.4 组(Group)标识
每一轮开→平为一组,稳定 ID 例如:`G-YYYYMMDD-序号``G-20260724-01`)。
前端、交易记录、统计全部按组聚合。
---
## 3. 本地撮合与费用
### 3.1 手续费与滑点
- 永续、期权 **均收取手续费**,费率可配置,默认按 OKX taker 档位。
- **滑点 = 1 倍手续费**(费率 `f` 时,滑点幅度按 `f` 计入成交价;手续费另扣)。
### 3.2 永续(仅市价)
本地市价定义(无真实交易所市价单时):
- 开多 / 平空:基准 **卖一**,成交价 = 基准 × `(1 + f)`,再扣手续费。
- 开空 / 平多:基准 **买一**,成交价 = 基准 × `(1 - f)`,再扣手续费。
- UI 与引擎均不提供限价单。
### 3.3 期权(只吃买卖一)
- 买入:吃 **卖一**,成交价 = 卖一 × `(1 + f)`,再扣费。
- 卖出:吃 **买一**,成交价 = 买一 × `(1 - f)`,再扣费。
- 开仓成交后锁定该组 **初始权利金总额**(按成交价 × 2 ETH 名义)。
### 3.4 本地账本
虚拟权益、可用、占用、持仓、成交、滑点、手续费、按组盈亏;持久化 SQLite(或等价本地 DB)。
**不是** OKX 模拟盘余额。
---
## 4. 系统架构
```
OKX 实盘只读行情 (WS/REST)
market 行情网关(本地缓存/可选落盘)
strategy 策略状态机(时间窗 / 选向 / 开平 / 3 次 / 组 ID)
executor
├─ SIM(默认)→ LocalMatcher + Ledger
└─ LIVE(后期)→ OkxTradeAdapter
API + WebSocket 推送
FrontendOKX 风格四页)
```
### 4.1 与现网隔离
| | crypto_monitor(现网) | eth_hedge_sim(本项目) |
|--|----------------------|------------------------|
| 代码仓 | 独立 | 独立(负责人自建 remote) |
| 服务器目录 | 如 `/opt/crypto_monitor` | 如 `/opt/eth_hedge_sim`(另定) |
| PM2 进程名 | 现有一套 | **新名字**,如 `eth-hedge-api` / `eth-hedge-web` |
| 域名/端口 | 现网 | 独立端口或独立域名 |
| 密钥 | 现网 `.env` | 本项目独立 `.env`(先只读行情 Key |
允许:从现网 **复制** 盘口解析、OKX WS 订阅、流动性检查等代码到本仓库后改。
禁止:在现网仓库里改文件、共用 PM2 restart 脚本、共用生产 Key(除非只读 Key 故意共用且你知情)。
---
## 5. 前端
视觉:复刻 OKX 交易台观感(深色、盘口、持仓、紧凑数字)。
### 导航(4 项)
1. **自动对冲计划**
模式 SIM/LIVE、时间窗状态、当前组 ID、方向、1+2 仓位、初始权利金、永续浮盈、距触发差值、30 点进度、永续/期权盘口、启动暂停、紧急全平(模拟)。
2. **交易记录**
按组列表与组内成交明细;筛选日期、平仓原因、盈亏。
3. **统计**
组数、胜率、总盈亏、总手续费、总滑点、平仓原因分布、按组权益曲线。
4. **系统设置**
虚拟资金、费率 `f`(滑点自动 1×f)、轮次与时间、30 点定义、选约规则、OKX Key、SIM/LIVE 开关(LIVE 二次确认)。
每组必须有明确标识(组 ID + 状态标签:持仓中 / 已平 / 流动性等待等)。
---
## 6. 部署(Ubuntu + PM2
### 6.1 建议目录
```text
/opt/eth_hedge_sim # git clone 目标
.env # 仅本机/本项目,不进 git
deploy/
ecosystem.config.cjs # PM2 配置
pull_and_restart.sh # 仅重启本项目进程
```
### 6.2 PM2 进程(示例名,可改)
| 进程名 | 作用 |
|--------|------|
| `eth-hedge-api` | 行情网关 + 策略 + 本地撮合 + HTTP/WS API |
| `eth-hedge-web` | 前端静态或 Node 服务(若前后端合一可合并为一个进程) |
原则:**不要** `pm2 restart all` 误伤现网;脚本里写死本项目进程名。
### 6.3 发布流程(负责人自建仓库后)
```bash
cd /opt/eth_hedge_sim
git pull
# 安装依赖 / 构建前端(按实际栈)
pm2 startOrReload deploy/ecosystem.config.cjs --update-env
pm2 save
```
### 6.4 环境变量(示例)
```bash
MODE=SIM
OKX_API_KEY=... # 模拟阶段只需能拉行情的权限
OKX_API_SECRET=...
OKX_API_PASSPHRASE=...
FEE_RATE=0.0005 # 示例;滑点 = 1 × FEE_RATE
INITIAL_EQUITY=100000
TZ=Asia/Shanghai
```
---
## 7. 分期实施
| 阶段 | 内容 | 完成标准 |
|------|------|----------|
| P0 | 仓库骨架、依赖、OKX 只读行情(永续 + 次日期权盘口) | 能稳定收到真盘口 |
| P1 | 本地账本 + 撮合(永续市价、期权吃一、费+1×费滑点) | 手动开平一组账目正确 |
| P2 | 策略状态机(选向、两套平仓、3 次、08:00 停开、组 ID) | 无 UI 也能跑完业务窗 |
| P3 | 四页前端 | 可完整操作与复盘 |
| P4 | 行情落盘与回放 | 重放结果与当时一致 |
| P5 | 实盘适配器 | 显式开关下最小仓验证 |
---
## 8. 实现前待拍板
1. 期权多空的具体合约腿(Call / Put)。
2. 「30 点」定义(标的 vs 权利金)。
3. 行权价选择规则。
4. 初始权利金触发是否不含手续费(建议不含)。
5. Call 卖一 = Put 卖一时:跳过等待(建议)。
6. 云服务器路径、域名/端口、PM2 进程最终命名。
---
## 9. 一句话
**独立仓 `eth_hedge_sim`OKX 真行情只读 + 本地虚拟资金撮合(永续市价、期权只吃买卖一、滑点=1×手续费)+ OKX 风四页前端 + Ubuntu/PM2 单独部署;可抄现网思路,但不改现网代码、不共用现网进程。**