金融量化分析基础(十)—— 程序化交易实战问题及对策

实盘与回测结果的偏离

我们在网络上常见到各种几百块钱就能买到一个回测很漂亮的策略,激动地准备实现财富自由。但开始真金白银地去交易时,就不是那么回事儿了。其实用脚指头想一想,有这么好的策略为什么卖家不自己用,反而只卖几百块?

容易想到的问题就是:

  1. 指数与合约价格的偏离
    • 指数是各个合约加权平均产生的结果,指数显得更光滑,是加权平均数,噪音比较小,常会好于合约价格
    • 实际交易时只能用 合约不能用指数
    • 减小指数与合约间的误差的方法:用合约配比来模拟指数
  2. 低估交易成本(滑点、佣金、手续费等)
    • 滑点影响最大,非正规平台往往有更高的滑点和交易成本,尤其是交易现货的平台
    • 开仓越频繁,交易成本越高
  3. 止损止盈价格的陷阱

上面讲了实盘与回测的区别,关于回测时本身可能出现的问题下面也一一列举了:

为什么要回测

我们首先来看一下什么叫做回测。回测就是基于历史数据,尽可能真实地还原实际交易过程,并检验交易策略绩效的过程。这样做有三个目的:

  1. 验证交易信号的准确度;

  2. 验证交易逻辑和你的想法是否可行;

  3. 发现交易系统中的缺陷,并改进原始策略。


回测陷阱之信号闪烁

交易策略在回测时是基于静态的历史数据。而真实的交易的数据是动态的。举个例子:如果最高价大于昨天的收盘价就买入开仓。这个开仓条件在实盘中,如果K线还未走完,那么最高价就是动态的,交易信号就有可能来回闪烁。而在回测时,回测引擎是基于静态的历史数据是可以模拟撮合成交的。


回测陷阱之未来函数

未来函数是用到了未来的价格,也就是说当前的条件在未来可能会被修改,同样未来函数也能造成信号闪烁的原因。所以任何函数都具有未来函数特性,比如说 Z 字函数。


回测陷阱之偷价

  所谓偷价行为是指利用过去的价格去交易。举个例子:如果最高价大于某个固定价位即以开盘价买入。这个条件就是在偷价格,因为在实盘中,最高价大于某个价位时,价格已经高于开盘价一定距离了,这时用开盘价是买不到的。但在回测中,是有买入信号的,并且能成交。

  还有一种情况,如果价格跳空高开与策略设定的固定价格,回测时可以以固定价格成交,但是在实盘中这个固定价格显然是买不到的。


回测陷阱之不可能成交的价格

不能成交的价格分为几种情况:

  • 在实盘中,涨停时一般情况下是买不到的,反过来跌停也是如此。但是在回测中却是可以成交的。
  • 交易所撮合机制是:价格优先、时间优先。有些品种盘口会经常有巨量订单,实盘时如果挂单买卖,需要等待盘口厚度,才能成交甚至不能成交。但是在回测时,挂单买卖是可以成交的。比如下面这张图的盘口厚度:

img

  • 如果套利类策略,那么回测利润是很高的,因为回测时每次都已经假设了抢到了这些价差。真实的情况下,很多价差都抢不到,或者只抢到了一条腿,一般来说肯定是不利于你的方向的那条先成交,那么就需要马上去补另一条腿,这时候滑点已经不是1、2个点了,而套利策略本身就赚这几个点的价差,这种情况是回测中无法模拟的。真实利润完全不如回测。

  • 黑天鹅事件。如下图红圈处,在外汇瑞郎黑天鹅事件中,尽管表面上看有开盘价、最高价、最低价、收盘价,其实当天的极端行情中,中间的价格是真空,大量的止损单,造成踩踏事件,流动性为零,成交难度非常大,但是在回测中却能止损。

img


回测陷阱之过度拟合

img

针对量化交易来说,回测是基于历史数据,但历史数据的样本是有限的,如果交易策略的参数过多,或者交易逻辑过于复杂,导致交易策略过多的适应历史数据。

量化策略的建模过程本质上就是一个从大量的貌似随机的数据中找寻局部非随机数据的过程,如果不借助统计学的知识,很容易落入过度拟合的陷阱。

img

  如果说天文学星座是一阶过拟合的话,那么星座性格学说是二阶过拟合。

img

所以,不要自欺欺人。如果发现样本外数据表现不好,又觉得丢掉模型太可惜或者不愿意承认自己这个模型不行,而对着样本外数据继续做模型优化,直到样本外数据上也表现得一样好,那最后受伤的一定是你的真金白银。


回测陷阱之幸存者偏差

  举个通俗的例子来解释什么是幸存者偏差:

  1、某宝卖降落伞的商品都是好评。因为降落伞有问题的人都不存在了。

  2、某电台记者在高铁上采访乘客是否买到车票。因为买不到车票的人根本上不了车。

  3、媒体宣传买彩票可以中大奖。因为媒体不会宣传没有中奖的人。

  4。站在风口,猪都会飞。

  通过上面例子可以看到,实际上人们接受到的信息其实是经过筛选后的结果,因此生存者偏差造成的结果就是往往一开始就有大量的数据或样本被忽略了,导致基于生存者偏差的结论偏离实际。

  那么在量化回测中,就要小心了。回测的结果也有其运气成分,许多情况下回测出来的结果,可能是在众多次数的回测中表现较好的一次。

