Skip to main content

[策略执行算法] Exe_11_Option4LegsOpen

Input

  • 由策略提供的四腿期权(两腿远月,两腿近月)的合约代码,以及对应的多空方向。其中设 L1L_1, L2L_2 为近月合约,L3L_3 , L4L_4 为远月合约。
  • 单笔订单FOK下单次数限制 Nf\textcolor{red}{N_f} , 默认值是10.
  • 补单FOK下单次数限制 No\textcolor{red}{N_o} , 默认值是15.
  • 最大容忍宽度 Dmax\textcolor{red}{D_{max}} , 默认值是0.005.
  • 执行时间限制 Tlegs\textcolor{red}{T_{legs}} , 默认值是8秒。
  • 重新开仓冷静期 Tco\textcolor{red}{T_{co}} , 默认值是60分钟。
  • 根据SVI模型拟合出的四腿期权的模型价格 P1P_1 , P2P_2 , P3P_3 , P4P_4.

Execution

本函数优先成交多腿组合,需保证组合中每一腿均成交后,再尝试开下一个多腿组合。

本函数采用远月优先的执行方式,在远月执行完毕后再执行近月,需要视订单执行情况进行回滚或补单。具体执行流程如下图所示:

Far Legs Execution

以远月合约 L3L_3 为例,当算法收到行情切片数据更新时,若 L3L_3 的理论价格 P3P_3L3L_3开仓方向对手方限一价的差距(绝对值)小于等于 Dmax\textcolor{red}{D_{max}} , 则按照限一价FOK下单直至成交;若下单次数超过 Nf\textcolor{red}{N_f} , 则停止下单直到 L3L_3 有切片数据更新。

L3L_3 , L4L_4 的切片同时有数据更新,则可同时或者依次按以上逻辑处理;若只有一腿数据有更新,则只处理该腿。

在总执行时间超过限制 Tlegs\textcolor{red}{T_{legs}} 时,撤掉所有报单,然后返回执行结果:

  • 如果两腿执行成功,则返回 SuccessSuccess .
  • 如果两腿都未执行成功,则返回 FailedFailed .
  • 如果只有一腿执行成功,则返回 OddOdd .

Near Legs Execution

逻辑与 Far Legs Execution 相同。

Odd Handling

若Far / Near Legs Execution 返回 OddOdd , 则进入此逻辑进行补单或回滚。

不妨令执行成功的腿为 LsL_s ,失败的腿为 LfL_f.

  1. 计算 LsL_s 的理论价格 PsP_s 与其平仓方向对手方限一价的差距绝对值 DsD_s,以及 LfL_f 的理论价格 PfP_f 与其开仓方向对手方限二价的差距绝对值 DfD_f

  2. 补单:在 No\textcolor{red}{N_o} 个tick内,判断 DfDmax2D_f \leq \textcolor{red}{D_{max}} * 2 是否成立,如是则对 LfL_f 进行限二价 FOK 下单开仓直至成交,退出逻辑;未成交则进入步骤 3。

  3. 回滚:在 No\textcolor{red}{N_o} 个tick内,判断 DsDmaxD_s \leq \textcolor{red}{D_{max}} 是否成立 ,如是则对 LsL_s 进行限一价 FOK 下单平仓直至成交 ,直接进入步骤5;未成交则进入步骤 4。

  4. 强制回滚:对 LsL_s 进行限一价 FOK 下单平仓直至成交,进入步骤 5。

  5. 若该逻辑由 Far Legs Execution 进入,则此时为空仓状态,将该参数组暂停交易,直至 Tco\textcolor{red}{T_{co}} 后重新开启; 若由 Near Legs Execution 进入,则此时为远月跨式状态,需将 L3L_3, L4L_4 按平仓方向限一价平仓,并将该参数组暂停交易,直至 Tco\textcolor{red}{T_{co}} 后重新开启。

Apply Portfolio Margin

在组合四腿均成交后,将空头的两腿申请组保,待收到组保成功的回报后,退出逻辑。