打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
程序化交易之三:由回测到实盘

前言

在之前两篇介绍文章中,笔者比较粗略的介绍了策略的开发以及策略的回测,在本篇中,笔者试图根据自己浅薄 的实盘开发经验,简单讲讲实盘策略开发需要注意的点已经可能遇到的坑,希望读者能够有所收获。

实际我们进行程序化交易,目的并不是去看它回测效果如何,毕竟理论再美,没有实验的佐助,那就是民科。而 我们开发策略的时候,尤其需要当心一个回测貌似很美的策略。记得以前碰到过一个大牛介绍经验,他当时提出 了一个观点,我还是挺认同的:市场是一个有序生态,不可能出现一个策略,每年翻几倍,可以一直这样搞下去 的,因为如果这样的话,市场的钱都被你赚了,市场上哪里还会有参与者。因此,对于一个回测很美的曲线,一 定需要仔细去查看是否出现了 Bug, 未来信息,偷价,复权处理,甚至于回测平台的行情错误等等,都需要仔 细考虑。

仿真

当我们把回测中一切能够考虑的问题都考虑清楚后,但还是会觉得对自己策略不太放心,直接上实盘未免试错成 本会比较大,因此,一个比较好的做法是,先将策略放到仿真环境中运行一段时间,对策略的牢靠程度,以及未来实盘可能出现的问题提前进行盘查。

所谓仿真,比较简单的解释就是通过量化平台创建一个虚拟交易账户,根据实时行情,利用虚拟账户中的余额去进行交易,当然这个交易实际并没有成交,而是根据实际行情,对这个交易的成本,盈亏等进行记录,以方便最后去进行分析。

在仿真的时候,相比回测,笔者总结了以下几个点,希望大家在开发自己策略的时候,避免去走这些弯路。

Bar行情与 Tick 行情

在回测的时候,为了平衡回测效率,我们往往采用的是 Bar 行情,以方便查看我们策略的效果。笔者认为,回测 而言,一个比较适宜的做法,可以先用日线 Bar 行情进行回测,效果可以的话,直接换到分钟级别的 Bar 行情去进行回测,为了去模拟实盘中可能遇到的市场冲击等问题,在分钟级别的 Bar 上,可以设置成交的量为该 分钟 Bar 的譬如 25%

但是,这样的回测如果要切换到仿真或者实盘的时候,如果是掘金量化这样的量化平台时,会出现大问题。 因为这些量化平台的 Bar 行情需要等到对应 Bar 结束后才会有该根 Bar 的数据,因此,如果实盘中我们 要用到这根 Bar 里面的数据的时候,就会出现滞后。举个例子,某支股票 A, 我们利用它的分钟行情进行回测, 效果还不错,假设我们用的是通道突破策略,当股票 A 的实时价格突破 10.00 的时候,回测的时候,我们立 刻以突破点的价格进行买入,在回测时候,这不会出现什么大问题。但是,在实盘的时候,假如说在 9:50:03 出现了突破价位 10.00,此时,我们希望能够立刻去以突破点的价格进行买入操作,但是,因为我们用的是分钟 Bar 的行情,此时,我们的策略还没有接收到这个时间点的 Bar 行情,而是会在 9:51:00 的时候,我们 才会得到相应的 Bar 行情,这个滞后出现,我们很可能就不能用理想的价位去进行成交了。

因此,如果要将策略放到仿真或者实盘去运行的时候,我们需要做的将策略进行改写,以分笔行情去进行判断和成 交。分钟 Bar 行情可以用以辅助判断更高周期级别下的行情走势。

当时,当真的去订阅 Tick 行情进行交易的时候,又有需要注意的点,首先,Tick行情的涨跌停的处理,如果 策略想避开涨跌停,那么就需要判断 Tick 是否触发涨跌停价,一个简单判断的方法,根据最新分笔行情有没有 出现只有买一,或者只有卖一价;此外,某些股票可能在过去的 Tick 没有成交,那么它的 Tick 行情就是空 的,还有可能因为网络或者量化软件的问题,我们接收到的 Tick 行情价格错误,那么,我们也需要在策略中 考虑类似的情况,并加以过滤。下图是笔者用掘金量化开发实盘策略的时候,过滤一些极端行情的代码,读者可以 根据自己的需求,加以删改。

 
 

关于行情订阅

如果可能,我们当然希望能够对全市场股票进行监控,如果盘中发现某支股票要涨停了,立刻追进去,那岂不 是美滋滋。当然,理想和现实是有差距的,通过软件来监控全市场行情,理论上当然是可以实现,但是,会面对很多问题。

