资讯中心
量化交易实现稳定收益
上传时间:2016-06-12 11:27 来源:未知 点击次数:

中国股市创立以来的二十多年间,股市从公开的投融资平台,变成了许多股民一夜暴富的梦境。股市沦为赌场,散户们被当作“韭菜”。

 

抛开牛市的狂热和股灾的哀嚎,我们需要静下心来想一想,是不是我们应该用更理性或是更科学的方法来对待股市投资这样一件严肃的事情呢?

 

新兴的量化交易正在尝试提供一种理性投资的解决方案,通过大量的计算建立科学的盈利模型,为股民指引投资策略。最近alphago的成功更让我们不禁期待人工智能未来在投资领域的广阔应用空间。

 

你还在看电脑面前盯盘看K线吗? 你还在为一次亏损寝食难安,为一次盈利欣喜若狂吗? 如果是,那也许你就OUT了。

 

随着量化交易的蓬勃发展,一群统计狗、程序猿们已经开始使用计算机模型进行交易了,这些程序用不休眠,无人值守,24小时为你监控市场,产生利润。

 

真有那么好的事吗?这不就是印钞机了吗? 请看下面分解。

 

量化交易的获利来源于市场的无效性。如果市场服从随机游走,那大部分金融机构都可以关门了,还炒什么股啊。如果市场是有效的,那可能一个人一辈子都碰不到大牛市。持续不断的上涨的K线排列,概率该有多小啊。

 

一个比较现实的假设是,市场在一定程度上是无效的,单纯的价格序列中存在大量的获利机会。

 

 

量化交易是概率的游戏,一个交易策略是否能够盈利,关键看胜率和盈亏比。胜率是盈利次数占总交易数的百分比,盈亏比是平均盈利和平均亏损的倍数关系。

 

这两者需要平衡,也很难兼顾。例如,玩彩票盈亏比很高,胜率很低,所以总体是亏损的。

 

上图是个高盈亏比低胜率策略的策略。虽然盈利的交易很稀疏,但是却远离零点,亏损交易很密集,但紧贴零点,所以从右边的资金曲线上看,策略总体上是盈利的。

 

所以,量化交易者会坦然的接受亏损,也会正确的看待盈利,它们只是交易系统的一个部分。

 

下面用一个例子来说明一个交易策略的生产过程。某交易员发现,价格突破了一些关键点位后,会向着突破的方向持续发展。于是我们设计一个简单的突破策略:当价格突破近期高低点时,相应的做多或做空。

 

接下来,就要进行进一步细化,做成一个模型。需要回答这么几个问题:

 

时间框架是怎样的? 小时线、日线还是周线?

如何定义高低点? 往回看几跟K线?

进场后如何止损? 固定点位止损还是ATR(平均真实波动)止损?

 

将上述问题具体化以后,就用程序代码将它们予以实现。国内比较普遍使用的是tradeblazer和multicharts。当然,技术实力较强的交易者也可以选择自行开发交易平台,用java,python等语言予以实现。

在策略构建的初期,一些参数是待定的。如均线的K线条数,止损点位,止盈点位等。这些参数都可以用遍历的方法进行优化,也就是说,穷举各种参数的组合,找到使盈利最大化的那一套参数。

这里,我们对止盈点位和止损点位进行了优化,绘制了一副3D优化图。X和Y轴分别代表被优化的参数,即止盈点和止损点,Z轴代表目标函数,即盈利。

 

我们可以看到,盈利在不同的参数组合情况下高低起伏,呈现出了一个个山峰、平原和低谷。那么,我们是否应该选择那些山峰呢?

 

其实不是。因为选择这些山峰可能会带来一个问题,就是过度拟合。表现过好的参数组合满足了过去市场的某种特殊情况,只要参数发生微小变化,策略表现就会急剧下降,这就是”山峰”的含义。

 

相比而言,目标函数的“平原”区是更为稳定的参数,因为参数在这个范围内变化,策略表现是稳定的。所以我们要选择平原。

 

下面这幅图是参数经过优化后的策略表现,资金曲线图表现出剧烈的波动,这反应了策略思路本身存在缺陷,高低点的突破并不能对价格起到很好的预测作用,参数优化并不能解决策略思路本身的问题。


 

如果我们找到了一个可行的策略,又选择了合适的参数,策略回测表现让人满意,下一步就是样本外测试了。

 

样本外测试的目的,是用新的数据对策略进行检验,考验策略的盈利能力。在之前的测试中,我们已经使用了一部分的历史数据。

 

策略是在这些历史数据中被“训练”出来的,很容易出现过度拟合的问题。极端情况下,只要参数数量足够多,我们是可以轻易的通过历史数据训练出100%胜率的策略。

 

但这样的策略并不具有通用性,如果用新的数据测试这样的策略,结果一定是糟糕的。这就是我们进行样本外测试的原因。样本外数据也是历史数据,只是我们在测试初期预留出来的,没有碰过,是“干净”的数据。

 

如果策略在新数据下的表现不好,那么这样的策略仅仅是过度拟合的结果。上图就是一个过度拟合的例子,策略盈利在样本外数据中急剧下降。

 

下一个测试是蒙特卡洛实验。在试验中,我们模拟未来市场可能出现的各种变化,考察策略是否足够健壮。这些变化可能是价格的变化,也可能是参数的变化,还有可能是交易顺序的重新排序,不一而足。

 

借助实验软件,我们可以进行上千次的重复实验,看看策略是否还能生存下来。

 

