# 比特骆驼自动化对冲系统 — 策略说明

> 产品：**比特骆驼自动化对冲系统**（工程 `eth_hedge_sim`）  
> 依据当前代码逻辑整理（SIM 默认真值参数）。  
> 关联：[开发方案](./开发方案.md)、[商业化与授权方案](./商业化与授权方案.md)、[实盘索引](./实盘策略说明.md)、[OKX实盘](./OKX实盘策略说明.md)、[币安实盘](./币安实盘策略说明.md)  
> 更新：2026-07-26

**运行模式**：设置页「运行模式」可切 **SIM / LIVE**；交易所 API 录入后写入服务器 `.env`（不回传明文）。LIVE 须二次确认输入 `LIVE`；**OKX / 币安均可真下单**（须选对应当前交易所并配齐密钥）。有持仓时不可切模式。

---

## 1. 策略一句话

用 **ATM 期权买方** 表达方向弹性，用 **反向永续** 做对冲腿；波动大时争取多轮兑现净盈利，波动小时接受权利金磨损，**到期自动全平**。

本质是 **概率与样本**：不追求每天固定轮次，而按行情吃机会。

**行情来源可切换（SIM）**：系统设置中可选 **OKX** 或 **币安** 公共行情；成交仍为本机模拟撮合，**不下真单**。

| 交易所 | 永续（默认） | 期权 | 说明 |
|--------|--------------|------|------|
| OKX | ETH-USDT-SWAP | ETH-USD_UM（偏 USDC 保证金族） | 当前默认 |
| 币安 | ETHUSDT（USDT-M） | 欧洲期权 ETH-YYMMDD-行权价-C/P（USDT） | 后期实盘优先候选 |

有持仓时不可切换交易所；切换后自动套用该所合约并重连行情。

---

## 2. 仓位结构（默认）

| 腿 | 默认数量 | 方向规则 | 成交方式 |
|----|----------|----------|----------|
| 永续 ETH-USDT-SWAP | **1 ETH** | 见下表 | 市价（吃买一/卖一 + 滑点） |
| 期权 ETH-USD_UM | **2 ETH** 名义 | 只买不卖 | 开仓吃卖一，平仓吃买一 |

**开仓顺序**：先成交期权 → 确认后再市价成交永续。永续盘口失败则回滚期权扣款，不留半边仓。

**平仓顺序**：同样先平期权（买一薄）→ 再瞬时平永续。平期权期间永续对冲先留着；永续盘口失败则回滚期权入账。

永续杠杆默认 **3×**（可配）。同时最多 **1 组**仓，禁止叠仓开下一组。

### 2.1 开仓方向

#### 默认（`fixed_direction_enabled=false`）：ATM 相对现价优先

行权价相对标的有偏离时（币安粗档常见），**先按 ATM 偏上/偏下选向**；仅当行权价与标的贴平（≈）时，才回退卖一比价。

| 条件 | 期权 | 永续 | bias |
|------|------|------|------|
| ATM 行权价 **<** 标的（如 1850 vs 1859） | 买入 Call | 做空 | `strike_below_spot` |
| ATM 行权价 **>** 标的（如 1875 vs 1859） | 买入 Put | 做多 | `strike_above_spot` |
| ATM ≈ 标的，且 Call 卖一 > Put 卖一 | 买入 Call | 做空 | `call_ask_gt_put` |
| ATM ≈ 标的，且 Put 卖一 > Call 卖一 | 买入 Put | 做多 | `put_ask_gt_call` |
| ATM ≈ 标的且卖一相等 | 不开仓，继续等待 | — | — |

直觉：偏下行权价用 Call+空，偏上行权价用 Put+多；贴平时再按权利金溢价侧选向。

#### 固定方向（`fixed_direction_enabled=true`）

设置里可开「固定方向」（默认关），并指定永续多或空：

| `fixed_perp_side` | 永续 | 期权 | 行权价约束 | bias |
|-------------------|------|------|------------|------|
| `long` | 做多 | 买入 Put | 实值或平值（K ≥ 标的），优先贴近标的 | `fixed_long_put` |
| `short` | 做空 | 买入 Call | 实值或平值（K ≤ 标的），优先贴近标的 | `fixed_short_call` |

固定方向开启时：**不买虚值**；ATM 偏差限制不适用（由实值/平值规则替代）。

---

## 3. 开仓机制

