2.2 识别貌似可行的策略及其陷阱
现在,假设你找到了一些可能符合你个人要求的策略,并且已经有人对这些策略做过回测,称其具有很高的历史收益率。在你着手对这些策略进行完整的回测之前(更不用说投入资本进行实盘交易了),可以进行一些快速测试方法,以节省时间和成本。2. 2.1 策略与基准相比如何?收益持续性如何?
这一点对于一个买入(而非卖空)股票的策略而言,似乎是显而易见的。大家可能都知道,如果一个纯多头策略的年收益率为10% ,并没什么吸引力。因为平均而言,技资一个指数基金的年收益率就算没有更高也至少会有这个水平。但是,对一个货币中性策略而言(持有相同价值的多头和空头) , 10% 则是非常高的收益率了,因为这一策略的比较基准不是市场指数,而是无风险资产,如3 个月期美国国债(本书写作时在4% 左右)。
此外,还要考虑策略的获利持续性。也许一个策略与基准有相同的平均收益率,但在基准偶尔下跌的月份里,每月仍然获得正的收益。这时,我们认为这一策略是优于基准的。这也促使我们使用信息比率或夏普比率(Sharpe, 1994 ),而非收益率作为量化交易策略的业绩衡量指标。
信息比率是评价一个多头策略时所用的衡量指标。定义如下:
信息比率=超额收益率的均也/超额收益率的标准差
其中:
超额收益率=组合收益率一基准收益率
基准通常是指所交易证券所属的市场指数。例如,如果只交易小盘股,对应的市场指数就是标准普尔600 小盘股指数或罗素2000 指数,而不是标准普尔500 指数。如果交易的是黄金期货,对应的市场指数是黄金的现货价格,而不是股票指数。
夏普比率是信息比率的一个特例,适用于货币中性策略。此时,通常选择无风险利率作为基准。在实践中,大多数交易员在使用单向策略(纯多头或纯空头)时,也会选用夏普比率作为衡量指标,因为能够对不同种类的策略进行比较。大家对无风险利率比较有共识,但在市场指数的选择上,不同的交易员有不同的看法。这就使得不同交易员之间的信息比率不具备可比性。
(实际上,在计算夏普比率时如何减去无风险利率、如何年化夏普比率以用于对比等细节问题是有一些技巧的。下一章会介绍这些技巧,还会给出计算货市中性策略和纯多头策略的夏普比率的例子。)
你肯定很好奇,如果夏普比率真的能这么出色地对不同策略进行比较,为什么我们在实际工作中还是主要使用收益率作为策略业绩的衡量指标呢?有一次,我和一名同事去SAC 资本顾问公司(资产管理额达140亿美元)推广一项策略,其风险管理部门的负责人对我们讲:“当然,夏普比率高确实很好,但是只有获得更高的收益率,我们才能够拿到更多的奖金。”这种观点是非常错误的:越高的夏普比率事实上使得你最终获利越多,因为高夏普比率让你可以运用更高的杠杆进行交易。最终,重要的是策略的杠杆收益率,而不是名义收益率。第6 章“资金和风险管理”会对此作进一步阐释。
(那次面向SAC 资本顾问公司的推广并不成功,并不是因为策略的收益率不够高,而是那时我和我的同事对夏普比率和杠杆收益率之间的数学关系还不熟悉,以至于没能很好地说服该风险管理部门的负责人。)
现在,你已经知道了付么是夏普比率,你也许还想知道备选策略的夏普比率的大小。策略的作者通常不会公布这些数字,但你可以私下发电子邮件向他们索取。很多时候,这些作者(尤其是金融学教授)都会乐意提供这些数据,但如果被拒绝,除了自己进行回测外,也别无选择了。不过,有时候你仍然可以在信息不足的情况下,对夏普比率做出有根据的猜测:
·如果一项策略的年交易次数有限,夏普比率很可能就不会太高,但这并不影响你把这项策略作为多元策略的组成部分,但不足以把它当作主要盈利来源的策略。
·如果一项策略的挫跌很大(如超过10% ),或是挫跌时间很长(如4 个月或更长),也不大可能有很高的夏普比率。下一节会详细介绍什么是挫跌,但你可以直接观察净值曲线(在没有撤资和注资的条件下,也即累计盈亏曲线)是否有很大的起伏。曲线上任意峰尖到谷底的部分都是一个挫跌(见图2-1 的例子)。

