Align emergency option close to OKX: use bid only, never mark.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -367,7 +367,7 @@ class Matcher:
|
||||
"""
|
||||
全平一组。默认校验期权买一深度 + 买一/标记偏差(默认≤30%)。
|
||||
reason=expiry:对齐实盘,期权按标的结算价的内在价值入账(不吃盘口)。
|
||||
bypass_liquidity=True(紧急):绕过深度闸门,价取 max(买一, 标记, 内在价值)。
|
||||
bypass_liquidity=True(紧急):绕过深度/偏差闸门,成交价仍按买一(对齐 OKX 市价卖,不用标记)。
|
||||
成交顺序:先平期权 → 再瞬时平永续;永续盘口失败则回滚期权入账。
|
||||
"""
|
||||
s = get_settings()
|
||||
@@ -462,7 +462,7 @@ class Matcher:
|
||||
if resolved is None:
|
||||
return CloseResult(
|
||||
ok=False,
|
||||
detail="紧急全平失败:无买一/标记/内在价值",
|
||||
detail="紧急全平失败:无买一(对齐 OKX,不能用标记价平仓)",
|
||||
)
|
||||
close_bid = resolved
|
||||
of = option_fill(
|
||||
|
||||
@@ -68,21 +68,17 @@ def resolve_option_close_bid(
|
||||
bypass_liquidity: bool,
|
||||
) -> float | None:
|
||||
"""
|
||||
非到期平仓用买一价;多头卖出不得低于内在价值(SIM)。
|
||||
紧急 bypass:max(买一, 标记, 内在价值)。
|
||||
非到期平仓价(SIM)。
|
||||
- 常规:买一,且多头卖出不低于内在价值。
|
||||
- 紧急 bypass:对齐 OKX 市价卖,**只按买一**(不用标记/内在价值抬价;
|
||||
标记无法在交易所成交)。bypass 只绕过深度/偏差闸门。
|
||||
到期请用 option_expiry_settle,不要走本函数。
|
||||
"""
|
||||
candidates: list[float] = []
|
||||
if bid is not None and bid >= 0:
|
||||
candidates.append(float(bid))
|
||||
if bypass_liquidity and mark is not None and mark >= 0:
|
||||
candidates.append(float(mark))
|
||||
if intrinsic is not None and intrinsic >= 0:
|
||||
candidates.append(float(intrinsic))
|
||||
if not candidates:
|
||||
return None
|
||||
_ = mark # 保留参数兼容调用方;紧急不再用标记定价
|
||||
if bypass_liquidity:
|
||||
return max(candidates)
|
||||
if bid is None or bid < 0:
|
||||
return None
|
||||
return float(bid)
|
||||
if bid is None:
|
||||
return None
|
||||
if intrinsic is not None and intrinsic >= 0:
|
||||
|
||||
@@ -214,14 +214,14 @@ def test_option_intrinsic_and_close_bid_floor() -> None:
|
||||
assert settled.notional == 44.0
|
||||
assert abs(settled.fee - 44.0 * 0.0005) < 1e-12
|
||||
|
||||
# 紧急垃圾买一 0.2,内在价值 22 → 抬到 22
|
||||
# 紧急:对齐 OKX 市价卖,只按买一(垃圾买一不抬到内在价值/标记)
|
||||
assert (
|
||||
resolve_option_close_bid(
|
||||
bid=0.2, mark=0.2, intrinsic=22.0, bypass_liquidity=True
|
||||
bid=0.2, mark=22.0, intrinsic=22.0, bypass_liquidity=True
|
||||
)
|
||||
== 22.0
|
||||
== 0.2
|
||||
)
|
||||
# 常规也有内在价值地板
|
||||
# 常规:内在价值地板
|
||||
assert (
|
||||
resolve_option_close_bid(
|
||||
bid=0.2, mark=0.2, intrinsic=22.0, bypass_liquidity=False
|
||||
@@ -235,10 +235,10 @@ def test_option_intrinsic_and_close_bid_floor() -> None:
|
||||
)
|
||||
== 25.0
|
||||
)
|
||||
# bypass 无买一,用标记与内在价值
|
||||
# 紧急无买一 → 无法定价(不能用标记)
|
||||
assert (
|
||||
resolve_option_close_bid(
|
||||
bid=None, mark=3.0, intrinsic=22.0, bypass_liquidity=True
|
||||
)
|
||||
== 22.0
|
||||
is None
|
||||
)
|
||||
|
||||
+123
-123
@@ -1,123 +1,123 @@
|
||||
# OKX 实盘策略说明
|
||||
|
||||
> 产品:**比特骆驼自动化对冲系统** · 专用于 **OKX** LIVE。通用对冲逻辑见 [策略说明](./策略说明.md);币安见 [币安实盘策略说明](./币安实盘策略说明.md)。
|
||||
> **标准仓**:永续 **1 ETH** + 期权 **2 ETH** 名义(倍数 `k` 可缩放)。
|
||||
> 更新:2026-07-26
|
||||
|
||||
---
|
||||
|
||||
## 1. 一句话
|
||||
|
||||
ATM **期权买方** + **反向永续**;净利达标兑现,未达标拖到期。OKX 上期权多走 **USDC 保证金族**(`ETH-USD_UM`),账户侧常需 **USDT ↔ USDC** 换汇,与币安「统一 USDT」体验不同。
|
||||
|
||||
---
|
||||
|
||||
## 2. 合约与资金
|
||||
|
||||
| 腿 | 合约(默认) | 计价 / 保证金 | 说明 |
|
||||
|----|--------------|---------------|------|
|
||||
| 永续 | `ETH-USDT-SWAP` | **USDT** | 张数:名义 ETH ÷ `ctVal`(常见 0.01 ETH/张) |
|
||||
| 期权 | `ETH-USD_UM-YYMMDD-K-C/P` | **USDC**(偏 USDC 保证金) | 张数:名义 ETH ÷ `ctMult`(默认 0.01) |
|
||||
|
||||
### 2.1 USDT ↔ USDC(必做准备)
|
||||
|
||||
- 权利金、期权保证金以 **USDC** 为主;永续盈亏与保证金以 **USDT** 为主。
|
||||
- 开仓前请保证:
|
||||
- **USDT**:够永续保证金 + 缓冲;
|
||||
- **USDC**:够期权权利金(约 15–60U 量级 ×k,视行情)+ 缓冲。
|
||||
- 可用 OKX 闪兑 / 兑换把 USDT 换成 USDC(或反向)。**SIM 不模拟换汇**;实盘缺 USDC 会直接下单失败。
|
||||
- 建议日常维持两侧都有余量,避免「有 USDT 却开不了期权」。
|
||||
|
||||
### 2.2 账户模式建议
|
||||
|
||||
| 项 | 建议 |
|
||||
|----|------|
|
||||
| 永续 | 设置页可选 **全仓 `cross`(默认)/ 逐仓 `isolated`**;双向持仓(hedge)与软件 `posSide` 对齐 |
|
||||
| 期权 | 固定 **cash**(买方付权利金),**不受**永续保证金模式选项影响 |
|
||||
| API | Key + Secret + **Passphrase**;IP 白名单;交易权限最小化 |
|
||||
|
||||
实盘顶部资金条(总资金 / 资金账户 / 交易账户)直接读 OKX;SIM 才显示本地模拟资金。
|
||||
|
||||
---
|
||||
|
||||
## 3. 标准仓与缩放
|
||||
|
||||
与通用说明相同:`永续 = 1×k ETH`,`期权 = 2×k ETH`,净利目标 ≈ `15×k` USDT。
|
||||
试跑建议 **k=0.1**(0.1 + 0.2)。
|
||||
|
||||
---
|
||||
|
||||
## 4. 开仓机制(OKX)
|
||||
|
||||
```
|
||||
选 ATM → 先市价买期权(tdMode=cash)→ 再市价开永续(tdMode=cross + posSide)
|
||||
永续失败 → 立刻市价卖掉期权回滚
|
||||
```
|
||||
|
||||
| 步骤 | OKX 行为 |
|
||||
|------|----------|
|
||||
| 1 期权 | `POST /api/v5/trade/order`,`ordType=market`,`side=buy`,`sz`=张 |
|
||||
| 2 永续 | 同上;多=`buy`+`posSide=long`,空=`sell`+`posSide=short` |
|
||||
| 失败回滚 | 期权 `side=sell` + `reduceOnly` |
|
||||
|
||||
**与币安差异**:
|
||||
|
||||
- 需 **Passphrase**;期权与永续 **币种可能不同**(USDC vs USDT)。
|
||||
- 永续按 **张** 下单(÷ ctVal),不是直接填 ETH 数量字符串(软件内部换算)。
|
||||
- 期权 `tdMode=cash`;若账户改成其他模式,需改配置或改代码适配。
|
||||
|
||||
选向规则(ATM 相对现价)与通用策略说明一致。
|
||||
|
||||
---
|
||||
|
||||
## 5. 平仓机制(OKX)
|
||||
|
||||
两大类与 SIM 相同:**目标平仓(A 双腿 / B 只平永续)**、**到期平仓**。
|
||||
|
||||
| 路径 | OKX 动作 |
|
||||
|------|----------|
|
||||
| **A 双腿全平** | 先市价卖期权(cash)→ 再市价平永续(reduceOnly + 反向 posSide) |
|
||||
| **B 远虚** | 只平永续;期权留账户到期,按 **内在价值** 结算;残留不挡新开 |
|
||||
| **到期** | 期权一般由交易所结算内在价值,软件记账;若永续仍在则市价平掉 |
|
||||
| **紧急** | 尽量双腿市价;可放宽流动性等待 |
|
||||
|
||||
流动性闸门(仅 A):买一深度、买一/标记偏差 ≤30%——实盘以能否成交为准,闸门主要用于避免垃圾价硬扫。
|
||||
|
||||
---
|
||||
|
||||
## 6. 监控与模式
|
||||
|
||||
| 状态 | 下方盘口 |
|
||||
|------|----------|
|
||||
| 有活跃仓 | 钉持仓行权价 |
|
||||
| 空仓 / 仅残留 | 跟新 ATM(≥5 点切换) |
|
||||
|
||||
设置页:交易所选 **OKX**,运行模式 **LIVE**,填 Key/Secret/Passphrase → 写入 `.env`。切 LIVE 须输入 `LIVE` 确认。
|
||||
|
||||
---
|
||||
|
||||
## 7. 风险(OKX 特有加重)
|
||||
|
||||
| 风险 | 说明 |
|
||||
|------|------|
|
||||
| **换汇遗漏** | USDT 充足但 USDC 不足 → 期权拒单 |
|
||||
| **模式不匹配** | 账户非 cash / 非双向持仓 → 下单参数报错 |
|
||||
| **期权深度** | USDC 期权盘口偶发更薄,远虚更易走 B |
|
||||
| **限流** | 独立 IP;退避重试 |
|
||||
|
||||
---
|
||||
|
||||
## 8. 上线检查(OKX)
|
||||
|
||||
1. SIM 在 OKX 行情下跑通开平。
|
||||
2. 账户 USDT + USDC 均到位;完成一次小额兑换演练。
|
||||
3. API 三件套 + LIVE 确认。
|
||||
4. k=0.1 试:开仓、目标平或到期、残留各至少一次。
|
||||
|
||||
---
|
||||
|
||||
## 9. 修订记录
|
||||
|
||||
| 日期 | 说明 |
|
||||
|------|------|
|
||||
| 2026-07-26 | 初稿:从通用实盘说明拆出 OKX;强调 USDT/USDC 与 cash/cross 开平仓 |
|
||||
# OKX 实盘策略说明
|
||||
|
||||
> 产品:**比特骆驼自动化对冲系统** · 专用于 **OKX** LIVE。通用对冲逻辑见 [策略说明](./策略说明.md);币安见 [币安实盘策略说明](./币安实盘策略说明.md)。
|
||||
> **标准仓**:永续 **1 ETH** + 期权 **2 ETH** 名义(倍数 `k` 可缩放)。
|
||||
> 更新:2026-07-26
|
||||
|
||||
---
|
||||
|
||||
## 1. 一句话
|
||||
|
||||
ATM **期权买方** + **反向永续**;净利达标兑现,未达标拖到期。OKX 上期权多走 **USDC 保证金族**(`ETH-USD_UM`),账户侧常需 **USDT ↔ USDC** 换汇,与币安「统一 USDT」体验不同。
|
||||
|
||||
---
|
||||
|
||||
## 2. 合约与资金
|
||||
|
||||
| 腿 | 合约(默认) | 计价 / 保证金 | 说明 |
|
||||
|----|--------------|---------------|------|
|
||||
| 永续 | `ETH-USDT-SWAP` | **USDT** | 张数:名义 ETH ÷ `ctVal`(常见 0.01 ETH/张) |
|
||||
| 期权 | `ETH-USD_UM-YYMMDD-K-C/P` | **USDC**(偏 USDC 保证金) | 张数:名义 ETH ÷ `ctMult`(默认 0.01) |
|
||||
|
||||
### 2.1 USDT ↔ USDC(必做准备)
|
||||
|
||||
- 权利金、期权保证金以 **USDC** 为主;永续盈亏与保证金以 **USDT** 为主。
|
||||
- 开仓前请保证:
|
||||
- **USDT**:够永续保证金 + 缓冲;
|
||||
- **USDC**:够期权权利金(约 15–60U 量级 ×k,视行情)+ 缓冲。
|
||||
- 可用 OKX 闪兑 / 兑换把 USDT 换成 USDC(或反向)。**SIM 不模拟换汇**;实盘缺 USDC 会直接下单失败。
|
||||
- 建议日常维持两侧都有余量,避免「有 USDT 却开不了期权」。
|
||||
|
||||
### 2.2 账户模式建议
|
||||
|
||||
| 项 | 建议 |
|
||||
|----|------|
|
||||
| 永续 | 设置页可选 **全仓 `cross`(默认)/ 逐仓 `isolated`**;双向持仓(hedge)与软件 `posSide` 对齐 |
|
||||
| 期权 | 固定 **cash**(买方付权利金),**不受**永续保证金模式选项影响 |
|
||||
| API | Key + Secret + **Passphrase**;IP 白名单;交易权限最小化 |
|
||||
|
||||
实盘顶部资金条(总资金 / 资金账户 / 交易账户)直接读 OKX;SIM 才显示本地模拟资金。
|
||||
|
||||
---
|
||||
|
||||
## 3. 标准仓与缩放
|
||||
|
||||
与通用说明相同:`永续 = 1×k ETH`,`期权 = 2×k ETH`,净利目标 ≈ `15×k` USDT。
|
||||
试跑建议 **k=0.1**(0.1 + 0.2)。
|
||||
|
||||
---
|
||||
|
||||
## 4. 开仓机制(OKX)
|
||||
|
||||
```
|
||||
选 ATM → 先市价买期权(tdMode=cash)→ 再市价开永续(tdMode=cross + posSide)
|
||||
永续失败 → 立刻市价卖掉期权回滚
|
||||
```
|
||||
|
||||
| 步骤 | OKX 行为 |
|
||||
|------|----------|
|
||||
| 1 期权 | `POST /api/v5/trade/order`,`ordType=market`,`side=buy`,`sz`=张 |
|
||||
| 2 永续 | 同上;多=`buy`+`posSide=long`,空=`sell`+`posSide=short` |
|
||||
| 失败回滚 | 期权 `side=sell` + `reduceOnly` |
|
||||
|
||||
**与币安差异**:
|
||||
|
||||
- 需 **Passphrase**;期权与永续 **币种可能不同**(USDC vs USDT)。
|
||||
- 永续按 **张** 下单(÷ ctVal),不是直接填 ETH 数量字符串(软件内部换算)。
|
||||
- 期权 `tdMode=cash`;若账户改成其他模式,需改配置或改代码适配。
|
||||
|
||||
选向规则(ATM 相对现价)与通用策略说明一致。
|
||||
|
||||
---
|
||||
|
||||
## 5. 平仓机制(OKX)
|
||||
|
||||
两大类与 SIM 相同:**目标平仓(A 双腿 / B 只平永续)**、**到期平仓**。
|
||||
|
||||
| 路径 | OKX 动作 |
|
||||
|------|----------|
|
||||
| **A 双腿全平** | 先市价卖期权(cash)→ 再市价平永续(reduceOnly + 反向 posSide) |
|
||||
| **B 远虚** | 只平永续;期权留账户到期,按 **内在价值** 结算;残留不挡新开 |
|
||||
| **到期** | 期权一般由交易所结算内在价值,软件记账;若永续仍在则市价平掉 |
|
||||
| **紧急** | 尽量双腿市价;可放宽流动性等待;**成交价仍按买一**(不用标记) |
|
||||
|
||||
流动性闸门(仅 A):买一深度、买一/标记偏差 ≤30%——实盘以能否成交为准,闸门主要用于避免垃圾价硬扫。
|
||||
|
||||
---
|
||||
|
||||
## 6. 监控与模式
|
||||
|
||||
| 状态 | 下方盘口 |
|
||||
|------|----------|
|
||||
| 有活跃仓 | 钉持仓行权价 |
|
||||
| 空仓 / 仅残留 | 跟新 ATM(≥5 点切换) |
|
||||
|
||||
设置页:交易所选 **OKX**,运行模式 **LIVE**,填 Key/Secret/Passphrase → 写入 `.env`。切 LIVE 须输入 `LIVE` 确认。
|
||||
|
||||
---
|
||||
|
||||
## 7. 风险(OKX 特有加重)
|
||||
|
||||
| 风险 | 说明 |
|
||||
|------|------|
|
||||
| **换汇遗漏** | USDT 充足但 USDC 不足 → 期权拒单 |
|
||||
| **模式不匹配** | 账户非 cash / 非双向持仓 → 下单参数报错 |
|
||||
| **期权深度** | USDC 期权盘口偶发更薄,远虚更易走 B |
|
||||
| **限流** | 独立 IP;退避重试 |
|
||||
|
||||
---
|
||||
|
||||
## 8. 上线检查(OKX)
|
||||
|
||||
1. SIM 在 OKX 行情下跑通开平。
|
||||
2. 账户 USDT + USDC 均到位;完成一次小额兑换演练。
|
||||
3. API 三件套 + LIVE 确认。
|
||||
4. k=0.1 试:开仓、目标平或到期、残留各至少一次。
|
||||
|
||||
---
|
||||
|
||||
## 9. 修订记录
|
||||
|
||||
| 日期 | 说明 |
|
||||
|------|------|
|
||||
| 2026-07-26 | 初稿:从通用实盘说明拆出 OKX;强调 USDT/USDC 与 cash/cross 开平仓 |
|
||||
|
||||
Reference in New Issue
Block a user