### 3.1 流程概览

```
策略运行中
  → 无持仓且不在休息期
  → 非周末跳过（若开启）
  → 选到期：剩余时长 ≥ min_option_hours（默认 12h）
  → 若固定方向关：该到期 ATM；若开：按 Put/Call 选实值或平值档
  → 若未开固定方向且开启 atm_open_offset_enabled：|ATM − 标的| ≤ max_atm_open_offset（默认 3）否则跳过
  → 选向：固定方向按设置；否则 ATM 偏下→Call+空；偏上→Put+多；贴平→卖一比价
  → 期权杠杆 = 标的价 ÷ 卖一权利金 ≥ min_option_leverage（默认 100）
  → 先开期权（吃卖一）→ 再市价开永续（一组）
  → 锁定 initial_premium = 期权成交价 × 期权名义（不含费）
```

### 3.2 选约约束

| 参数 | 默认 | 作用 |
|------|------|------|
| `min_option_hours` | 12 | 过滤过近到期，减少刚开仓就到期 |
| `min_option_leverage` | 100 | 权利金相对标的不能太贵（现价/卖一） |
| `fixed_direction_enabled` | false | 固定方向开关（默认关） |
| `fixed_perp_side` | long | 开启后：long=多+Put / short=空+Call |
| `atm_open_offset_enabled` | false | 开仓 ATM 偏差限制开关（默认关；固定方向开启时忽略） |
| `max_atm_open_offset` | 3 | 开关开启后：\|ATM − 标的\| 超过则不开 |
| ATM / 实值平值 | — | 默认 ATM；固定方向时同到期实值或平值、最贴近标的 |

无合格合约时：状态停留等待，记录「无合格期权…」，不硬开。

### 3.3 时间与节奏

| 规则 | 说明 |
|------|------|
| 开仓时间窗 | **已取消**，全天可尝试（仍受选约约束） |
| 周六/周日 | 默认 **跳过新开仓**（上海时区，`skip_weekends`）；持仓仍可平 |
| 每日轮次上限 | **不限制**；波动大可能多轮，波动小可能一轮都难 |
| 组间休息 | 全平后默认休息 **300 秒**（`rest_seconds`）再开下一组；**自动达标/到期、手动全平、紧急全平**成功后均进入休息 |
| 暂停时 | **不新开仓**；仍执行 **目标平仓 + 到期平仓**（防重启/暂停漏平） |
| 同时持仓 | 最多 1 组 |

### 3.4 费用（SIM）

- 永续、期权均按可配 `fee_rate`（默认 0.0005）计费。
- **SIM**：滑点按约 1 倍费率计入成交价，手续费另扣；统计拆分「永续手续费 / 期权手续费 / 滑点」。
- **LIVE**：用交易所真实成交价与真实手续费，**不计、不展示**模拟滑点。
- 开仓现金：支付期权权利金 + 开仓手续费；永续开仓主要扣费。

---

## 4. 平仓机制

平仓分两大类：**① 目标平仓**（净盈利达标）；**② 到期平仓**（目标未达标，拖到到期）。  
目标平仓又分两种落地方式（双腿全平 / 只平永续+期权归档到期）。

### 4.1 目标平仓（第一优先级）

**净盈利**口径（盯盘用，主要看买一，不看标记价）：

```
净盈利 ≈ 永续浮盈 + 期权浮盈 − 预估平仓手续费
期权浮盈 = 当前买一 × 数量 − 初始权利金
```

| 出场模式 | 默认 | 触发条件 |
|----------|------|----------|
| `fixed_usdt` | 目标 **15 USDT** | 净盈利 ≥ `net_profit_target` |
| `premium_multiple` | 倍数 **1.0** | 净盈利 ≥ `initial_premium × premium_exit_multiple` |

说明：权利金倍数模式下，**1× = 赚回一倍权利金金额的净利**（例如权利金 20.41，目标约 20.41，不是 40.82）。

达标后按期权状态走下面 **A / B** 两套（不是互相替换，按能否平掉期权分支）：

#### 4.1.A 双腿全平（期权仍有可平价值 / 非远虚）

- 条件：净利达标，且期权 **不是远虚**（仍可能有买一可平）。
- 动作：校验买一深度 + 买一/标记偏差（默认 ≤30%）→ **先平期权、再平永续**。
- 通不过流动性 → `liquidity_wait`，继续等待（不改开仓组）。