根据经验规则:任何夏普比率低于1 的策略都不适合单独使用。几乎每月都实现盈利的策略,其(年化)夏普比率通常大于2 :几乎每天盈利的策略,其夏普比率通常大于3 。下一章的例3. 4 、例3. 6 和例3. 7 中将会详细介绍如何计算不同策略的夏普比率。
2. 2. 2 挫跌多深、多久?
如果一项策略近期正在亏钱,它就正在经历挫跌。时刻t 的挫跌被定义为:当前净值(假定期间内未发生任何赎回或注资)与t 时刻或之前的净值曲线最大值之差。“最大挫跌”是指净值曲线最大值与之后的净值曲线最小值(时间顺序很重要:最小值必须是在最大值之后〕之差。净值的最大值又被称为“高水位线”。“最长挫跌期”是指净值重返亏损前的水平所花费的最长时间。
挫跌通常用百分比表示,分母是高水位线时的净值,分子是高水位线以来的净值亏损。
图2-1 显示了净值曲线的典型挫跌、最大挫跌和最长挫跌期。我在例3. 5 中会详细讲解如何根据每日盈亏表,运用Excel
或MATLAB 计算这些数值。记住一件事:最大挫跌和最长挫跌期通常并不发生在同一时间段里。
挫跌的数学定义抽象生僻。然而在现实中,对一个交易员来说,没有比遭遇挫跌更令人痛心疾首、更真实的了。(无论是独立交易员还是机构交易员都如此。当一个机构交易团队遭受挫跌的时候,所有成员都会觉得生活失去了意义,他们终日都在为策略可能会就此失效而忧心伸忡。)所以,挫跌是所有交易员都想尽力最小化的。你必须认真地问问自己,在投资组合清盘或策略结束前,你能承受多深和多久的挫跌?是20% 和3 个月,还是10% 和1 个月?将你能够承受的底线与备选策略回测的结果进行比较,从而选择最适合你的那个策略。
即使策略的作者没有公布挫跌的准确数字,你也应该能从净值曲线图上做出大致估计。例如,在图2-1 中,很容易看出最长挫跌期从2001 年1 月至2002 年8 月。所以,最长挫跌期大约为20 个月。同样,最大挫跌开始时净值为23 000 美元,结束时净值为5 000 美元。所以最大挫跌为18 000 美元。
2. 2. 3 交易成本如何影响策略?
每次基于策略的证券买卖都会产生交易成本。交易越频繁,交易成本对策略的盈利影响就越大。交易成本不仅包括经纪商收取的佣金,还包括流动性成本一一当你以市场价格买卖证券时,要支付买卖差价。如果你采用限价指令买卖证券,确实可以避免流动性成本,但却要承担机会成本。因为限价指令可能不被执行,并因此错失了交易的潜在盈利。同样,如果你买卖大笔证券,不可能在不影响价格的情况下完成整个交易。(有时,仅仅是出现大额的买单,哪怕尚未实际买入一股股票之前,就能拉高股票价格!)这种由自身指令所引起的市场价格变动效应被称为“市场冲击”。当证券流动性不好时,它往往会是交易成本的大头。
最后,由于互联网或各种软件的滞后,指令通过程序传送给经纪商的时刻,与指令在交易所被执行的时刻之间存在滞后。这种滞后会造成“滑价”,即触发指令的价格和执行价格之间的差。当然,滑价有正有负,但平均来说,对交易员是成本而不是收益。(如果你觉得滑价是收益,我建议你修改程序,在发送指令的时候,故意延迟几秒钟!)
不同证券的交易成本相差也很大。如果你的指令规模不比最佳买卖报价的平均规模大很多,交易成本通常可以用平均买卖差价的一半再加上佣金来估计。例如,标准普尔500 指数成分股的平均交易成本(不考虑佣金,这取决于你的经纪商)大约是5 个基点(即万分之五)。这里,对一个交易循环中的买入和卖出计作两次交易成本。一个先买后卖的来回交易被视作两笔交易,因此,这个例子中的一个来回交易的成本是10 个基点。E-迷你标准普尔500 期货合约的交易成本大约是1 个基点。有时,策略的作者会说明他们的回测业绩中考虑了交易成本,但更多时候并不会这么做。如果没有说明,你就得假设回测结果没有考虑交易成本,从而得判断在考虑成本后策略是否仍然有效。
交易成本影响策略的一个例子是, E-迷你标准普尔500 期货合约的简单均值回归策略。这项策略基于布林线指标:每当价格超过移动平均值的正负两个标准差时,相应卖空或者买入。当价格回到移动平均值的正负一个标准差之内时清仓。如果允许每5 分钟建仓和清仓一次,你会发现不计交易成本时夏普比率大约为3一一当然非常出色!不幸的是,如果扣除1 个基点的交易成本,夏普比率则变成了一3
,变成了完全无利可图的策略。
交易成本影响策略的另一个例子可见例3.7。
2. 2. 4 数据有无存活偏差?
股票价格的历史数据库往往不包括那些由于破产、退市、兼并或收购而消失的股票,因此存在所谓的存活偏差,因为数据库中只有幸存者。(共同基金或对冲基金的历史数据库中也不包含那些已经倒闭的基金,同样存在存活偏差。)使用有存活偏差的数据进行回测是很危险的,因为会夸大策略的历史业绩。这在策略有“价值”偏好时(倾向于买便宜的股票)尤为突出,因为有些股票便宜的原因是公司即将破产。.如果你的策略只包含那些当时非常便宜但却存活下来的股票(而且可能已经兴盛),而忽略那些退市的股票,回测的结果当然会比交易员当时的实际经历要好得多。
所以,当你读到一个有着良好业绩的“便宜时买进”的策略时,有必要问问策略的作者,回测是否使用的是无存活偏差的数据。否则的话,要谨慎对待(见例3. 3 的策略)。
2. 2. 5 策略的业绩如何随时间变化而变化?
许多策略10 年前的业绩要远远好于现在,至少从回测结果来看如此。那时,采用量化策略的对冲基金并不多。并且,买卖差价也比现在大得多,所以,如果用今天的交易成本做固测,会不现实地抬高早年的收益。
有存活偏差的数据也会使得早年业绩过好。存活偏差影响早年业绩的原因在于,回测回溯的越早,消失的股票也就越多。有些股票消失是因为已经破产倒闭,一个纯多头策略在回测的早期会比当年实际的盈亏看起来好。因此,在判断一项策略的适用性时,要重点关注其最近几年的业绩,而不要被包括早年光鲜数字的总体业绩欺骗。
最后,金融市场的“状态转换”,也意味着早年的金融数据并不能简单地应用于今天的相同模型。证券市场监管的变化(如第5 章中提到的股票价格采用十进制报价或卖空规定的取消)或其他宏观经济事件(如次贷市场的崩溃),都能导致重要的制度转换。
很多具备统计思维的读者很难接受这一点。他们中的很多人会认为,数据越多,回测在统计上就越可靠。但这其实只对由平稳过程产生的金融时间序列来说才是正确的。不幸的是,由于前面提到的原因,金融时间序列显然是非平稳的。
将状态转换纳入一个复杂的“超级”模型是可能的(例7. 1 中我会讨论这个问题),但如果只要求模型相对近期的数据业绩良好,会使事情简单很多。
2. 2. 6 策略是否存在数据迁就偏差?
如果你构建一个有100 个参数的策略,完全可能通过优化参数,使历史业绩看起来非常棒。同样可能的是,该策略的未来业绩与回测结果截然不同、非常精糕。这么多参数,只是使模型与过去发生但未来不会再重现的任何偶然历史事件吻合。实际上,即使只有一两个参数(如建仓和清仓阔值),也很难避免所谓数据迁就偏差,第3 章会讨论怎样减小数据迁就偏差的影响。一般而言,策略的规则越多,模型的参数越多,就越有可能遭遇数据迁就偏差。能经得起时间考验的往往是简单的模型。
人工智能与选股·
《纽约时报》前些日子发表过一篇文章,介绍了Ray Kurzweil 先生新创立的一家对冲基金。Ray
Kurzweil 先生可称得上是人工智能领域的先驱。(这里妾感谢我的博客读者Yaser Anwar ,是他向我推荐了这篇文章。)据Kurzweil
透露,他的基金的选股决策都是由机器完成的,“……能够观察数十亿笔市场交易,从而发现那些人工无法察觉的模式”(Duhigg, 2006 )。
虽然我是一名算法交易的信徒,但是当我得知这一交易是基于“人工智能”方法的时候,我对此还是有些怀疑。
我们可以这样简单地理解人工智能( Al) ,它就是一个尝试使用包含众多参数的函数来拟合历史数据的过程。AI 常用的工具有:神经网络、决策树和遗传算法。因为包含的参数很多,我们可以相信它能够捕获到那些人类根本无法察觉到的细微模式。但是,这些模式能够持续吗?这些模式舍不会只是一些不会重复的随机噪声? AI 领域的专家们向我们保证他们有许多防范措施用以过滤那些瞬间噪声。并且,这些工具也确实在消费者营销和信用卡欺诈检测上效果显著。消费者行为和诈骗行为的模式显然都具有较长的持续期,这使得这些AI 算法即使包含大量参数也能有效运行。然而,以我的经验来看,要对金融市场进行预测,这种防范措施是远远不够的,并且对历史数据噪声的过皮拟合还会带来严重后果。事实上,我以前也建立过许多基于AI 算法的金融预测模型。每次我费尽心力所建立的那些在回测中业绩优异的模型,在之后的实际交易中的业绩却令人十分失望。主要原因可能是,相对于可以获取的大量相互独立的消费者行为和信用交易数据,我们能够获取的在统计学意义上相互独立的金融数据的数量是非常有限的。〈你可能会说,我们拥有大量分时金融数据可供使用。但实际上,这些数据是序列相关的,并不是相互独立的。)
但这并不意味着所有基于AI 的方法在进行预测时都是无效的。我使用过的有效的AI 方法通常具有以下几个特征:
基于正确的计量经济学或理论基础,而不是随机发现的模式。
.所需的参数用到历史数据较少。
·只用到了线性回归,并未使用复杂的非线性函数。
.概念上很简单。
·所有优化都必须在不舍未来未知数据的移动回顾窗口中实现,并且这种优化的效采必须不断地被未来未知的数据所证实。
只有满足了这些约束条件的交易模型,我才敢用我那少量且宝贵的历史数据进行检测。显然,“奥卡姆剃刀原理”不仅在科学上有效,在金融上也是如此。警改编自我的博客文章《人工智能和选股》,见epchan. blogspot. com/2006.
12/artificial-intelligence-and-stock. html.
2. 2. 7 策略是被机构资金管理人忽略吗?
本书的目的在于指导普通投资者从头构建量化交易业务,而并不是指导他们建立一家管理数百万美元的对冲基金,所以,我们并不关心一项策略能否容纳数百万美元。(“容量”是与此相关的一个专业术语,指在对收益率没有负面影响的前提下,一项策略所能容纳的资金量。)实际上恰恰相反,我们应当去寻找那些被大多数机构投资者忽略的策略。例如,由于交易频繁而容量很低的策略,每天只交易极少数股票的策略,持仓时段稀少的策略(如第7 章中提到的某些商品期货的季节性交易)。这样的特色策略才有利可图,因为它们还没有完全被巨型的对冲基金套利掉。