Skip to main content

[策略执行算法] Exe_11_Option4LegsOpen

Input

  • 由策略提供的四腿期权(两腿远月,两腿近月)的合约代码,以及对应的多空方向。其中设 L1L_1, L2L_2 为近月合约,L3L_3 , L4L_4 为远月合约。
  • 单笔订单FOK下单次数限制 Nf\textcolor{red}{N_f} , 默认值是8.
  • 补单FOK下单次数限制 No\textcolor{red}{N_o} , 默认值是15.
  • 下单间隔时间 Interval\textcolor{red}{Interval} , 以秒为单位,默认值是0.5.
  • 最大容忍宽度 Dmax\textcolor{red}{D_{max}} , 对于ETF期权而言,默认值是0.001.
  • 执行时间限制 Tlegs\textcolor{red}{T_{legs}} , 以秒为单位,默认值是5.
  • 四腿期权的中间价(即买一价卖一价的平均值) P1P_1 , P2P_2 , P3P_3 , P4P_4

Execution

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

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

Back Legs Execution

以远月合约 L3L_3 为例,当算法收到执行信号时,若 L3L_3 的中间价 P3P_3L3L_3开仓方向对手方限二价的差距(绝对值)小于等于 Dmax\textcolor{red}{D_{max}} , 则按照限二价,每隔 Interval\textcolor{red}{Interval} FOK下单直至成交;若下单次数超过 Nf\textcolor{red}{N_f} , 则停止下单。L4L_4 同理。

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

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

Front Legs Execution

逻辑与 Back Legs Execution 相同。

Odd Handling

若Back / Front 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} 次内,判断 DfDmax2D_f \leq \textcolor{red}{D_{max}} * 2 是否成立,如是则对 LfL_f 进行限二价 每隔 Interval\textcolor{red}{Interval} FOK 下单开仓直至成交,返回 SuccessSuccess 退出逻辑;未成交则进入步骤 3。

  3. 回滚:在 No\textcolor{red}{N_o} 次内,判断 DsDmaxD_s \leq \textcolor{red}{D_{max}} 是否成立 ,如是则对 LsL_s 进行限一价 每隔 Interval\textcolor{red}{Interval} FOK 下单平仓直至成交,返回 FailedFailed 退出逻辑。

Roll Back

若该逻辑由 Back Legs Execution 或其之后的 Back Odd Handling 进入,则此时为空仓状态,整个执行算法返回 ExecutionFailedExecutionFailed . 若由 Front Legs Execution 或其之后的 Front Odd Handling 进入,则此时为远月跨式状态,需将 L3L_3, L4L_4 按平仓方向限五价平仓,整个执行算法返回 ExecutionFailedExecutionFailed .

Apply Portfolio Margin

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