Scarab 诊断现场测试 #032:期权目标定价边界
QuantConnect Lean 在期权目标规模计算(option target sizing)中存在一个严重的 Bug。
如果你请求为某个期权头寸设置 10% 的目标权重,引擎交付的头寸可能会超过你的要求。
这是因为系统使用了错误的价格来计算数量。它使用的是中间价(mid price)或最新价(last price),而不是你购买期权时必须支付的实际价格。
当买卖价差(bid/ask spread)较大时,这种误差会进一步放大。
引擎此前一直使用 security.Price 进行保证金计算。对于多头期权(long option),你必须按卖价(ask)买入。如果引擎基于较低的中间价来计算规模,一旦订单成交,你的最终头寸将超过目标权重。
我们确定了精确的修复边界。
我们没有重写整个投资组合构建引擎。 我们没有更改每种证券类型的运作方式。 我们没有更改执行层。
相反,我们修复了期权特定的保证金定价路径。
修复遵循以下规则:
- 对于多头期权目标:在可用时使用卖价(ask price)。
- 对于空头期权目标:在可用时使用买价(bid price)。
- 如果没有报价:回退到现有的最新价/标记价(last/mark price)。
这使得修复保持在局部且安全。在存在更优数据时使用它,而在数据不存在时保留原有行为。
验证结果:
- 发布版本构建通过。
- 针对期权保证金的专项测试:41/41 通过。
- 为多头侧卖价定价和空头侧买价定价增加了回归测试覆盖。
此次修复通过使用可执行价格进行规模计算,确保引擎遵循您的风险合约。
可选学习社区:https://t.me/GyaanSetuAi