首先,假设我们今天监控的可交易的全市场股票有 3000 支,那么,一个比较极端的情况,3 秒一个 Tick, 3000 支股票同时有 Tick 行情接收过来,针对每支股票,我们程序的反应时间是 3.33E-4 秒,这就需 对策略的计算实时性有着比较高的要求,如果你的策略比较复杂,很可能这边计算还没结束,那边下一个 Tick 行情又推送过来了。

然后,同时订阅三千多支股票的话,我们的带宽是否足够,不提我们的带宽是否足够,来自数据供应商的带宽是不是足够,都需要打一个问好,毕竟数据供应商可以面向成千上万用户的数据请求。

通过咨询这些量化平台软件公司,我获知的结果是,免费用户一般 50 支以内免费分笔行情订阅,券商用户一般 100支股票的分笔行情订阅。当然,实际情况如何,最好还是用户亲自去仿真试一下,作为免费用户,曾经试过 同时订阅 100 多支股票行情,结果有行情错漏。

另外,这里笔者提供一个小技巧。因为策略一般不会在日内多次开仓,当策略发出了买入信号的时候,我们可以将 该股票的 Tick 行情取消订阅,国内股票 T+1 今日买入的并不能卖出,再订阅该股票的分时行情,可能也 不是很必要了。

关于委托价格与委托数量

由于国内股票成交价位最小单位是 0.01, 每次下单最小委托都是 1 (100 ),当我们去下单的时候, 需要注意委托的价格为单位,下面是笔者写的一个示例代码

  

  
 

其中,long_price 计算的是委托单价格, long_vol对应的是委托数量

实盘

实盘与仿真基本类似,如果仿真的问题都排除了,那实盘中的问题也不会太大了。但是,还是有一些小问题需要 特别注意。

1.         在分笔行情中,避免去利用 position 判断来进行交易过滤。譬如,在盘中某个时刻,策略触发,发出了委托单,此时,我们希望策略只发出一笔委托单,但有时候,我们会遇到策略连续发单,可能的一个原因是我们对于仓位的时候查询,可能有延迟,导致策略认为发单不成功,于是进行连续发单。一个可行的方式, 我们在本地进行判断,譬如,程序如果发单了,我们相应的设置一个 flag, 当且仅当对应该标的的 flag False 的时候,我们的策略才会进行发单。

2.         股票交易时段,往往是在开盘的一段时间和收盘前的一段时间,因此,可以根据 Tick 的时间戳进行过滤。

3.         委托发单的价格,如果以市价去发单,可能因为行情波动剧烈,导致不能成交,可行的做法是发限价单,为 保证成交,将限价单的发单价格设置比市价稍高一些。

4.         股票行情因为牛熊周期可能在某些时间段对于该策略才有效果,因此,策略的有效性除了在回测时候去在多个 不同时间段进行回测,仿真的时间段需要长一些,真的上实盘的时候,先小资金测试,仓位的控制非常重要, 如果仓位过重,行情产生变化的时候,策略的损失也会相应的放大。

写在最后

交易的核心是策略,但是策略能够有效的核心,往往体现在一些细节处。有很多策略核心逻辑甚至是一样的,但是因为 细节处理的差异,会导致收益结果的非常大差别,当真的去实盘的时候,涉及到真金白银,再多仔细都不为过。很多 貌似回测很牛逼的策略,不要被其牛逼的回测效果所吓着,先仿真瞧瞧,如果仿真也行的话,那不妨小资金的去跑一跑。

交易的路,远比想象中的更复杂,如何去不断提高自己的水平,关闭造车肯定是不行,夸夸其谈更是不可行,多学多看 还要多实践,才是一个更好的进阶之路。

送大家一句话,共勉之,纸上得来终觉浅,绝知此事要躬行。希望大家在交易的路上,走的足够远。


关联阅读:

1. 从量化角度告诉你常见的技术指标到底能不能赚钱?

2. 从回测到实盘之二:如何让回测更贴近实盘结果

3. 程序化交易之三:由回测到实盘,需要做些什么工作?

 

来源:掘金量化社区https://www.myquant.cn/community/topic/668

作者:胡琛 (南京师范大学理论物理博士)

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python进阶量化交易:扒一扒量化回测常见陷阱
2014年2月10日民心所向普涨环境形成大级别高点的交易策略138
用Tick级别来分析高收益策略是如何“被”作弊的 !
不吹不黑 | 聊聊为什么要用99%精度的数据回测
RiceQuant开源框架RQAlpha阅读笔记 | Geosmart's Notes
(1829)言程序:风控第一,加仓还不如加策略
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服