夏普率
在投资领域,夏普率(Sharpe Ratio)是人们耳熟能详的一个概念。它因为同时考虑了回报和风险而成为衡量一个策略,或者基金业绩的核心指标之一。最初在 William Sharpe 提出这个概念的时候(Sharpe 1966),它的名字叫 Reward-to-Variability Ratio (R/V),这个名字很好的反映了它的实质;不过后来,这个名字被人们谈及的越来越少,人们更愿意使用“夏普率”这个叫法。
在 William Sharpe 自己解读夏普率的一篇文章(Sharpe 1994)中,它指出夏普率分为事前夏普率(the Ex Ante Sharpe Ratio)以及事后夏普率(the Ex Post Sharpe Ratio)。前者使用对未来单期收益率均值和标准差的预测进行计算,而后者使用历史数据计算。通常,当我们谈及夏普率的时候,默认的都是后者。
按照 Sharpe (1994) 的定义,假设 R_t 为 t 期的收益率,R_f 为无风险收益率(假设为常数),则使用 t = 1 到 T 这段长度的历史数据计算的(事后)夏普率为:
用白话说,如果标准差可以理解为风险的代理指标后,那么夏普率度量的就是风险调整后的超额收益。在上面的公式中,无论是夏普率、收益率均值还是标准差,它们的符号上面都有一个上标,说明它们是从样本数据中估计出来的数据。它是否能准确的衡量过去一段时间一个策略或一支基金的真实夏普率呢?本文的第三节会回答这个问题。
今天公众号就带你来聊聊夏普率。文中每一章节都会围绕着夏普率这个概念,但每节独立自成一个方面。因此我们称它为“夏普率随想”。希望读完能带给你一点点启发,重新审视这个“我们自认为理解的不能不能的了”的夏普率。
直观上认识夏普率
谈到夏普率,首先要说明计算它的频率。人们通常所说的夏普率是年化夏普率。那么,对于一个量化投资策略,年化夏普率多大才比较好的?一般来说,如果一个策略在回测中的年化夏普率(扣除各种交易成本后)小于 1,它就没有什么继续被研究的价值了(确实残酷)。很多量化对冲基金往往要求回测中的年化夏普率超过 2;更有甚者(某家全球上著名的量化对冲基金)仅仅考虑年化夏普率大于 3 的策略。
年化夏普率为 1、2 甚至是 3 是什么概念呢?下图是假象的三条净值曲线。它们都是假设投资长度为十年,并使用正态分布随机生成的月频收益率(均值为 2%),然后按照给定的年化夏普率反推出收益率的标准差。
当年化夏普率为 3 时,净值曲线基本上是一条直线了;当年化夏普率为 2 时,它的净值曲线也仅在局部有一些小的波动;当年化夏普率为 1 时,它的净值曲线在全局范围内呈现出更大的波动;即便如此它也是个靠谱的赚钱策略(想想 A 股各大指数长期以来可怜的夏普率)。
上面的例子告诉我们,当(年化)夏普率为 3 的时候,净值曲线基本上就是一直涨,可想而知其难度。但是我们往往在市场上能看到一些策略,它们计算出来的(年化)夏普率往往比 3 还高,有些还高的离谱。这个现象背后的一种解释是,频率越高的策略,夏普率可能越高;特别是对于那些高频策略,几乎每天赚钱的那种,两位数的夏普率都绝非罕见。
我绝不否认市场中有这种“神一般的存在”,但是超高夏普率的背后恐怕还有一个更合理的解释 —— 年化的时候计算错了,过度的高估了年化夏普率。为了说明这一点,下面就来看看夏普率的统计特性。
夏普率的统计特性
在本文第 1 节介绍(事后)夏普率的公式中,夏普率(包括计算它的收益率均值和标准差)是从样本数据中估计出来的数据;它仅仅是某个策略或者基金业绩在过去一段时间内真实(但未知)的夏普率的一个估计。
它最致命的问题是没有考虑单期收益率之间的相关性(下面英文是 Sharpe 1994 中谈及夏普率计算公式中没有考虑相关性的部分),这将造成样本夏普率和真实夏普率之间的误差。更重要的是,在使用高频夏普率来推导年化夏普率的时候,不考虑单期收益率的相关性将造成年化夏普率估计的巨大误差。
为了定量分析样本夏普率和真实夏普率之间的误差,以及从高频(比如日频、周频、月频)夏普率推算低频(比如年化)夏普率时的误差,Lo (2002) 研究了夏普率的统计性质。
对于最简单的情况 —— 假设单期收益率满足 IID 分布,则样本夏普率对真实夏普率估计的渐近分布满足:
其中 μ、σ 和 SR 分别表示单期收益率的真实均值、标准差和以它们计算出的真实夏普率。由此可知,样本夏普率的 Standard Error 满足:
在实际使用时,可以在上式中将真实夏普率替换为样本夏普率。下图给出了不同夏普率和样本个数对应的夏普率估计误差(Lo 2002)。夏普率越高,它的 Standard Error 越大;而当样本个数小的时候,这个问题更加严重。所以,如果有人只给你看了很短的业绩,并告诉你一个很高的夏普率,那就要小心了。
如果单期收益率不满足 IID 分布,则估算样本夏普率的误差更复杂一些,但仍可以使用 generalized method of moments 方法求解,具体参见 Lo (2002)。
再来看看用高频夏普率推算低频夏普率的情况。假如我们有使用月频收益率计算出的夏普率,当把它换算成年化夏普率的时候,常见的做法是乘以根号 12。然而,这种做法正确的前提是,单期(这里是月频)收益率满足 IID。一旦这个假设不成立,上述计算方法就有不小的问题。
首先仍然考虑最简单的 IID 情况。令 SR(q) 表示 q 期真实夏普率,Lo (2002) 给出如下结果:
下面来考虑非 IID 的情况,即单期收益率之间存在自相关性(可能是正的,也可能是负的)。假设收益率满足平稳性、令 ρ_k 表示间隔 k 期的自相关系数,则有:
可见,当单期收益率之间不满足 IID 时,计算 q 期夏普率就不能简单的乘以根号 q 了,而是要计算一个系数 η(q),它和收益率的各阶自相关系数有关。对于最简单的 AR(1) 情况,η(q) 和期数 q 以及自相关系数 ρ 的关系可以从下面这个表中感受一二。
表中 ρ = 0 对应的是根号 q。当 ρ > 0 时(收益率正相关),η(q) 小于根号 q;说明当收益率正相关时,按照传统方法计算的 q 期夏普率高估了其真实值。当 ρ < 0 时(收益率负相关),η(q) 大于根号 q;说明当收益率负相关时,按照传统方法计算的 q 期夏普率低估了其真实值。
这样的结果不难理解。当计算 q 期夏普率的时候,对于 IID 的情况,收益率按 q 增长,而标准差随根号 q 增长,因此最终夏普率按照 q/sqrt(q) = 根号 q 增长。但是当收益率之间有正(负)相关时,标准差的增长要快(慢)于 IID 的情况,导致 η(q) 大(小)于根号 q。
总结一下,本节的介绍说明以下两点:
1. 我们不能想当然的认为使用历史收益率计算的夏普率就是对过去一段真实夏普率的准确估计,它们之间的误差与夏普率的大小以及样本个数有关。 2. 在推断年化夏普率时,常用的方法是用更高频收益率计算的夏普率乘以根号 q。由于没有考虑收益率之间的相关性,这么做很可能大错特错。Lo (2002) 使用了一些华尔街的公募和私募基金的数据说明,当正确度量夏普率后,现有按照夏普率的基金排名可能会发生很大的变化。 最后,对于那些想要进一步研究 Lo (2002) 成果的小伙伴,需要指出的是他在研究 q 期夏普率的统计特性时,使用的是单期的百分比收益率而非对数收益率,因此结果是一种近似。Lin and Chou (2003) 指出当投资期限很长时,不考虑复利的影响也会在计算夏普率时产生误差。
用夏普率检验策略是否有效
最后来聊聊随想的最后一个部分。有效市场假说拉开了学术界和业界关于市场有效性长达数十年的探讨。如果将“有效性”这个概念放在一个策略上又如何呢?
Disclaimer:本节涉及的观点和数学“推演”都属于猜想,只是在经验上符合我们的主观感受,但并未经严格的数学证明论证。欢迎各位小伙伴就这里的观点讨论,目的是搞清楚这背后的真相。
我经常在券商报告上看到这样的论调:首先通过一个目标算法找到了一个策略 A,回测中得到了不错的效果;然后又在 A 的基础上加上了某种 ensemble 算法得到了策略 B,并指出这个策略 B 取得了比 A 更加优异的风险收益比(即夏普率)。
这个结果说明策略 B 比策略 A 更加有效。换句话说,如果一个策略可以通过进一步的择时或者其他直接作用于该策略收益率序列的任何算法,使得它的夏普率进一步提高,那么这个策略就不是有效的。基于此,我们提出以下猜想:
一个有效的策略应该是时序收益率均值为正,且每期收益率之间满足 IID 分布,它的夏普率无法通过其他任何 ensemble 函数提高。
引理:假设一个非有效的策略,它的时序收益率序列由 {f(t), t = 0, 1, …} 表示。则存在一个作用于长度为 n 的历史收益率序列 {f(t-n), …, f(t)} 的 ensemble 函数 h,并令 g(t) = h({f(t-n), …, f(t)}),则以 {g(t), t = 0, 1, …} 为收益率序列的新策略比原始策略有更高的夏普率:SR(g(t)) > SR(f(t))。
夏普率衡量了一个策略的随机性,因此只要是存在随机性的交易系统,它的夏普率就一定有上界。如果一个策略的各期收益率之间有相关性,那么由引理可以找到一个 ensemble 函数,使改进后的策略有更高的夏普率,直到各期收益率之间满足 IID。如果这个关于有效策略的猜想是对的,那么当我们想改进一个策略时,可以考虑从分析它收益率的序列相关性入手。
这和 efficient frontier (下图)有些异曲同工。当考虑了无风险收益后,有效边界正是下图中的黄色射线,它又称为资本配置线(capital allocation line)。它说明任何有效的资产组合都应该是无风险收益和 tangent portfolio 的线性组合,它追求给定风险下的最大期望收益。
这条黄线说明投资组合超额收益(收益减去无风险收益率)的增长随标准差是线性的,即黄线上的所有点都有相同的斜率;而根据定义,这个斜率正是夏普率。因此,有效投资组合正是为了最大化组合的夏普率。
结语,为了更好的出发
如果问 Willian Sharpe 本人关于夏普率,最重要的一点是什么,我猜他会说:夏普率描述的是一个零额投资策略单位风险对应的期望收益,两个投资品的期望收益之差(按无风险利率借来钱,投资到风险资产)构成了这样一个策略,这就是为什么在计算夏普率的时候必须要减去无风险利率。事实上,Sharpe 确实反复强调过这一点(Sharpe 1994):
“The Sharpe Ratio is designed to measure the expected return per unit of risk for a zero investment strategy. The difference between the returns on two investment assets represents the results of such a strategy. The Sharpe Ratio does not cover cases in which only one investment return is involved.”
举个例子,假如有两个投资品 X 和 Y,前者期望收益 5%,标准差 10%;后者期望收益 8%,标准差 20%。另外假设无风险收益率为 3%。如果我们错误的计算风险收益比 —— 即使用投资品的收益(而非减去无风险的超额部分)直接除以标准差,那么得出的结论是 X (比值是 5%/10% = 0.5)强于 Y(比值是 8%/20% = 0.4)。但是根据夏普率,X (夏普率 0.2)应该弱于 Y(夏普率 0.25)。
如果有个投资品想在 X 和 Y 之间选择,目标是在 10% 的风险下获得更高的收益。如果按照错误的风险收益比,他会选择 X,并获得 5% 的期望收益。而如果按照夏普率度量,他会选择 Y(因为 Y 的夏普率高于 X),并把一半的资金投资于无风险、另一半投资于 Y,这会让他在 10% 的风险下获得 5.5% 的期望收益,优于前一种选择。这说明夏普率才是正确的度量。
在 Willian Sharpe 谈及夏普率的著名文章 The Sharpe Ratio(Sharpe 1994)中,在这个大标题的下面还有一行小字:
“Properly used, it can improve investment management.”
译:使用得当,它[夏普率]可以提高投资管理水平。
无疑,这里面核心的前提条件是使用得当。面对这个在市场中天天被我们说、为我们用的风险收益度量指标,也许是时候重新审视一番、并问问我们自己到底用对了没有。
参考文献
1、Lin, M.-C. and P.-H. Chou (2003). The pitfall of using Sharpe Ratio. Finance Letters, Vol. 1, 84 – 89.
2、Lo, A. W. (2002). The statistics of Sharpe Ratios. Financial Analysts Journal, Vol. 58(4), 36 – 52.
3、Sharpe, W. F. (1966). Mutual fund performance. Journal of Business, Vol. 39(1), 119 – 138.
4、Sharpe, W. F. (1994). The Sharpe Ratio. Journal of Portfolio Management, Vol. 21(1), 49 – 58.
知识在于分享
在量化投资的道路上
你不是一个人在战斗