正如正丈所讨论的,我相信数据挖掘方法能很容易地确定状态转换:
检验大量的指标来确定究竟哪个能够预侧转换。这是一个即使用MATLAB工作童也非常大的任务。但幸运的是,最近出现的一个机器学习程序,能使这个任务在几个小时之内完成。
我使用的工具叫Alphacet Discovery,一个由Alphacet公司(www. alphacet.com。也是我公司的客户)新开发的集回浏和执行于一体的平台。这一平台不仅整合了策略原型、回测、分析和实时部署所雷的所有历史和实时数据,还包括适用于数据挖掘的机器学习程序,如神经网络和遗传算法。
我选择一只出色经纪商的股票GS作为金融行业的代表。我的目标是能否发现这个行业牛市熊市的拐点。初始假设是:利率重大变化、政府宏观数据发布或盈利公告会触发拐点。在写作本书的时候,Alphacet还未将宏观数据和公司数据整合进数据库,所以我用GS股价的较大变化代表这类消息的发布。另外,无论何时,当GS股价在此大映或大升之前达到其N天内的最高价或最低价,都很好地预示着前一状态快要结束了。所以我把这一情况也作为另一输入变量。
我们面临的问题是:多大的价格变动才足以触发状态转换?N应该取多少天?新的状态通常会持续多久?(换句话说,最优持有期多长?)如果用老式的人工方法来回答这些问题是非常耗时的,因为必须在对自变全用多个阈值和对因变贵用多个返回形态的情况下进行多次模拟。让我们看看Alphacet Discovery是怎样帮助我们实现流程自动化的。
模型的自变量是GS的日收益率,因变量是GS在不同持有期的未来收益率。Discovery能很容易地找到得出最佳回测业绩的一个最优规则,或几个最优规则的集合。在我们的例子中,每一个百分比变化的阈值都可以被封装成一个规则。我给买入和卖出各设定两个阈值:-1%、-3%、1%, 3%。同样地,每一个持有期也可以被封装成一个规则,我设定六个持有期:1天、5天、10天、20天、40天和60天。
准备此次研究所需的价格、百分比变化和10日内高/低时间序列非常容易,在Discovery里,大部分任务通过移动鼠标便能完成。(为了简便,我选择了N为10,但这一参数也可优化。)我将一个GS的价格序列花入编辑器并确定1日的频率。(价格序列开始于2006年11月。)见图7.1框S1,然后,我向编样器拖入预先设定好的能够计算1日百分比变动的“规则”和一个简单的10日移动高和低序列(参见图7-1框12)。接着,我通过用箭头将符号组框连向程序组框的方式就将最初的价格序列精入到程序组框。
图7-1 策略编辑器
现在,我可以通过使用下拉莱单创建条目开在一个新的规则编样器进行输入。图7-2显示了基于±1%变化的买卖规则下规则框R3的变化。我为±3%也创建了一个类似的规则枢。值得注意的是,在默认情况下,后续输入将会覆盖之前的输入。
图7-2 规则框
我们可以在预装的“持有期”程序中用不同参数来指定持有舟。(实际上,如果你会编程,也可以自己创建相应的程序。)这些都封装在框巧中(±2%的算法单独列在16中)。我们通过连接箭头的方式将框R3的结果愉入到15中,同样,将框R4的结果输入到19中。
最后,我们对17和19的结果运行感知器学习算法(感知器是神经网络的一种)。基于最大化总盈利为目标的历史训练数据移动窗口,这种算法可以得出不同持有期下不同规则的最优权重。塞于这些最优权重,感知器会在每个期限末触发买卖决策。
有超的是,即使移动窗口的规则是以N天构建的,感知器也并不会强制我们一定处在N天的状态。每日,程序会根据移动窗口中的最新数据和不同规则的线性权重结果得出最新参数优化,进而做出买卖决策。
现在,我们可以通过Discovery的图表来看策略的业绩结果。图7-3中,我展现了感知器优化后三条最佳的净值曲线。录佳的一条曲线是由50天移动窗口优化模型得到。(移动窗口的长度本身就是可以优化的对象,但此处我们省略这个步骤。)在图表应用的侧边栏上我们可以看到,在6个月的回测期内,这个策略通过89次往返交易获得37.93%的总系计收益率。(相比较而言,GS的买入持有策略的收益率为15.77写,挫跌为14%。)我们也展示了不同持有期的最佳净住曲线(I5:持有期为10天。R3: 1%),其总累计收益率为18.55%。
图7-3 展示净值曲线的图表和展示业绩数据的侧边栏
虽然回测期很短,但收益率却令人印象深刻。是什么地方出错了吗?特别是,已经芡延到所有基于机器学习或人工智能的策略的数据迁就偏差存在吗?Alphacet Discovery的基本原理就是避免这种偏差的出现。尽管在这里我们没有特别说明,但从理论上来说,后顾移动窗口中的所有算法
和参数都可以优化,所以我们绝时没有使用预浏不到的未来数据用于回测。当然,数据迁就偏差还是会出现,因为当回测业绩较差时我们会舍弃一类模型,并且尝试另一类新的模型,直到其回测业绩良好为止。但那个时候,我们已经处于回测业务,是不可避免的。
在这种情况下,还应注意搜索引擎优化的参数实际上相当有限:仅仅是持有期不同而已。这也进一步降低了数据迁就偏差风险。
因为回测看起来不错,我可以立刘按下一个按妞,对实时数据在仿真账户或实时交易账户中生成指令。
正如你所看到的,要创建一个状态转换模型并不走很难,只需用最简单的技术指标,以及能够有效地优化大量参数,并能在后顾移动窗口中被严格执行。如果我们可以确认价格移动与宏观经济及公司信息之间的关系,结果可能会更好。我相信这种技术会给许多交易所交易基金、期货甚至现货交易带来盈利。