本文是交易系统系列的第六篇,主要记录近期在期权策略和系统功能上的优化。我把一部分组合功能做了整合, 重点是我常用的牛市价差;另外,也把出错订单单独记录下来,方便后续复盘和优化。

组合订单的实现

如前文《期权策略-变种比例价差》所述,我目前主要做科创50ETF期权的价差策略。单一标的的好处是,页面和流程都能做得更聚焦、更高效。 在上一篇《半自动化交易系统(五)》里,我提到过按月份做持仓管理。每个月的仓位,基本都由单腿期权和比例价差这类组合构成。

1767180027632.png

我发现自己高频会用到价差组合的构建和释放。比如创建一个价差时,每次都要做这三步:

  1. 买入低行权价看涨期权
  2. 卖出高行权价看涨期权
  3. 构建价差组合

实现细节

这个过程完全可以自动化,而且能尽量规避短时价格波动。流动性足够好的时候,滑点也能控制在可接受范围内。 所以我把这三个步骤整合成了一个独立服务,做成了一个非常简单的组合订单,结构大概如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
[
{
"method_name": "buy_open_with_executor",
"params": {
"code": "10011349.SHO",
"count": 6,
"price": 0.0,
"wait": true,
"timeout": 30.0
},
"status": "completed",
"description": "买入权利仓: 10011349.SHO x 6",
},
{
"method_name": "sell_open_with_executor",
"params": {
"code": "10011350.SHO",
"count": 6,
"price": 0.0,
"wait": true,
"timeout": 30.0
},
"status": "completed",
"description": "卖出义务仓: 10011350.SHO x 6",
},
{
"method_name": "make_option_combination",
"params": {
"combination_type": 50,
"contracts": {
"10011349.SHO": 48,
"10011350.SHO": 49
},
"quantity": 6,
"strategy_name": "认购牛市价差 1.4-1.45"
},
"status": "completed",
"description": "创建组合: 认购牛市价差 1.4-1.45",
}
]

这类指令会被放进消息队列,由单独服务消费,再直接和交易系统交互。 我这里为了尽快成交,直接挂对手方一档。科创50ETF期权流动性本身也不错,通常几秒内就能完成交易, 实际滑点非常小,执行效率和质量都比较高。

注意:这里用的是对手方一档,也就是优先保证立刻成交的价格。如果合约流动性不好,这样做风险会很高,利润空间也会被明显压缩。

组合订单的管理

现在 AI 写代码确实很好用。需求说清楚后,页面雏形很快就能出来;我自己再把前后端对接和细节收一收, 基本就可以快速上线。下面是组合订单管理页面的截图:

1774533798939.png

我还加了出错订单的“分步骤重试”能力。卡在哪一步都没关系,人肉检查一下,确认没问题就从下一步继续执行。 后面如果再接 AI 做检查,会更省事。甚至当开仓单子很多时,也能靠这种组合订单形式批量处理, operator 在开平仓上的手工工作量会小很多。

价差移仓

做完这套组合订单后,我开始更系统地思考一个问题:不同月份之间平移牛市价差,成本到底有多高, 以及是否值得移仓。比如我持有的是由虚值看涨构成的牛市价差,如果当月机会已经不大, 那把整个组合顺延一个月,盈利概率会不会更好?

因此我也做了一个图表,持续记录我关注的价差在不同月份的价格,用来评估“为了维持盈利机会,我需要支付多少移仓成本”。

1774534300695.png

只要合约时间价值没有被完全吃掉,移仓成本通常都比较低,大多数情况下在 100 元以内。 也就是说,花不超过 100 元,通常就能把一个临近到期的价差组合平移到后一个月,或者换到更低行权价, 从而明显提升盈利概率。如果再叠加后续可卖出的单腿期权,这项成本并不高,但对胜率和收益改善很明显。

订单记录

股票交易的订单记录相对简单,因为频率低。但期权不一样,一天几十单并不夸张。 所以我想把订单“日历化”,方便后续分析交易习惯和月度盈亏。 于是我也做了一个订单记录页面,直接落每一笔订单的细节。

1774534653930.png

其中绿色块表示交易日。点进某一天,就能看到当天全部订单及状态,这样交易习惯会非常直观。

总结与展望

我一直把期权看成一种“给市场打工”的工具。只要愿意做风险可控的套利, 就有机会在这个市场里持续、稳定地赚钱。 这和股票不太一样,股票很多时候要同时承受系统性风险和个股风险。

这篇文章里介绍的组合订单功能,本质上就是为了更高效地执行价差策略和移仓操作, 让我能更稳定地“在市场里打工赚钱”。 你也能看到,我的大多数期权操作并不依赖方向预测。市场按预期走会赚得更多; 不按预期走,也不至于失控,我依然保留下一月份继续操作的权利。

另外,我做这些事情的目标也很明确:把操作流程标准化,最后交给其他人或 AI 去执行。