#### 4.1.B 只平永续 + 期权归档到期（远虚）

筛选约 **100× 杠杆** 期权时，标的波动约 **1%** 量级后，买方腿常变为**远虚**（内在价值≈0），买一往往枯死、整组硬平会卡死。

- 条件：净利达标，且期权已是 **虚值且远虚**（内在价值 ≈ 0）。
- 动作：
  1. **只市价平掉永续**，兑现净利里永续那一截；
  2. 本张期权 **不再盯盘、不再参与平仓扫描**，归档为「到期残留」；
  3. 因期权 **逐仓**，残留 **不占用活跃持仓**，**不挡住下一组开仓**；
  4. 下一组开平仓 **只扫当前活跃组期权**，不扫描历史残留腿；
  5. 残留期权到到期日再按 **内在价值** 单独结算（多半接近 0）；
  6. 页面：**活跃持仓区变空**；归档腿出现在「残留期权(待到期)」；下方期权盘口 **切回新 ATM**（见 4.6）。

残留到期结算口径：

```
结算价 = 内在价值（Put: max(K−S,0) / Call: max(S−K,0)）
期权盈亏 ≈ (结算价 − 开仓均价) × 数量 − 结算手续费
整组净利 = 已实现永续盈亏 + 期权结算盈亏 − 全部手续费
```

> 直觉：能双腿平就走 A；期权已经远虚平不掉就走 B，别把永续利润和下一单机会一起卡死。

### 4.2 到期平仓（目标未达标）

- 净利一直未达标 → **不主动砍仓**，持有到期权到期。
- 到达期权到期时刻（OKX：UTC 08:00 = **上海 16:00**）→ 原因 `expiry`。
- **活跃组**：期权按标的结算价的 **内在价值** 入账；若永续仍在则市价平掉。
- **残留组**（曾走 4.1.B）：永续早已平掉，**只结算归档期权**，不碰当前活跃仓、不改下方 ATM。
- 策略 **暂停时仍执行目标平仓与到期结算**，不新开仓；避免重启/暂停后漏平。
- 波动小、拖到到期：权利金亏损视为 **预算内成本**，可接受。

### 4.3 平仓流动性闸门（仅 4.1.A）

双腿全平时：

- 期权买一深度需覆盖平仓名义；
- 买一相对标记偏差默认 ≤ **30%**（`close_bid_mark_max_pct`）；
- 不满足 → `liquidity_wait`，继续等待。

**4.1.B / 到期 / 紧急全平**：不适用「必须卖掉期权买一」这套闸门（到期与残留按内在价值；紧急可绕过）。

**紧急全平**：活跃组尽量双腿平掉；残留期权一并按内在价值结算；成功后进入组间休息（与手动全平相同）。

### 4.4 其它平仓入口 / 原因码

| 原因码 | 含义 |
|--------|------|
| `fixed_usdt` / `premium_multiple` | 目标平仓 · 双腿全平（4.1.A） |
| `target_perp_only` | 目标平仓 · 只平永续，期权归档到期（4.1.B） |
| `expiry` | 到期结算（活跃组或残留期权） |
| `emergency` | 界面紧急全平 |
| `manual` | 手动平仓 |

### 4.5 流程总览

```
有活跃持仓
  ├─ 净利达标？
  │    ├─ 是 · 期权远虚（内在价值≈0）→ 平永续，期权归档到期，可开下一组
  │    └─ 是 · 非远虚 → 试双腿全平（流动性闸门）→ 失败则等待
  └─ 否 → 持有直到到期 → 内在价值结算（+ 若有永续则平永续）

残留期权（已归档）
  └─ 仅到期结算；不参与盯盘、不参与下一组平仓扫描
```

### 4.6 行情监控与页面展示

计划页下方期权盘口 **不是永远跟现价 ATM**，也 **不是永远跟开仓那张**，按仓位状态切换：

| 状态 | 持仓区 | 「残留期权(待到期)」 | 下方期权盘口 |
|------|--------|---------------------|--------------|
| **有活跃组**（永续+期权都在） | 显示当前组 | 无（或仅历史残留） | **钉在持仓行权价**（标题「持仓期权 @ K」）；浮盈亏/平仓价 **只用持仓合约盘口**，禁止借用新 ATM |
| **空仓**（无活跃组） | 空 | 无 | **跟现价 ATM**：\|ATM − 标的\| ≥ **5** 点时自动切到新行权价，供下一组选约 |
| **仅残留**（4.1.B：永续已平，期权归档等到期） | 空（活跃已 flat） | **显示归档合约**（到期/行权价） | **显示新 ATM**（为下一组开仓）；**不**继续钉归档那张 |

