Files
eth_hedge_sim/docs/开发方案.md
T
2026-07-30 13:07:25 +08:00

264 lines
11 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` |
| 部署操作系统 | **Ubuntu 22.04** LTS |
| 云服务器 | **单独一台 Ubuntu 22.04**;规格选型见 [§6.0 云服务器配置选择](#60-云服务器配置选择说明) |
| 部署 | PM2 |
| 行情 | OKX **实盘只读** APIREST + WebSocket |
| 成交(默认) | **本地模拟撮合 + 本地虚拟资金**(非 OKX 模拟盘) |
| 后期 | 支持切换 **实盘下单**(显式开关 + 二次确认) |
| 中控 | 同仓 `control/`,本地局域网运维面板(多机监控/启停/更新);见 [中控 Fleet 说明](./中控Fleet说明.md) |
### 1.1 硬边界
- 模拟阶段:**零交易类 API**(不下单、不撤单、不改单)。
- 永续:全部 **市价**(不做限价)。
- 期权:只吃 **买一 / 卖一**
- 仓位固定:永续 **1 ETH**,期权 **2 ETH** 名义(始终 2 倍,与权利金金额无关)。
- 卖一比对 **仅用于选方向**;平仓用买一,并检查买一流动性。
---
## 2. 业务规则
### 2.1 时间与次数
- 期权合约:按 **剩余时长下限**(可配)筛选到期;行权价默认 **ATM**(同到期、最接近指数/标记的同一行权价 Call+Put)。
- **开仓时间窗已取消**(全天可尝试开仓,仍受选约条件约束)。
- **周六 / 周日跳过开仓**(上海时区,设置项 `skip_weekends`,默认开启):禁止新开仓;**已有持仓仍盯盘平仓**。
- **不做横盘识别**:波动过滤难以精准,避免假信号;用周末跳过等确定性规则代替。
- 同时最多 **1 组**仓;一轮全平结束后 **休息**(可配 `rest_seconds`,默认 300 秒)再开下一组。
### 2.2 方向(Call 卖一 vs Put 卖一;期权只买入、永不为卖方)
| 条件 | 期权(名义 2 ETH | 永续(1 ETH |
|------|-------------------|---------------|
| Call 卖一 > Put 卖一 | **买入 Call**(吃卖一) | **市价做空** |
| Call 卖一 < Put 卖一 | **买入 Put**(吃卖一) | **市价做多** |
| 相等 | 不开仓,等待 | — |
### 2.3 平仓(任一触发 → 该组全平)
1. **净盈利达标**(设置可选):固定 USDT,或初始权利金 × 倍数。
2. **到期强制全平**:到达期权到期时刻(OKX 惯例 UTC 08:00 = 上海 16:00)→ 整组卖出;绕过买一流动性闸门(与紧急平仓同类)。策略暂停时仍执行。
波动小、拖到到期亏损权利金,按预算内成本接受。
平仓执行:
- 永续:本地市价平仓。
- 期权:多头平仓吃买一;买一深度需覆盖名义(到期/紧急可绕过偏差与深度校验)。
### 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 22.04 + PM2
### 6.0 云服务器配置选择说明
本系统为 **轻量常驻进程**(行情 WebSocket + 策略 tick + FastAPI + SQLite),对 CPU/内存要求不高,但对 **网络延迟与稳定性** 要求高(连交易所 API)。
#### 推荐规格(单机专跑本系统)
| 场景 | vCPU | 内存 | 系统盘 | 带宽 | 说明 |
|------|------|------|--------|------|------|
| **最低可用(SIM 试跑)** | 1 | 1 GB | 20 GB SSD | ≥3 Mbps | 可装 Ubuntu + 本服务;偏紧,构建前端时可能吃紧 |
| **推荐(SIM / 小仓 LIVE** | **2** | **2 GB** | **40 GB SSD** | **≥5 Mbps** | 日常够用;前端 `npm build`、依赖安装更稳 |
| **余量(LIVE 长期 / 同机反代)** | 24 | 4 GB | 4080 GB SSD | ≥5 Mbps | 同机跑 nginx、日志、备份更从容 |
| **不建议** | 共享超售极低配、无稳定公网、国内机访问境外交易所极慢 | — | — | — | 行情断连、下单超时风险高 |
#### 地域与网络(比「堆配置」更重要)
| 项 | 建议 |
|----|------|
| **机房地域** | 优先选 **香港 / 新加坡 / 东京** 等对 OKX、币安延迟低的区域;大陆机房常需稳定出网或代理,不适合作为默认 LIVE 节点 |
| **公网** | 要有 **固定公网 IP**(或稳定入口);安全组放行 **5155**(或仅反代 443 |
| **延迟** | 部署后用本机测交易所 REST/WS;持续高延迟或频繁断线应换区,而不是盲目加 CPU |
| **隔离** | **单独一台**跑本系统;勿与现网 `crypto_monitor` 混用同一套密钥/同一 PM2 `restart all` |
#### 软件与其它选型
| 项 | 约定 |
|----|------|
| OS | **Ubuntu 22.04 LTS**(与一键脚本一致) |
| 磁盘 | SSD;日志与 SQLite 在本机,无需独立数据盘(仓位不大) |
| 架构 | **x86_64**(常规云主机);ARM 需自行验证 Node/Python 构建 |
| 面板 | 可选;一键部署只依赖 SSH + apt,不依赖宝塔等面板 |
| 反代 | 公网建议 **Nginx/Caddy + HTTPS**,后端仍监听本机 `5155` |
#### 选型速查
- **只想先 SIM 看盘跑策略**:香港/新加坡 **2C2G** 即可。
- **要 LIVE 真下单**:同样 **2C2G 起**,重点换到 **低延迟机房** 并配齐非默认 `AUTH_SECRET` + 交易密钥。
- **同机还要跑其它重服务**:升到 **4G 内存**,或把本系统拆到独立机。
### 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=10000
TZ=Asia/Shanghai
```
---
## 7. 分期实施
| 阶段 | 内容 | 完成标准 |
|------|------|----------|
| P0 | 仓库骨架、依赖、OKX 只读行情(永续 + 次日期权盘口) | 能稳定收到真盘口 |
| P1 | 本地账本 + 撮合(永续市价、期权吃一、费+1×费滑点) | 手动开平一组账目正确 |
| P2 | 策略状态机(选向、两套平仓、3 次、08:00 停开、组 ID) | 无 UI 也能跑完业务窗 |
| P3 | 四页前端 | 可完整操作与复盘 |
| P4 | 行情落盘与回放 | 重放结果与当时一致 |
| P5 | 实盘适配器 | 显式开关下最小仓验证 |
---
## 8. 已拍板摘要
1. 期权只买入 Call 或 Put(永不卖出开仓)。
2. N 点 = 标的 ETH 波动点数,设置可配(默认 30)。
3. 行权价 ATM。
4. 权利金覆盖触发不含手续费。
5. Call 卖一 = Put 卖一:跳过等待。
6. 测试访问:`https://dc.hyf2.cc` → 本机 `5155` / PM2 `eth-hedge-api`
---
## 9. 一句话
**独立仓 `eth_hedge_sim`(产品:比特骆驼自动化对冲系统):OKX/币安真行情只读 + 本地虚拟资金撮合(永续市价、期权只买吃买卖一、滑点=1×手续费)+ 四页前端 + Ubuntu 22.04 / PM2 单独部署;可抄现网思路,但不改现网代码、不共用现网进程。**