img

  金融市场中明星多、寿星少。如果交易者的策略刚好与市场行情契合,那么每年的行情就能造就一些明星。但是很难见到连续 3 年以上持续稳定盈利的寿星。

  作为一个交易者,不管是量化交易也好,还是手工交易也好。都要扪心自问,自己的盈利究竟是来自于好运气,还是能力。往往许多人把自己的好运气当做自己的能力。


回测陷阱之小样本统计

  尽管拥有庞大数据的历史,但面对浩瀚无尽且不可预测的未来,历史数据就显得极度匮乏。即便是以现有的全部历史数据来验证,交易策略也不能被证实,但是可以被证伪,那么在证伪策略的时候,就需要尽量多的历史数据,来证伪策略本身。而不是拿很小样本的测试来说明问题。


回测陷阱之点差

  盯过盘的都知道,买一价和卖一价的价格是至少一个点差的,不活跃的品种点差会更大,如果在发生信号后保证成交,得以对手价去下单,一般和信号模拟价相比要损失一个点差左右的,所以在写交易模型编写时必须要扣除点差,特别是在写交易频率较高的日内模型时特别重要,好多这类策略都是如果没有计算点差,那测试报告的资金曲线几乎是一根笔直的斜向上的直线,一旦加上点差,立马变为亏损。


回测陷阱之冲击成本

  无论多么精细的回测引擎,其回测只是基于在静态数据,很难模拟出真实的交易环境。举个例子:下单价格是1050买入,但实际成交价可能是1051。造成这种现象的原理有很多,比如:极端行情时流动性真空、网络延迟、软硬件系统、服务器响应等。

不加滑点回测:

img

加滑点回测:

img

  但是在回测中是理想环境,没有价格冲击成本,回测时的成交就是1050。特别是高频或短线策略,想象一下,在回测中成千上万次交易,其回测结果也是不真实的。如下图:

img


回测陷阱之风险收益比

  交易策略的几何年化收益率/最大回撤的比值在2以上。对于一些粗糙模型,在单个品种上很难让几何年化收益率/最大回撤这个比值大于2,如果在相关度低的多品种上进行组合投资,使组合投资报告上的几何年化收益率/最大回撤这个比值大于2,也是可以的。

下面的策略长期能赚钱,那才不正常。

img

img

仓位多少合适

轻仓重仓,无法一概而论

在实战交易中,有的人偏好一直轻仓,从容应对,风险第一。有的人喜欢偶尔重仓,有的放矢,重锤出击。

量化之王西蒙斯,由于交易标的分散,所以对单个标的的仓位实行轻仓,而金融巨鳄索罗斯却相反,对狙击英镑,泰铢等战役,都是重仓押注。巴菲特的老师格雷厄姆,通过持有大量股票,每个股票都极其轻仓的方法来分散风险,进行获利。

而股神巴菲特则反其道而行之,对深入研究看好的公司,进行集中重仓,这才有了现在千亿美金的财富,用巴菲特自己的话说,从分散到集中的转变,如同自己从猿人进化到了人类。

我们在实际的外汇交易过程中,仓位也没有教科书般的标准答案,因为仓位和交易者的心理承受能力,和交易系统有关,所以在不同的人眼里,有着不同的理解。

凯利公式计算仓位

凯利公式:$F = P-\frac{1-P}{B}$,$P$为胜率,$B$为赔率(盈亏比),根据凯利公式可以算出每一次交易止损位应放在哪里。例如$P=35\%$,$B=2$,则$F = 0.35-\frac{0.6}2 = 5\%$,也就是每次最大允许$5\%$的亏损

想要具体了解可以看参考链接3,其中讲述了最常用的7种仓位控制方法。

过多追求胜率

  • 胜率不是越高越好
  • 过度追求胜率往往导致过拟合

“就专业交易员而言,其获利交易百分率经常低于40%” ———-《高级技术分析》

“如果期货外汇交易有20%的成功率,那他就非常走运了。” ———-《操盘建议—全球顶尖交易员的成功实践和心路历程》

“任何人进入金融市场,如果他预期将有一半以上的交易会获利,这项预期会被很粗鲁的惊醒。” ———-《专业投机原理》

如何提高盈亏比才是赚钱关键?

盈亏比是滞后指标,等你做了很多交易以后,你统计了自己的盈亏比大概是多少。这时你才会知道自己盈亏比大概是多少。

所以我们入场,很难以盈亏比来指导。你能赚多少,是市场给的,不是你算出来的。如果强制性设置盈亏比,很可能盈利变亏损,也可能踏空行情。笔者认为相对而言,设置止损容易,盈利后合理的盈利出场点更难,给出几个建议:

  1. 因此应该按你的交易系统做好交易计划,在你所遵循的行情判断的走势发生变化时按照止盈出场。

  2. 根据交易计划盈利后,建议将成本线设置为强制出场点,保证至少不亏损。

  3. 有一定的浮盈空间,可以适度拿盈利博取更大的行情,扩大盈亏比!再结合自身情况进行匹配选择,最终慢慢完善自己的交易体系!坚持执行,保证交易的一致性!

缺乏规则的主观干预

  • 规则时程序化交易的精髓
  • 主管干预的结果通常不如不干预(长期来看)

可以看看这篇访谈:王阳军:必须要相信自己的策略,不要人为主观地去干预它

长假日是否要减仓或平仓

  • 用历史回测来检验是否需要减仓
  • 减仓或平仓往往效果不如不减(长期实盘交易来看)

参考链接:

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2020 chenk
  • 由 帅气的CK本尊 强力驱动
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信