7.2 状态转换
状态是金融市场中一个最基本的概念。如果没有状态,何来“牛市”和“熊市”?自金融市场诞生之日起,人们就试图预测状态转换,即寻找所谓的“拐点”。
哪怕我们能够稍微成功地预测牛市和熊市的转换,就只要讨论这种转换即可,不用讨论其他的。但事实上,这种预测并不容易。也正因为预测这种转换十分困难,使得很多研究者在金融市场上寻找其他状态转换,希望能找到更适合现有统计工具的状态转换。
我已经介绍过由于市场和监管结构改变而引起的两种状态转换(这两个例子中,状态没有再转换回之前的状态): 2003 年股票价格改为十进制和2007 年初涨点规则的废除(具体见第5 章)。这些状态转换由政府政策变化所导致,所以我们并不关注于这种类型的变化。当然,能准确预测政策变化的人也寥寥无几。
其他最常见的金融或经济状态研究,包括通货膨胀与经济衰退状态、高波动率与低波动率状态以及均值回归与趋势状态。其中,波动率状态转换似乎最适用经典计量经济学工具,如广义自回归条件异方差(GARCH )模型(见Klaassen, 2002 )。这并不奇怪,因为金融经济学家远早于股票价格本身而对波动率成功建模。然而,对于期权交易员很有价值的波动率状态转换预测,对股票交易员却没有帮助。
学术界一般沿用以下思路对股票价格的状态转换进行建模:
1. 假设价格在两个(或多个)状态上的概率分布不同。最简单的情况,两个状态的价格都服从对数正态分布,但均值和(或)标准差不同。
2. 假设状态之间存在某种转移概率。
3. 使用诸如最大似然估计这样的标准统计方法,通过拟合历史数据,来确定状态概率分布和转移概率的参数。
4. 根据上述拟合模型,找出下一个时间步长的期望状态,更重要的是,找出股票的期望价格。
这种方法通常被称为“马尔科夫状态转换模型”或“隐马尔科夫模型”,这一模型通常基于贝叶斯概率框架。对这种方法感兴趣的读者,可以参见Nielsen and Olesen ( 2000 )、van Norden and Schaller (1993 )或Kaufmann and Scheicher (1996 )。
虽然理论框架完美,马尔科夫状态转换模型在实际交易中的用途却不大。这是因为模型假设状态之间的转移概率都是固定的。实际应用中,这意味着在任何时候(正如Nielsen 和Olesen 的论文中所阐释的那样)股票从正常的静止状态转移到不稳定状态的概率非常小。而这对于想知道转移概率在何时(以及何种情况下)突然达到峰值的交易员,是完全没有用的。这就需要用到拐点模型。
拐点模型使用了数据挖掘方法( Chai, 2007 ):输入所有可能预测拐点或状态转换的变量。变量包括当前的波动率、最近一期收益,以及消费者信心指数、石油价格变化、债券价格变化等宏观经济数据的变化等。经济学家Robert Schiller (2007 )关于房地产市场拐点的文章受到广泛关注,文章指出:媒体上开始日益频繁地讨论繁荣或萧条实际上是下一个拐点的预测。
例7. 1 介绍了应当如何通过数据挖掘来确定拐点,这种方法建立在简单的技术指标之上,即股票价格序列作为输入变量、股票在多个持有期的收益率作为输出变量。
例7. 1 使用机器学习工具在股市的状态转换中获利
正如正文所讨论的,我相信数据挖掘方法能很容易地确定状态转换z检验大量的指标来确定究竟哪个能够预测转换。这是一个即使用MATLAB 工作量也非常大的任务。但幸运的是,最近出现的一个机器学习程序,能使这个任务在几个小时之内完成。
我使用的工具叫Alphacet Discovery,一个由Alphacet 公司(www.alphacet.com ,也是我公司的客户〉新开发的集回测和执行于一体的平台。这一平台不仅整合了策略原型、回测、分析和实时部署所需的所有历史和实时数据,还包括适用于数据挖掘的机器学习程序,如神经网络和遗传算法。
我选择一只出色经纪商的股票GS 作为金融行业的代表。我的目标是能否发现这个行业牛市熊市的拐点。初始假设是z 利率重大变化、政府宏观数据发布或盈利公告会触发拐点。在写作本书的时候, Alphacet 还未将宏观,数据和公司数据整合进数据库,所以我用GS 股价的较大变化代表这类消息的发布。另外,无论何时,当GS 股价在此大政或大升之前达到其N 天内的最高价或最低价,都很好地预示着前一状态快要结束了。所以我把这一情况也作为另一输入交量。
我们面临的问题是z 多大的价格变动才足以触发状态转换? N 应该取多少天?新的状态通常会持续多久?〈换句话说,最优持有期多长?〉如采用老式的人工方法来回答这些问题是非常耗时的,因为必须在对自变量用多个闽值和对因变量用多个返回形态的情况下进行多次模拟。让我们看看Alphacet Discovery 是怎样帮助我们实现流程自动化的。
模型的自变量是GS 的日收益卒,因变量是GS 在不同持有期的未来收益率。Discovery 能很容易地找到得出最佳回测业绩的一个最优规则,或几个最优规则的集合。在我们的例子中,每一个百分比变化的阅佳都可以被封装成一个规则。我给买入和卖出各设定两个闽佳z 一1% 、- 3% 、1 % 、3 % 。同样地,每一个持有期也可以被封装成一个规则, 我设定六个持有期: 1 天、5 天、10 天、20 天、40 天和60 夭。
准备此次研究所需的价格、百分比变化和10 日内高/低时间序列非常容易,在Discovery 里,大部分任务通过移动鼠标使能完成。(为了简便,我选择了N 为1 0 ,但这一参数也可优化。〉我将一个GS 的价格序列施入编辑器并确定1 日的频率。〈价格序列开始于2006 年11 月。)见图7 . 1 框Sl . 然后,我向编辑器拖入预先设定好的能够计算1 日百分比变动的“规则”和一个简单的10 日移动高和低序列(参见困7 一1 框12 )。接着,我通过用箭头将符号组框连向程序组框的方式就将最初的价格序列输入到程序纽框。

现在,我可以通过使用下拉菜单创建条目并在一个新的规则编辑器进行输入。图7 - 2 显示了基于士1 % 变化的买卖规则下规则枢R3 的变化。我为士3% 也创建了一个类似的规则框。位得注意的是,在默认情况下,后续输入将会覆盖之前的输入。

我们可以在预装的“持有期” 程序中用不同参数来指定持有期。( 实际上,如果你会编程,也可以自己创建相应的程序。) 这些都封装在枢15中( 土2 % 的算法单独列在16 中〉。我们通过连接箭头的方式将框R3 的结采输入到15 中,同样,将枢R4 的结果输入到19 中。
最后,我们对17 和凹的结果运行感知器学习算法(感知器是神经网络的一种)。基于最大化总盈利为目标的历史训练数据移动窗口,这种算法可以得出不同持有期下不同规则的最优权重。基于这些最优权重,感知器会在每个期限未触发买卖决策。
有趣的是,即使移动窗口的规则是以N 天构建的,感知器也并不会强制我们一定处在N 天的状态。每日,程序会根据移动窗口中的最新数据和不同规则的线性权重结果得出最新参数优化,进而做出买卖决策。
现在,我们可以通过Discovery 的图表来看策略的业绩结果。图7-3中,我展现了感知器优化后三条最佳的净值曲线。最佳的一条曲线是由50 天移动窗口优化模型得到。 〈移动窗口的长度本身就是可以优化的对象,但此处我们省咯这个步骤。〉在图表应用的倒边栏上我们可以看到,在6 个月的回测期内,这个策咯通过89 次往返交易获得37. 93% 的总累计收益率。〈相比较而言, GS 的买入持有策略的收益率为15. 77% ,挫政为14% 。〉我们也展示了不同持有期的最佳净值曲线(15 :持有期为10天, R3: 1% ),其总累计收益率为18. 55% 。

虽然回测期很短,但收益率却令人印象深刻。是什么地方出错了吗?特别是, 已经蔓延到所有基于机器学习或人工智能的策略的数据迁就偏差存在吗? Alphacet Discovery 的基本原理就是避免这种偏差的出现。尽管在这里我们没有特别说明,但从理论上来说,后顾移动窗口中的所有算法和参数都可以优化,所以我们绝对没有使用预测不到的未来数据用于回测。当然,数据迁就偏差还是会出现,因为当回事时业绩较差时我们会舍弃一类模型,并且尝试另一类新的模型,直到其回测业绩良好为止。但那个时候,我们已经处于回测业务,是不可避免的。在这种情况下,还应注意搜索引擎优化的参数实际上相当有限z 仅仅是持有期不同而已。这也进一步降低了数据迁就偏差风险。因为回测看起来不错,我可以立刻按下一个按钮,对实时数据在仿真账户或实时交易账户中生成指令。正如你所看到的,要创建一个状态转换模型并不是很难,只需用最简单的技术指标,以及能够有效地优化大量参数,并能在后顾移动窗口中被严格执行。(见第3 幸的元参数交易模型。〉如果我们可以确认价格移动与宏观,经济及公司信息之间的关系,结呆可能会是好。我相信这种技术会给许多交易所交易基金、期货甚至现货交易带来盈利。