当前位置:首页 > 资讯正文

医药   科技   地产   汽车   旅游   时尚   文化   大数据

程序化交易模型的仿真运行
来源: 中国趣味证券网客户端           整理时间:2019-06-17 17:06:14

通过不断修正和完善,建立客观有效的程序化交易系统,实现真正的商业价值

程序化交易模型的仿真运行

A    信号闪烁

所谓信号闪烁,是指模型在图表上显示的买卖信号时而出现时而消失。出现这种情况,说明模型的策略在判断买卖交易的条件中使用了未来函数。

所谓未来函数,是指可能引用未来数据的函数,即引用或利用当时还没有发生的数据,对之前发出的判断进行修正的函数。具体地说,就是本周期结束后显示的指标值(包括线段和买卖提示信号),可能在发生新的数据后改变位置或者干脆消失。对于未来函数可以理解为某一变量依赖另一变量而先期变化。如变量A和变量B,B变化使得A也变化,那么A是B的函数,但如果B是稍后的变量,而A是稍早的变量,A跟着B变化,则A是B的未来函数。其中有三类函数属于未来函数:一是以之字转向为代表的ZIG类函数;二是准未来函数类;三是使用跨周期数据函数类,这是一种最为隐蔽的方法,它的危害性很大。

含有未来数据指标的基本特征是买卖信号不确定,常常是某日或某时点发出了买入或卖出信号,第二天或下一个时点如果继续下跌或上涨,则该信号消失,并在以后的时点位置又显示出来。

比如,一个策略定义为日K线收盘价大于均线时买入,反之卖出。由于日K线的收盘价在当天交易结束前表现为最新价,它随着行情的变动而变化,盘中的日收盘价以及由此计算出来的均线价格也会变动,当最新价离均线价格非常近时,就会出现盘中的日收盘价忽而高于均线价格,忽而低于均线价格,从而交易模型就会在图表上一会儿发出买进信号,一会儿买进信号消失出现卖出信号,反复交替,即出现信号闪烁现象。

信号闪烁反复的问题会对模型设计人员造成极大的困惑,模型策略中一旦使用了未来函数而出现信号闪烁,则实盘中模型会不断地开平仓。但在用历史数据测试时,只会有一次信号出现,导致实盘交易结果和测试结果会有很大差异。很多模型在测试时表现很好,真正拿到实盘上运行就让人大跌眼镜,这就是买卖信号出现反复所引起的。

要解决信号闪烁的问题可以采用两种办法:

一是用不可逆的条件来作为信号判断条件。比如,模型策略规定,一根K线的最高价高于某个固定价位时,模型发出买入信号。由于一根K线的最高价只能是不断增大的,所以某一刻开始满足条件,就会一直满足这个条件,出现的信号就不会消失,也就不会出现信号闪烁现象。

二是使正在变动的未来函数变成已经不再变动的完成函数。由于未来函数有时间周期,有些指标在一个短的周期内可能是未来函数,但在稍长的周期内就不是未来函数。例如,收盘价在一天收市前都是不确定的,所以对于一个日周期的指标在分时周期内具有未来函数特征,但是一旦收盘该指标就是定值,不会随明日及以后的行情而变动,所以该指标在大于一日的周期中就不是未来函数。

B    偷价行为

所谓偷价行为是指在开平仓的时候使用了当时已不存在的进出场条件。比如,模型策略规定,如果最高价大于某个固定价位即以开盘价买入,如此虽然信号不会闪烁,但是最高价大于某个价位时,价格已经高于开盘价一定距离了,这时用开盘价买入是做不到的。但是在用历史数据进行模型测试时,图表上是有买入信号存在的。

有一些偷价行为很隐蔽,还是以最高价大于某个固定价格买入策略为例,如果用此策略作为模型进场买入信号,看起来没有什么问题,但如果行情出现一开盘就跳空高于固定价格的情形,模型就不可能再以这个固定价格买到了。此时,模型的交易策略应改为,用开盘价与固定价格之中的最大值作为买入价格,如此就能避免偷价行为的发生。

信号闪烁与偷价行为对短线交易模型的影响是致命性的,投资者一定要对模型信号的真伪加以甄别。使用未来数据不用花费任何精力就可以轻松获得表面上非常高的成功率,但发出的买卖信号在实际操作中毫无价值,是一种交易欺骗行为,在实战中给投资者带来的惨痛损失和后果往往不堪设想。

C    检验风控表现能力,优化模型交易策略

衡量程序化交易模型最重要风险指标包括最大回撤、夏普比率等。由于历史事件与未来将要发生的行情事件,在原因上和波动程度上存在差异,所以,用实盘进行检验模型在各种复杂环境下的风控表现能力,以判断模型在一些风险指标上的波动范围是否与历史测试数据有较大偏差,如果出现偏差,则寻找原因并加以修正。

与此同时,要通过实盘运行发现模型交易策略中的缺陷和不足,并进行优化。比如,对不同的期货标的行情进行仿真运行,可以发现模型使用的交易策略在不同标的行情中的适用性。也许模型对农产品(如大豆)适用于日线交易,但在股指期货中却适用于分钟行情。再比如,模型中所用到的一些周期性指标(KD、RSI、MACD等),采用不同的时间参数得到的买卖信号效果是不同的。所以,寻找并调整交易策略中的最佳公式参数,也是对交易模型策略优化的一项重要工作。

经过一段时间的仿真运行(短则一个月,长则半年或数年),从不断发现问题到返回模型的策略设计步骤进行修改(有时候问题如果比较严重,还可能需要推翻模型,重新设计),再测试,再运行,循环往复,直至模型功能逐步稳定后,才能真正开始投入实盘交易。但即使是投入实盘交易,模型也还是会被不断地修正和完善,以建立更客观、更有效的程序化交易系统,实现真正的商业价值。

D    “海龟交易法则”编制的程序化交易模型

下面以“海龟交易法则”编制成的程序化交易模型为例,展现整个程序化交易模型设计、测试、运行的全过程。

在金融界,流传着一个著名的故事。1983年,美国期货界的两个挚友——理查德·丹尼斯与威廉·埃克哈特之间就一个问题产生了分歧:伟大的期货交易者究竟是天生的,还是可以后天培养的?他们就这个问题进行了一场辩论,并为寻找答案进行了一场试验,这就是著名的“海龟交易试验”。丹尼斯和埃克哈特在1000个报名者中甄选了13个“海龟”,并用两周时间给他们传授了交易理念和法则。在随后的四年中,海龟们凭借这些交易法则取得了年均80%的收益。

二十多年后,“海龟交易法则”已经公布于众。如何将“海龟交易法则”建成一个程序化交易模型加以实际运用,以检验“海龟交易法则”是不是像传说中的那么神奇呢?

第一步归纳交易策略

首先是入市,入市是所有交易系统最重要的一个方面。“海龟交易法则”采用通道突破法入市,使用了两个有差异但彼此相关的入市系统:

系统1——以20日突破为基础的短期系统。

系统2——以55日突破为基础的长期系统。

“海龟交易法则”采用波动幅度管理资金,首先要得到20日的价位移动平均真实波动幅度,定义为N。

系统1入市信号:只要价格超越20日最高点或最低点一个单位,就买入或者卖出一个头寸单位。但是假如上一次突破是一次盈利性突破,那么系统1的当前入市信号将被忽略。