一套高频交易系统的开发需要连接好几个学科领域的知识,包括量化金融、系统设计和软件工程等。在量化金融领域,人们对如何建立数学交易模型已经做过广泛的研究。同样地,如何设计系统将这些模型实施出来也非常重要。在当今的交易圈内,不断地去发现、建立并运行更好的交易系统才是保持竞争优势的决定性因素。因此,将投资理念转化为数学模型并进一步变成一套行之有效,兼顾运行速度与质量的交易系统对市场参与者来说无比关键。
高频交易系统的开发大致可以分为三个阶段:研究阶段、模型阶段和实现阶段。每一个阶段都有自己的内部过程和子系统。当然,整个系统的开发并不一定需要完全遵照这个流水线过程,一旦在某个阶段有问题出现的时候,可以回溯到前一个。虽然在每一个系统设计项目中,使用什么方法选择什么工具需要根据具体问题、工程师的水平、研发的时间限制和预算限制来定。然而,我们选择的设计方法至少应该提供一个框架和一系列原则用来兼容金融工程师和程序员的能力。一个缺乏设计原则的系统往往会失败。
原则
由扎实的研究所产生的投资想法是建立任何交易系统的基础。在讨论研究方法之前,我们先来深入了解一些用于设计高频交易系统的基本原则。
投资获利理念是交易系统的根基:如果其中出现逻辑错误,那我们就是在冒险;
要理解直觉交易系统和非直觉交易系统的区别:高频交易系统的设计倾向于自动的非直觉交易系统,它能被显性的交易规则和参数所精确量化;
对市场不要有任何判断:对于大多数高频交易系统来说,利润仅仅来自于对市场快速的反应而非对市场未来走势的预测;
要了解交易理念中的缺陷并在研究阶段就考虑风险控制:在产生投资想法之初就开始建立风险管理模型;
纪律是关键:一套自动交易系统将使你严守纪律并远离贪婪和恐惧;
经常利用历史数据回测你的模型,并在每天进行复盘,但要避免过度拟合。
方法
系统设计的第一步就是从研究中产生交易想法。有很多方法来进行研究,包括学术文献阅读、改进现有交易模型、市场调研甚至逆向工程(通过对已有的系统的结构、功能、运作进行分析、分解、研究后,开发出功能相近,但又不完全一样的系统过程)。值得一提的是,历史回测和参数优化永远不能开发出新的交易系统,仅仅依靠在历史回测中尝试不同的交易规则和参数组合只能让你的策略对历史数据产生过度拟合,最终导致实盘交易的失败。
研究阶段的成果是一系列描述交易思想各个方面细节的设计文档,这些文档会被作为指导下一阶段建立系统模型的蓝图。
具体文档包括:交易策略和获利理念的具体描述;交易的目标市场;交易的品种;对于交易品种波动性和流动性的要求;过滤入场和出场信号的算法;执行交易的算法;数据要求;算法优化周期;交易系统的交易频率;风险管理的逻辑;绩效指标;备选系统设计方案;系统的缺陷;未来改进的思路。
当上述文档全部成形之后,需要开发团队聚在一起进一步讨论细节。金融工程师可能会展示各自的设计方案,互相帮助验证方案的有效性,为交易策略把关,做好进入下一个阶段的准备。
在炒股炒期中,一套正收益的交易系统是稳定盈利的「技术」基础。只是技术基础,不是稳定盈利的基础。
一套正收益的交易系统,加上良好的执行能力,才是稳定盈利的基础。
盈利的关键是「交易系统」和「执行能力」,两者缺一不可,很多同学死在以为良好的技术(交易系统)是全部。
金融投机市场中,至少有80%的投机客(很多人说自己是投资客)是没有自己的交易系统的。
甚至有一部分同学连交易系统是什么都不知道,更夸张的甚至没听说过交易系统!
对于这部分80%的同学,我只想说,早点爆仓回家卖红薯,别浪费自己的生命。或者,认认真真看完此文,学习设计自己的交易系统。
交易系统应该包含些什么鬼?
一套好的交易系统至少包含两个方面,「开平仓规则」和「加减仓规则」,其中开平仓规则属于技术范畴,加减仓规则属于资金管理范畴。
下面,哥就以移动平均线为技术基础,和大家一起探讨,如何设计一套可执行的交易系统。
「01」设计交易系统
第一步,我们先设定我们需要的技术指标,在这个系统设计中,我需要三条均线,分别是5日10日20日均线。
打开你的博易或者文华行情软件,然后打开公式管理器,添加如下自定义公式。
这条公式是有什么用呢?其实鸟用没有,只是方便有洁癖的我们干净地看盘。当然,偶尔还可以在人前装装B,哎呀,我会写指标!
如果你能在指标上加点标识,这个B装起来更炫酷了。
有了指标,我们开始设计开平仓规则。
五日线从下往上穿越十日线形成金叉开多。
开多少仓位合适呢?能问这个问题的同学,开始有仓位管理的意识了。
到底开多少合适?我们把总资金分成五份,五日十日金叉开一份,也就是20%的仓位。
如果我们只是开20%的仓位,当然轻了,大行情赚不到什么钱的,所以,我们必须设计加仓原则。
五日线从下往上穿越二十日线形成金叉加二份仓。
也就是说,当五日线穿二十日线时,我们此时共应该持仓60%。
为什么要分开开仓呢?原因是,第一份资金我们把它设为试仓,类似于打仗时的先头部队,如果遇到振荡行情,只会损失小止损,如果遇到大行情,重仓抓大波。
有了开仓加仓原则,那么我们还得有减仓平仓原则。
五日线从上往下穿越十日线形成死叉减一份仓。
为什么减一份仓呢?原因是,为了保护大部队的平安,先锋部队先死,腾出一点点利润空间。
五日线从上往下穿越二十日线形成死叉,平掉所有多头仓。
此时,如果行情波够大,利润会很丰厚;如果只是旺仔小馒头,亏损也能控制在比较合理的范围;如果行情一直在振荡,大部分时间只是先峰部队在里面冲杀,亏损可以接受。
上张大波图给大家意淫一下。
至此,一个包含了开平仓规则,资金管理规则的交易系统设计完毕。
从系统中我们发现,规则就像1+1=2那么简单,不存在秘而不宣的神神叨叨的东西。
一个操作系统,其实只需要一两种分析技术就行,我设计的这个示例用了移动平均线,你可以试着用其它,例如KDJ、MACD、BBI等什么鬼都行。
那些满屏都是技术指标,整得屏膜像个大花脸一样的,多半是新手,或者是忽悠,或者是被忽悠的老手。
「02」验证交易系统
一个交易系统,就这么简简单单的设计完了?凌凌六在这里告诉你,肯定没完,必须跟它没完,否则我们就完了。
系统设计完之后,我们还必须验证它的有效性,什么叫有效性?简单的说,就是验证它能不能给我们赚钱。
验证一个交易系统有两种方法,一种是历史数据回测,另一种是实测。一般情况下,先回测再实测。
怎么回测?打开行情软件,回朔那些年我们一起亏过的行情,一个点一个点,老老实实地记录下来,然后绘制历史收益曲线,如果收益为正,那么我们可以说,这个系统历史回测收益为正。
收益率不是一个交易系统最核心的检验指标,你最应该关注的是检验指标是最大回撤率。
验证一个交易系统是否有效,至少要有几百上千次的开平仓记录。
把回测做好,发现这是个最大回撤在可接受的范围,收益还可观的交易系统,那么我们就可以进入下一步,实测!
怎么实测?简单,真金白银上实盘,操作几百上千次,得出来的数据,才是这个系统最真实的收益率。