Harden strategy SoT: fail-closed funds gate, shared open pipeline, LIVE switch guards.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
# 审计说明 — 策略 SoT / 资金门 / 自动兑 USDC(2026-07-30)
|
||||
|
||||
## 基线假设
|
||||
|
||||
1. **不会**在交易所人工开仓/平仓。
|
||||
2. **运行中不会**使用本系统「手动全平 / 手动开一组」(策略跑着时手动开仓本就 409)。
|
||||
3. 以策略主线为唯一真相源:盯仓 →(等待预览兑 USDC)→ 选约 → 定仓落库 → 兑 USDC → 资金门 fail-closed → 开仓 → 锁定出场。
|
||||
|
||||
## 结论(三轮严格审计后)
|
||||
|
||||
本轮按审计清单落地后:**P0 资金门 fail-open、热切 LIVE 护栏、等待写定仓打架、force 砸单、手动/自动双管道、持仓改参、下载备份带密钥** 已关闭或显著收敛。
|
||||
残留:币安 LIVE 余额仍未接入(现 fail-closed 拒绝开仓,需接余额或改手动本金);SIM 资金重置仍默认进资金账户(需划转至交易账户才能开);机内 zip 仍可能含 `.env`(仅 HTTP 下载已剥离)。
|
||||
|
||||
---
|
||||
|
||||
## 第一轮审计(改完即审 · 对照清单)
|
||||
|
||||
| 原发现 | 处置 | 证据 |
|
||||
|--------|------|------|
|
||||
| P0 资金门 fail-open | **已修** | `funds_gate_blocks`:仅双方 `is True` 放行;`None`/异常拦截。`open_pipeline.size_and_gate` + `engine`/`sim` 共用 |
|
||||
| P0 热切 LIVE | **已修** | `put_runtime`:非默认 `AUTH_SECRET`;切 LIVE 强制 `running=0`/`paused` |
|
||||
| P1 等待每 tick 写定仓 | **已修** | `prepare_okx_trading_usdc` / `preview_capacity_for_convert` 只预览;落库仅在 `size_and_gate` |
|
||||
| P1 force 砸单 | **已修** | `force` 参数忽略,45s 冷却始终生效 |
|
||||
| P1 容量 ask ≠ 选约腿 | **已修** | `assess_open_capacity(option_ask=…)`;`size_and_gate` 传入 `pick` 卖一 |
|
||||
| P1 手动≠自动 | **已修** | `api/sim.py` 与引擎共用 `size_and_gate` |
|
||||
| P1 持仓改出场/名义 | **已修** | `put_strategy_settings` 持仓禁止改 exit/qty/leverage/risk_* |
|
||||
| P1 备份下载含 .env | **已修** | `materialize_download_zip` 剥离后下载 |
|
||||
| P2 划转不清缓存 | **已修** | `funds.transfer` LIVE 后 `invalidate_live_balance_cache` |
|
||||
| P2 SIM 弱占坑 | **已修** | `matcher.open_group` 拒绝全部 `BLOCKING_STATUSES` |
|
||||
|
||||
**第一轮残留:** 币安余额未接 → LIVE BN 将长期 `wait_funds`(刻意 fail-closed,非放行)。
|
||||
|
||||
---
|
||||
|
||||
## 第二轮审计(干扰/打架复查)
|
||||
|
||||
路径重读:`engine._tick_async` → `prepare_usdc_while_waiting` → pick → `size_and_gate` → LIVE `assert_safe` → `open_group`。
|
||||
|
||||
| 检查点 | 结果 |
|
||||
|--------|------|
|
||||
| 等待阶段是否写 `perp_qty_eth`/`net_profit_target` | 否(仅 preview assess) |
|
||||
| 选约失败是否仍兑 USDC | 是(预览名义),不挡「无合格期权」文案分支 |
|
||||
| 选约后资金门异常是否放行 | 否(`size_and_gate` 返回 ok=False) |
|
||||
| 手动开仓是否仍 `except: pass` | 否(409 + detail) |
|
||||
| 持仓 `exit_target` 与设置 | 设置被锁;盯盘用锁定目标(既有逻辑保留) |
|
||||
| 自动兑与定仓顺序 | 定仓落库 → 兑 → 门;等待只有兑不落库 |
|
||||
|
||||
**第二轮新发现(已记残留,未扩 scope):**
|
||||
|
||||
- SIM:`reset_from_equity` 仍进资金账户 → 交易账户空时正确 fail-closed,需手动划转(符合「只认交易账户」)。
|
||||
- `state()` 空仓仍 preview 覆盖展示字段名(展示层,不写库,不改出场执行)。
|
||||
|
||||
---
|
||||
|
||||
## 第三轮审计(实盘安全 + 回归)
|
||||
|
||||
| 检查 | 结果 |
|
||||
|------|------|
|
||||
| LIVE 开仓 claim/assert | 未改坏;仍在 `size_and_gate` 之后 |
|
||||
| 冷启动 AUTH_SECRET | 保留;热切现对齐 pause + secret |
|
||||
| 兑汇账户 | 交易账户;与手动 `/convert` 一致 |
|
||||
| 单测 | `test_funds_gate` / `test_auto_usdc` / `test_exit_lock` / `test_risk_sizing` 通过 |
|
||||
| 基线「无交易所人工开平」 | 文档化;代码不依赖该行为做对账放弃 |
|
||||
|
||||
**第三轮残留(接受或后续):**
|
||||
|
||||
1. 币安 LIVE 余额未接线 → 开仓被拒直至接入或强制手动本金策略。
|
||||
2. 机内自动备份 zip 默认可含 `.env`(磁盘权限模型);HTTP 下载已无密钥。
|
||||
3. LIVE 兑换/划转仍无二次口令(仅登录态)——运行中无人工操作为基线时风险降低。
|
||||
4. `localStorage` 长 token / XFF 登录限流等通用 Web 项未本轮改。
|
||||
|
||||
---
|
||||
|
||||
## 涉及文件
|
||||
|
||||
`strategy/open_pipeline.py`(新)· `open_capacity.py` · `auto_usdc.py` · `engine.py` · `api/sim.py` · `api/settings.py` · `api/funds.py` · `api/backup_routes.py` · `backup.py` · `sim/matcher.py` · `tests/test_funds_gate.py` · `tests/test_auto_usdc.py`
|
||||
|
||||
## 与上一份审计关系
|
||||
|
||||
承接 `审计说明-2026-07-29-开平仓与实盘安全.md`(开平仓 claim/recover)。本份专注 **策略 SoT 不打架 + 资金门/兑汇/热切 LIVE**。
|
||||
@@ -5,6 +5,23 @@
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-30 — 策略 SoT 加固:资金门 fail-closed / 统一开仓管道
|
||||
|
||||
### 变更
|
||||
|
||||
1. 资金门 fail-closed(`None`/异常拒绝开仓);选约后用选中腿 ask。
|
||||
2. 等待选约只预览兑 USDC、不落库定仓;落库仅在选约成功后。
|
||||
3. 自动/手动开仓共用 `open_pipeline.size_and_gate`;兑汇冷却不可 force 绕过。
|
||||
4. 持仓禁止改出场/名义/以损参数;热切 LIVE 强制 pause + 非默认 AUTH_SECRET。
|
||||
5. 划转刷新余额缓存;HTTP 备份下载剥离 `.env`。
|
||||
6. 基线:无交易所人工开平、运行中无人工手动平仓。
|
||||
|
||||
### 审计
|
||||
|
||||
见 `docs/审计说明-2026-07-30-策略SoT与资金门.md`(三轮)。
|
||||
|
||||
---
|
||||
|
||||
## 2026-07-30 — 自动兑 USDC:不等待选约,USDC 不够即兑
|
||||
|
||||
### 变更
|
||||
|
||||
Reference in New Issue
Block a user