3f6e67661b
Server validate on preview/start, UI filters and recommend templates, plus usability/security audit doc. Co-authored-by: Cursor <cursoragent@cursor.com>
75 lines
3.4 KiB
Markdown
75 lines
3.4 KiB
Markdown
# 对冲计划 · 选约与虚实值
|
|
|
|
> 实现日:2026-08-05 · 吸收 `eth_hedge_sim`(比特骆驼)选约几何;退出仍用本仓 TP/SL/S*,**不**移植仿真「净盈亏 15U 离场」。
|
|
|
|
## 1. 冻结规则
|
|
|
|
| 计划类型 | 允许虚实值 | 禁止 | 推荐模板 |
|
|
|----------|------------|------|----------|
|
|
| **永期** `perp_options` | 实值、平值 | **虚值** | 距指数最近的实值/平值(同方向 Put/Call) |
|
|
| **期期** `options_options` | 平值、虚值 | **实值** | 平值跨式(ATM C+P);双虚值(OTM C+P) |
|
|
|
|
口径与 `lib/options/options_pricing_lib.option_moneyness` 一致:ATM 带 = `max(指数×0.2%, 2U)`。
|
|
|
|
永期几何兜底(与仿真一致):
|
|
|
|
- Call 实值/平值:`K ≤ S`
|
|
- Put 实值/平值:`K ≥ S`
|
|
|
|
## 2. 代码落点
|
|
|
|
| 层 | 文件 | 作用 |
|
|
|----|------|------|
|
|
| 选约/校验库 | `lib/hedge_plan/hedge_plan_moneyness_lib.py` | `is_itm_or_atm` / `is_atm_or_otm` / `pick_*` / `recommend_oo_legs` / `validate_*` |
|
|
| 启动门禁 | `hedge_plan_orders_lib.validate_start_body` | 测算外再拦一遍;防绕过 UI 直 POST |
|
|
| 测算 | `hedge_plan_register._preview_po/_preview_oo` | 预览同样拒绝违规腿 |
|
|
| UI | `hedge_plan.js` + `hedge_plan_panel.html` | 筛选锁定、推荐按钮、选用前校验 |
|
|
| Env | `env_ui_manifest` 永期分组 | `HEDGE_PLAN_ITM_MAX_DIST_USD` / `MIN_OPTION_HOURS` / `MIN_OPTION_LEVERAGE` |
|
|
|
|
## 3. Env
|
|
|
|
| 键 | 默认 | 说明 |
|
|
|----|------|------|
|
|
| `HEDGE_PLAN_ITM_MAX_DIST_USD` | 空→沿用 `OKX_OPTIONS_ITM_MAX_DIST_USD`(常 30) | 永期过深实值上限;0=不限 |
|
|
| `HEDGE_PLAN_MIN_OPTION_HOURS` | 8 | 仅当请求带 `hours_to_expiry` 时生效 |
|
|
| `HEDGE_PLAN_MIN_OPTION_LEVERAGE` | 0 | `指数/卖一`;0=关闭 |
|
|
|
|
## 4. 可用性审计
|
|
|
|
| 项 | 结论 |
|
|
|----|------|
|
|
| 默认筛选 | 永期默认「实值/平值」;期期默认「平/虚」—减少误选 |
|
|
| 推荐一键 | 永期「推荐」;期期「推荐跨式 / 推荐双虚」—降低手选成本 |
|
|
| 文案 | 规则说明与 alert 明确禁虚(永期)/禁实(期期) |
|
|
| 服务端一致 | UI 过滤可绕过时,preview/start 仍会 400 |
|
|
| 兼容旧 API | 未传 `strike` 时从 `inst_id` 解析;未传 `index_px` 时永期用 `entry`、期期用上下破中点 |
|
|
| 未移植 | 仿真净盈亏 15U 离场、固定方向自动轮换到期 — 故意不接,避免与本仓 TP/SL 冲突 |
|
|
|
|
**已知局限:**
|
|
|
|
- 链上 `moneyness` 依赖刷新时指数;剧烈跳动后需「刷新链」再选。
|
|
- `MIN_OPTION_HOURS` 需前端/调用方传入 `hours_to_expiry` 才校验(当前链行未必带该字段)。
|
|
- 期期「推荐跨式」优先 ATM,若无 ATM 会回退到最近允许档(含 OTM)。
|
|
|
|
## 5. 安全性审计
|
|
|
|
| 风险 | 控制 |
|
|
|------|------|
|
|
| 客户端改包选虚值永期保险 | `validate_start_body` + preview 服务端拒绝 |
|
|
| 客户端选实值期期腿 | 同上 |
|
|
| 过深实值权利金过贵 / 杠杆过低 | `ITM_MAX_DIST` + 可选 `MIN_OPTION_LEVERAGE` |
|
|
| 误开实盘 | 既有 `HEDGE_PLAN_LIVE_ORDER` ∩ `LIVE_TRADING_ENABLED` ∩ 全仓(永期)门禁不变 |
|
|
| 本改动是否改平仓路径 | **否**;不触碰现有持仓、不改 TP/SL 监控逻辑 |
|
|
|
|
## 6. 测试
|
|
|
|
```bash
|
|
python -m unittest tests.test_hedge_plan_moneyness tests.test_hedge_plan_orders -v
|
|
```
|
|
|
|
覆盖:虚实值几何、永期拒 OTM、期期拒 ITM、`validate_start_body` 集成。
|
|
|
|
## 7. 与开发方案对齐
|
|
|
|
更新 `docs/对冲计划开发方案.md` §3.2 / §4.1 选约约束,与本文件一致。
|