01
一、什么是量化交易策略
量化交易策略,是采用数量化手段构建而成并进行决策的交易策略。是将人的投资思想规则化、变量化、模型化,形成一整套完整、可量化的操作思路,并且这个思路可以用历史数据进行分析验证。程序化交易并非量化策略必备,但是程序化交易可以让策略执行中更少受人的要素影响。
在这样的界定下,量化交易策略既可以借助程序化的方式完成下单,也可以通过人工来执行。但交易频率较高的量化交易策略更倾向于采用程序化全自动下单的方式来完成。
有了上面的定义,我们可以举个简单例子来认识量化交易策略。如果有一个投资者的交易策略是“移动平均线看起来很好时买入,看起来不好时卖出”,这里就明显不是一个量化交易策略,因为这里的“看起来很好”和“看起来不好”不是一个明确规则化变量化的手段。
如果把上面的策略变成“5日价格均线从下向上穿过10日价格均线时买开1手铜,5日价格均线从上向下穿过10日均线时卖平1手铜”,这里的规则就大大接近明确而可量化的了。
02
二、当我们谈量化交易策略时,我们在谈什么
在第一部分里,我们知道了什么是量化交易,那么一个更完整精细的量化交易策略,不止上面的例子那么简单。
一个完整的策略构成,应该是包括交易信号、交易执行、资金管理三个方面。
依然以上面的例子来类比——
2.1 交易信号
交易信号是一个策略的核心思想,人们常说的策略idea其实主要就是指这个部分。它又可以包含下面2部分内容:
2.1.1 交易什么?
“均线上穿策略”案例中没有涉及到选交易品种的步骤,所以品种很简单,就是铜期货。
但这还不够。我们的例子是一个期货策略,期货是必须具体到合约的,而我们最常使用的是每个品种的主力合约。
于是我们清楚了,我们需要交易的是“铜期货主力合约”。
ps:更复杂的情况是,有时我们需要选品种,比如要开仓所有向上突破的品种,这也可以归入本部分讨论的内容。
2.1.2 什么时候交易?
这方面上面的案例写的还不错——“5日价格均线从下向上穿过10日价格均线时买开”、“5日价格均线从上向下穿过10日均线时卖平”,这都是非常明确的。
复杂一些的是加入止盈止损,当有持仓的情况下,盈利多少自动平仓,亏损多少自动平仓,乃至回落多少自动平仓。
更复杂的情况还有——“中证商品指数突破10日均线时才操作”、“美国非农指数公布前的一个交易日不操作”等等,也可以属于这个部分要包含的内容。
ps:股票策略常用的因子模型,会采用固定日期再平衡的模式,期货/期权市场比较少用,因此我们会单开文章讲述这种情况。
2.2 交易执行
交易执行往往被人们忽略,但我们作为“真格量化”这个策略实盘平台的设计者,可以负责任的说,这个部分才是专业quant和民间小散的最大区分所在,我们看到很多非常好的策略idea因为对这个部分的忽视,导致最终不赚钱的结果。这部分又包括:
2.2.1 用什么价格交易?
对于期货/期权类策略,尤其是偏日内的策略,什么价格买,什么价格卖,是个至关重要的问题。
比如挂单价、最新价容易不成交,对手价、对手价加1加2提高了成交概率同时也提高了交易成本,涨跌停价/市价下单则是不惜血本,极端情况会导致成本完全无法控制,所以专业的玩家会充分运用FOK、FAK等指令进行下单。
“均线上穿策略”案例中的策略描述完全没涉及到具体价格的选择,所以是不精准的。
2.2.2 交易成本是多少?
越是频繁的交易,越要关注自己的交易成本。包括佣金、保证金以及回测中的滑点设置,上文的例子还不是日内策略,我们这里可以不用考虑。
2.2.3 下单不成交怎么办?
随着我们越来越深入专业量化机构的研究领域,我们会发现对实盘和回测差别的处理方法导致了专业机构和业余量化爱好者投资表现的显著区别。通常的回测引擎都是见价成交,如果在策略代码中忽略这个部分,您很可能做出一条漂亮的回测曲线但在实盘交易中完全无法赚钱。
那么,实盘中一个委托单发出后,接着会发生什么呢?我们看看最常见的对话通讯模式:
真格量化的回测引擎并非见价成交的设计,而且我们API的最大特点就是基于事件驱动而设计。实际交易中会有非常多的事件场景,例如账户登录、开盘、委托、成交、查询、收盘等。交易所会发出各种通知和回报信息。
充分利用这些回报信息,可以写出最专业的投资策略。比如上文所述的委托不成交的问题,我们提供了丰富的api来应对,包括拆单、撤单、追单、智能单等等,我们强烈建议投资者重视这些功能,把交易过程精细化,追上机构的脚步。
在上文“均线上穿策略”的简单例子中,很遗憾,我们并没有看到下单不成交的应对方案,这在实盘中就会遇到很多问题。
2.3 资金管理
资金管理听起来高大上,但其实落地最重要的就是仓位。如果说交易信号、交易过程两部分决定了策略是赚钱还是亏钱,那么资金管理决定了最终是大赚大亏,还是小赚小亏。
2.3.1 下单数量
回到“均线上穿”的例子,我们终于看到了这部分的描述——“1手”,手数这个交易单位在期货/期权类比较常用,但固定手数的做法并不精细,更精细的模式是根据自己的账户的实际资金情况,动态变动交易的数量。
我们发现,在这里我们出现了“账户”的概念,构建策略尤其是实盘策略,账户中的可用资金、风险度、权益等各种信息是必须要关心的要素。策略实盘运行瞬息万变,我们需要最快速度得到这些信息并根据当下的情况作出最恰当的应对。在真格量化,我们云端实时计算这些信息,相比从柜台请求的速度快3000倍以上。
2.3.2 动态加减仓
期货市场采用的是逐日盯市的模式,即每天的盈亏都是清算完毕的,那么当策略运行良好,可以投入更多的资金,反之则需要减少投入的资金。
跟上面下单数量的区别是,动态调整交易手数往往是根据当时的可用资金的情况,而动态加减仓则是根据整个策略/账户的盈亏情况来设定。
OK,做好了这3个部分,我们也就建立了做量化策略的最基础的思路,再复杂的策略,都可以由这3部分组合、变化得来。
03
三、当我们有了策略,我们还需要什么
如第二部分,当我们已经有了自己的策略,交易信号、交易执行、资金管理三个部分都有了。
接下来需要做什么呢?当然是做回测。
正如我们第一部分提到的量化策略的定义,一个量化交易策略到底好不好,需要通过历史数据来验证。
去评估策略,我们需要关注这些因素:
3.1 样本大小
既然量化策略是可以用历史数据进行分析验证的,那么数据的样本集合有多大直接决定了这个回测是不是靠谱的,一般来说,样本小于200个,说服力是不够的。所以千万不要因为看到前几次交易赚到了钱就欢呼雀跃哦~
3.2 回测时间范围
一个好的策略,应该能经受住各种市场状况的考验,如果回测周期太短,没有经过单边、振荡等各种场景的检验,也是比较危险的。当然,如果是用tick数据回测,回测历史的要求就没必要很久。
3.3 回测和实盘的区别
一个实盘赚钱的策略往往回测也不错,但反之就未必成立了。回测中用的虚拟资金是无法像真实资金一样去影响市场的。一定要注意的是,下面这些问题都可能导致您的回测表现是“镜花水月”,空欢喜一场。比如:
A.用了未来数据。这是新手最常犯的错误。写一个“当天最低点买入最高点卖出”的期货策略,只需要几分钟就可以得到一条无比漂亮的曲线,但这是没有用的,实盘中绝对无法预知当天的价格最高、最低点。真格量化作为主打实盘交易的量化平台可不推荐你这样做。
B.实盘无法/很难成交。这个问题也经常发生。比如涨跌停的时候交易、用完全没有对手盘的巨量下单、挂买一卖一价交易等等。这样的代码逻辑用于实盘的时候就会差别巨大。当然,真格量化的逻辑已经做到非常精细,并不是简单的见价成交,帮投资者去掉了很多掉坑里的可能。
C.过度拟合。有的时候,专业的quant也会犯这个错误,甚至如何避免过度拟合是量化分析师们一直追求的目标。过度拟合往往表现在单纯追求最佳回测参数和完全抛弃金融逻辑方面。殊不知,参数的敏感性本来就是一个策略是否真正靠谱的重要衡量标准;而完全抛弃金融逻辑的后果,可能就是实盘交易的第一天,就是该策略失效,这个小概率、黑天鹅事件发生的日子。
好了,我们知道了在写一个量化策略之前,要做哪些思路上的整理,那么接下来的一篇,我们就看看如何在真格平台上做到这一切,敬请期待!
— — — — — — E N D — — — — — —
往期文章:
Numpy处理tick级别数据技巧
真正赚钱的期权策略曲线是这样的
多品种历史波动率计算
如何实现全市场自动盯盘
AI是怎样看懂研报的
真格量化策略debug秘籍
真格量化对接实盘交易
常见高频交易策略简介
撤单函数改进套利成交
真格量化可访问:
https://51zhenge.com
真格量化微信公众号,长按关注:
遇到了技术问题?欢迎加入真格量化Python技术交流QQ群 726895887