要点：

1. **活跃持仓期间**：现价怎么走，下方监控都盯开仓那张；重启服务也不会漂到新 ATM。
2. **平掉活跃组或走 4.1.B 后**：下方立刻回到「下一单 ATM」；归档腿只出现在残留列表，到期按内在价值结算。
3. **浮盈亏口径**：持仓合约买一；不得用其他行权价的买一顶替（避免 1880 持仓显示成 1890 盘口）。

```
有活跃仓 → 下方 = 持仓期权 @ 开仓行权价
无活跃仓 → 下方 = 期权 ATM @ 当前现价档（可随价漂移 ≥5 点切换）
残留腿   → 只在「残留期权」行；到期结算；不占用下方 ATM
```

---

## 5. 策略侧重点

| 侧重点 | 说明 |
|--------|------|
| **吃波动，不赌横盘** | 买方期权需要标的走动；大波动利于达标出场 |
| **概率与轮次** | 波动日可能多轮；磨盘日可能零轮或一轮认亏 |
| **确定性时间规则** | 用周末跳过、到期全平，**不做**难以精准的横盘识别 |
| **费用后净利** | 出场看扣完预估平仓费后的净盈利，避免「账面赚、平完亏」 |
| **单组纪律** | 活跃持仓最多 1 组；远虚归档的残留期权不挡下一组（逐仓） |
| **权利金是成本预算** | 小波动拖到期亏权利金，属于策略设计内损耗，不是异常 bug |
| **目标平仓两分支** | 能平期权则双腿全平；远虚则只平永续、期权到期归档 |
| **监控分工** | 有仓钉持仓行权价；空仓/仅残留时下方跟新 ATM；残留腿单独列表 |

适合对外表述：

> 适合有波动的时段；震荡磨盘是主要磨损源。不怕单边大波动本身，怕没波动却持续付时间价值。

---

## 6. 风险点评估

### 6.1 主要风险

| 风险 | 等级 | 说明 | 缓解（已有/建议） |
|------|------|------|------------------|
| **横盘 / 低波动** | 高 | Theta 消耗权利金；永续几乎不贡献利润 | 周末跳过；到期认亏全平；接受磨损日 |
| **方向选错** | 中高 | 卖一比价并非预测圣杯；错向时期权可能失利，永续端也可能承压 | 净盈利达标才兑现；到期强平止损时间 |
| **开平滑点与手续费** | 中 | 双边 taker + 滑点侵蚀小目标利润 | 目标默认 15U 需覆盖费用；勿把目标设过低 |
| **期权流动性** | 中 | 远虚时买一枯死 | 4.1.B 只平永续+归档；到期内在价值结算 |
| **杠杆与保证金** | 中 | 永续 3×，标的急跌/急涨挤压保证金 | 控制名义、保留资金缓冲；实盘注意强平线 |
| **同到期 ATM 拥挤** | 低–中 | 临近到期价差与盘口恶化 | `min_option_hours`；到期强平 |
| **SIM≠实盘** | 高（若直接外推） | 本地撮合、深度与成交假设简化 | 小资金实盘验证后再放大 |
| **交易所限流 / 断连** | 中 | 行情中断导致延误开平 | 健康检查；部署侧监控 |

### 6.2 明确不做什么（边界）

- 不做卖方期权（不收权利金那套）。
- 不做横盘「智能识别」开仓过滤。
- 不做多组并行。
- 当前主路径为 **SIM**；实盘需另行授权与二次确认（见商业化方案）。

### 6.3 损益直觉

- **有利波动**：期权端弹性（2 ETH 名义）常快于永续（1 ETH）的对冲损耗 → 易达净利目标。  
- **不利 / 无波动**：权利金贬值 + 费用 → 拖到到期全平，单组亏损量级约在 **权利金量级 + 双边费用**（再叠加永续期间浮亏/浮盈）。

---

## 7. 最小资金推荐

以下按 **默认仓位**（永续 1 ETH、期权 2 ETH 名义、杠杆 3×）估算，标的价按 **ETH ≈ 1,800–2,200 USDT** 量级。

