背景
perp 永续开仓的保证金购买力守门目前是单笔校验:本笔初始保证金 IM = notional/leverage 加手续费不超过该计价货币钱包余额。不考虑账户上已占用的保证金、也不做跨多个持仓的聚合。
现状(三端一致 v1 简化)
- HTTP 下单:
services/paper/src/inalpha_paper/api/orders.py(perp 保证金 gate)
- live runner:
services/paper/src/inalpha_paper/live_runner.py(同口径)
- 回测:
services/paper/src/inalpha_paper/engine/portfolio.py can_afford_buy / can_afford_sell(prospective 目标仓 IM+fee ≤ 钱包)
三处都已注释标 Phase 2。
问题
多个 perp 持仓时,逐笔都通过"单笔 IM ≤ 钱包"校验,但累计占用保证金可能超过钱包余额 → 超额开仓,框架层无兜底。单仓场景无影响。
期望
引入账户级 free margin = 钱包余额 − Σ 已占用 IM,开仓校验改用 free margin。回测 / HTTP / live 三端保持同口径。
影响范围
- 仅多 perp 持仓时触发;单仓 / spot 无影响。
- 模拟盘(无真实资金),非安全风险,但影响账务保真度与"回测==实盘"主张的完整性。
相关 PR:#113(perp v1)
背景
perp 永续开仓的保证金购买力守门目前是单笔校验:本笔初始保证金
IM = notional/leverage加手续费不超过该计价货币钱包余额。不考虑账户上已占用的保证金、也不做跨多个持仓的聚合。现状(三端一致 v1 简化)
services/paper/src/inalpha_paper/api/orders.py(perp 保证金 gate)services/paper/src/inalpha_paper/live_runner.py(同口径)services/paper/src/inalpha_paper/engine/portfolio.pycan_afford_buy/can_afford_sell(prospective 目标仓 IM+fee ≤ 钱包)三处都已注释标 Phase 2。
问题
多个 perp 持仓时,逐笔都通过"单笔 IM ≤ 钱包"校验,但累计占用保证金可能超过钱包余额 → 超额开仓,框架层无兜底。单仓场景无影响。
期望
引入账户级 free margin = 钱包余额 − Σ 已占用 IM,开仓校验改用 free margin。回测 / HTTP / live 三端保持同口径。
影响范围
相关 PR:#113(perp v1)