Files
eth_hedge_sim/docs/审计说明-2026-07-30-策略SoT与资金门.md
T

4.6 KiB
Raw Blame History

审计说明 — 策略 SoT / 资金门 / 自动兑 USDC2026-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_asyncprepare_usdc_while_waiting → pick → size_and_gate → LIVE assert_safeopen_group

检查点 结果
等待阶段是否写 perp_qty_eth/net_profit_target 否(仅 preview assess
选约失败是否仍兑 USDC 是(预览名义),不挡「无合格期权」文案分支
选约后资金门异常是否放行 否(size_and_gate 返回 ok=False
手动开仓是否仍 except: pass 否(409 + detail
持仓 exit_target 与设置 设置被锁;盯盘用锁定目标(既有逻辑保留)
自动兑与定仓顺序 定仓落库 → 兑 → 门;等待只有兑不落库

第二轮新发现(已记残留,未扩 scope):

  • SIMreset_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