### 7.1 单组占用粗算

| 项目 | 约略金额（USDT） |
|------|------------------|
| 永续保证金（名义÷杠杆） | ≈ 1,800–2,200 ÷ 3 ≈ **600–750** |
| 期权权利金（ATM、短期限，2 ETH） | 常见约 **15–60**（行情波动大时更高） |
| 开平手续费 / 滑点缓冲 | **20–50** |
| 逆向波动缓冲（避免过紧） | **300–800**（经验缓冲，非精确 VaR） |

### 7.2 建议档位

| 档位 | 建议权益（USDT） | 适用 |
|------|------------------|------|
| **绝对下限（不推荐）** | ≥ **1,500** | 仅能勉强覆盖保证金 + 小权利金，缓冲极薄，易心态与风控双紧 |
| **最小可用** | ≥ **3,000** | 默认参数下可跑 SIM / 极小实盘验证，仍偏紧 |
| **推荐起步** | ≥ **5,000** | 留出磨损日与波动缓冲，更符合「概率样本」玩法 |
| **较舒适** | ≥ **10,000** | 参数微调、连续多日磨损时更从容 |

> 缩放规则：若把永续改为 `0.5 ETH`、期权 `1 ETH`，资金需求大约可按比例减半，但费用占比会上升，小目标更难赚。

### 7.3 与出场目标的关系

- 默认净利目标 **15 USDT**：在费用后属于「小而频」目标，依赖波动日多次兑现。  
- 单日/单组最坏常见情形更接近 **亏掉当期权利金 + 费用**（外加永续路径损益），资金规划应按 **多次磨损日** 而非「每组必赚 15」来留余量。

### 7.4 SIM 默认

系统默认虚拟权益 `initial_equity = 10,000` USDT（策略设置可改；保存且数值变更时在无持仓下重置账本），**不代表**实盘建议入金。

实盘试跑建议仓位：**永续 0.1 ETH / 期权 0.2 ETH 名义**（k=0.1），并同比下调净利目标。分所口径见 [OKX实盘策略说明](./OKX实盘策略说明.md)、[币安实盘策略说明](./币安实盘策略说明.md)。

---

## 8. 关键可配参数速查

| 参数 | 默认 | 类别 |
|------|------|------|
| `perp_qty_eth` | 1 | 仓位 |
| `option_qty_eth` | 2 | 仓位 |
| `leverage` | 3 | 永续 |
| `fee_rate` | 0.0005 | 成本 |
| `exit_mode` | fixed_usdt | 出场 |
| `net_profit_target` | 15 | 出场 |
| `premium_exit_multiple` | 1.0 | 出场 |
| `rest_seconds` | 300 | 节奏 |
| `skip_weekends` | true | 时间 |
| `min_option_hours` | 12 | 选约 |
| `min_option_leverage` | 100 | 选约 |
| `fixed_direction_enabled` | false | 固定方向开关 |
| `fixed_perp_side` | long | 固定永续方向 |
| `atm_open_offset_enabled` | false | 开仓 ATM 偏差开关 |
| `max_atm_open_offset` | 3 | 开仓 ATM 偏差上限 |
| `close_bid_mark_max_pct` | 30 | 平仓流动性 |

---

## 9. 修订记录

| 日期 | 说明 |
|------|------|
| 2026-07-24 | 选约增加固定方向开关：永续多→Put / 空→Call，期权仅实值或平值；关则沿用 ATM/比价 |
| 2026-07-25 | 初稿：对齐当前开平仓、周末跳过、到期全平、净盈利口径与资金建议 |
| 2026-07-25 | 平仓顺序改为先期权后永续（与开仓同理：薄腿优先） |
| 2026-07-26 | 到期按内在价值结算（对齐实盘）；紧急平仓仍用 max(买一,标记,内在价值) |
| 2026-07-26 | 明确两套目标平仓：双腿全平 / 远虚只平永续+期权归档到期；到期为未达标路径 |
| 2026-07-26 | 补充 §4.6：有仓钉持仓监控、空仓/仅残留跟新 ATM、残留列表与到期内在价值结算展示分工 |
| 2026-07-26 | 设置页 SIM/LIVE 切换；API 密钥落 `.env`；OKX LIVE 开平仓；币安密钥可存 |