上图是蒙特卡罗的实验结果,红线代表原市场条件的测试结果,绿色代表最恶劣的5%的市场条件,紫色代表实验平均结果。可以看到,策略在最差的5%情况下,仍然能够维持盈利,说明策略是健壮的。

 

下面分别介绍一下策略的种类。从策略的交易思路看,大致可分为趋势策略(动量策略)和逆势策略(均值回转策略)。两种策略分别适应于不同的品种和市场条件。

 

趋势策略的常见例子是均线交叉策略。短均向上突破长均做多,向下突破做空。趋势策略捕捉了市场的冲动情绪,当价格上涨时,大量交易者非理性的跟进,价格下跌时,人们又急剧恐慌。趋势策略者就可以“顺应趋势”,追涨杀跌,让“趋势成为朋友”。

 

逆势策略则相反,逢高卖出,逢低买入。在某些市场的某些时段中,价格确实存在这样的高低震荡的情况,逆势者容易利用这样的价格属性频繁的积累微小利润。

 

但是,市场总是趋势与震荡并存,我们很难判断市场何时震荡,何时趋势,有没有解决办法呢?

 

当然有。我们要把思路打开,将目光从单个品种转向多个品种的组合价差上,也就是常说的配对交易。例如不同到期日的期货合约价差就存在高度的相关性。

 

例如,我们将两个不同到期日橡胶合约的价格序列放在一张图上,就可以看到他们之间的高度相关性。虽然两个合约各自的价格呈现出趋势属性,但它们的价差是稳定的震荡属性。


我们通过震荡策略,交易两者的价差,就可以获得比较稳定的收益。价差组合的方式有很多,并不局限于两个品种,我们可以通过下列通用公式,配置出无数个可能盈利的价差组合。哪个组合式可以盈利的呢?自己去挖吧。


 

下面来讲讲仓位管理的问题。仓位管理,就是决定某一策略分配多少资金的问题,初学者往往过分执迷于策略思路本身的盈利,而忽略了仓位管理。

 

实际上,仓位是量化交易最重要的环节。即使拥有了盈利的策略,如果仓位管理不当,完全可能爆仓出局。

 

下面我们来探讨一个有趣的仓位管理方法,叫martingale.这是一种死扛型的仓位管理机制,每经历一次亏损,我们在下次交易时就把仓位放大一倍,一旦盈利,我们就把仓位恢复到初始值。

 

例 如,当经历了3次连续亏损之后,仓位数分别是,1,2,4。如果第4次交易盈利了,我们就把仓位恢复到1.martingale的资金曲线很好看,几乎是 一条直线,因为通过仓位的放大,只要获得一次盈利,就可以把之前所有的亏损全部扳回。资金曲线迅速恢复。我们看看上面这幅图,是不是很让人兴奋呢?

 

不幸的是,天下没有免费的午餐。交易者的资金永远是有限的,但martingale的亏损却是无限的,假设连续亏损次数进一步放大,变成5次,10次,那么仓位也会急剧放大,变成32和1024,最后,因为交易者资金不足,而出现爆仓。

 

上图是10000次martingale后出现的爆仓现象。随着交易频率增高,爆仓的几率也逐渐增大。所以,martingale也是一直饱受诟病的一个仓位管理策略。

 

可是,万事没有绝对。Martingale好还是不好,完全取决于交易者的应用。影响爆仓概率的参数有这么几个:

 

1、策略思路本身的胜率。

2、策略的盈亏比。

3、每次亏损后翻倍的倍数。

4、盈亏交易的概率分布。

 

可以想见,胜率越高,连续亏损的概率越小;盈亏比越大,每次亏损的回撤就越小;翻倍数量越大,亏损分布越集中,越容易爆仓;


我们将翻倍系数从2降低为1.6后,用在一个胜率50%,盈亏比为1.2的策略上之后,经过10000次交易。仍然没有爆仓。

我们再来说说量化交易的新趋势----人工智能。手工交易者的技术分析,甚至是基本面分析,未来都有可能被机器所取代。这在计算机领域,叫做模式识别,通俗的讲,叫找规律。

 

技术分析的本质就是寻找价格规律,基本面分析又何尝不是呢?有了计算机的帮助,这些找规律的事情完全可以由计算机完成,人工神经网络就是一个典型的应用案例。

 

在上图中,我们用一些简单的数学函数,模拟出一个个的神经元。这些神经元能够从外界接受价格信息和基本面数据,经过函数转换变成输出,反射到下一个神经元,最后从右边输出。

 

这些转换函数的初始参数是随机的,但当我们进行成千上万次训练后,这些参数得到逐渐的优化,最后生成一个准确率较高的预测模型。

 

模型的具体原理,是我们无法从参数的数值去理解的,这相当于一个黑盒。这样的黑盒,可能可以找到我们人脑无法发现的一些数据规律,也许只是参数拟合的结果,需要一系列的测试去加以验证。但它相比人脑而言,能够更加细致的发现一些隐秘的规律。

最后,再提几点对量化交易职业的感受。量化交易是否能够排除心理因素的干扰?其实未必。量化交易者承受着不一样的心理压力。

 

当你尝试了无数种指标后,还是无法设计出一套盈利的模型,你是否还会继续坚持?或者干脆放弃去做点别的?当策略做出来后,在实盘中连续亏损时,你是否应该继续坚持策略?这都是考验量化交易员意志的时候。

 

另外,量化交易这么一个新兴领域,未来的路在何方? 是否会被超级机器所取代?机构的参与是否会让市场盈利空间缩水?这都是有待时间去回答的问题。