本文主要是介绍配置风险收益还是配置噪,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转 配置风险收益还是配置噪音?
作者:石川,量信投资创始合伙人,清华大学学士、硕士,麻省理工学院博士;精通各种概率模型和统计方法,擅长不确定性随机系统的建模及优化。知乎专栏:https://zhuanlan.zhihu.com/mitcshi。未经授权,严禁转载。
摘要:使用收益率序列计算夏普率、并比较不同策略时应使用科学的统计检验方法并回答正确的问题。这需要合理的先验和足够长的数据。
1、引言
资产配置是投资中最重要的课题之一。很多量化手段都被用来进行资产配置,比如人们耳熟能详的简单多样化、风险平价、波动率倒数、最小波动率等方法。
在《你真的搞懂了风险平价吗?》一文中我们指出,当资产之间相互独立时,应按照每个资产的夏普率平方来分配投资组合的风险,这能够最大化投资组合的夏普率。令 Σ 表示资产的协方差矩阵、SR_i = μ_i/σ_i 表示资产 i 的夏普率、σ_p 表示投资组合的波动率、ω 为权重向量。容易证明(下图)当投资品相互独立时(协方差矩阵是对角阵),根据夏普率平方分配风险得到的权重 ω_i 和 μ_i/(σ_i)^2 成正比。这个比例正是大名鼎鼎的凯利准则(Kelly criterion)。在资产相互独立的假设下,按此权重配置保证了投资组合的夏普率最大。
在实际资产配置中,涉及的资产一般为不同类别的大类资产(如股票、债券、商品、外汇等)或者是相关性很低的投资策略,资产间可近似假设不相关。量化配置的核心就变成是否能准确的计算不同资产的夏普率(或者其他风险、收益指标)。
下面以沪深 300、美国 7-10 年国债、标普 500 和黄金四种资产比较一下按夏普率平方分配风险配置(下文中简称为按夏普率配置)和简单多样化配置的效果。这四类资产在回测期内的表现如下(该实证例子来自 2017 年底的《主动风险预算初探》一文,因此回测期仅到 2017 年底)。
对于按夏普率配置策略,选择月频交易频率,每个月末调仓。调仓时排除最近三个月内收益率均值为负以及由于未上市因而不可交易的资产(例如在 2003 年 3 月 31 日,沪深 300 指数尚未推出,不可交易)。对于满足条件的资产,采用 20 周滚动窗口的周频收益率数据计算夏普率;按照夏普率的平方来分配风险、计算最佳的配置权重。如果当期所有资产都被排除,则在下个月空仓。非空仓时则要求每月均满仓配置,即 ω_i 之和为 1。按夏普率配置和简单多样化这两种策略的表现如下图所示。
从上述实证结果来看,按夏普率配置完胜简单多样化。按夏普率平方分配风险似乎 “理论完美、实证给力”,但现实中真的是这样吗?别着急,继续往下看。
上述实证结果的前提是能够对夏普率进行正确的计算。本文的观点是通过有限的样本数据来对总体未知的夏普率进行推断、以及检验不同策略或资产的夏普率是否有显著差异(从而赋予不同的配置权重)是非常困难的一件事(是可能的,但很困难)。
来看一个假想的例子。
2、两年 vs 二十年
使用正态分布独立构建两个策略的周频收益率序列。假设两个策略的年化真实夏普率分别为 1 和 2;周频的波动率为 1%,通过夏普率就可以计算这两个周频收益率序列各自的均值,从而获得正态分布的全部参数。假设对每个策略产生 1000 个样本点(对应约为二十年的时间)。
下图首先展示了这两个策略在前 100 个样本点(对应两年)的累积收益率。
你可能猜到了,我一定会故意找一个年化夏普率为 1 的策略在这前 100 周(对应两年)跑赢那个夏普率为 2 的策略的例子。上图中的蓝色为夏普率为 1 的策略的累积收益率;黄色为夏普率为 2 的策略的累积收益率。
如果我们把时间拉长到全部 1000 个样本点(二十年),则毫无意外的,黄色策略大幅跑赢了蓝色(注意下图中纵坐标是对数坐标)。这个例子说明,即便是年化夏普率 1 和 2 这种巨大的差异,如果只有很短的样本数据也完全能带给我们错误的结论(况且两年已经不短)。
你可能接着会说我一定是在“cherry picking”,试了半天找出了上面这么一个有违常理的例子。下面来看看多次仿真的结果。假设进行 5000 次仿真,每次仿真生成年化夏普率分别为 1 和 2 的两个策略,每个策略长度为 1000 个样本点。下图绘制了在前 n 个样本点下(横坐标为 n 的取值),夏普率为 1 的策略跑赢夏普率为 2 的策略的概率(纵坐标)。
上图表明,如果我们的样本数据很短(比如 n = 10 或 20 周,对应几个月的情况),使用样本数据夏普率来比较两个策略的错误率(即认为真实夏普率为 1 的策略比真实夏普率为 2 的策略更好)高达 30% 以上;即使是使用 100 个样本点(两年),判断的错误率也有 16.34%。(所以“cherry picking”并没有花费我很多时间。)随着样本长度增加,错误率持续降低。
这个例子说明,哪怕仅仅是希望定性的判断两个策略的夏普率孰高孰低,我们都需要足够长的样本数据。而如果想定量的比较不同策略的夏普率差异,则需要适合的统计检验。
3、夏普率检验
数学上有很多手段检验两个收益率时间序列的夏普率是否显著不同。在这方面,最早的研究大概是 Jobson and Korkie (1981)。不过该研究假设两个策略的收益率满足二元正态分布,而实际的收益率时间序列中难以满足该假设。
针对上述问题,Ledoit and Wolf (2008) 提出了改进的检验方法。本文的重点虽然不是介绍这些检验方法,但由于下文的举例研究中将使用 Ledoit and Wolf (2008) 的方法,故在本节对其简要说明。感兴趣的朋友请进一步参考原文;跳过本小节也不影响后面内容的阅读。
根据夏普率的定义,它是策略超额收益均值和其标准差的比值。而对于一个随机变量 X,其方差满足如下关系:
因此,对于(超额)收益率随机变量 r,对应的夏普率可以表达为:
换句话说,夏普率可以表达为收益率 r 的一阶矩(即均值 E[r])和非中心化的二阶矩(即 E[r^2])的函数。Ledoit and Wolf (2008) 正是采用了上述表达式,极大的简化了推导。
对于两个待比较夏普率的收益率序列 {r_i} 和 {r_n},它们的真实(但未知)夏普率之差(用 Δ 表示)是 E[r_i]、E[r_n]、E[r_i^2] 以及 E[r_n^2] 的函数(为简化表达式,令 μ = E[r]、γ = E[r^2]):
在实际中,我们只有样本数据,使用样本数据计算出的夏普率之差为:
为了对夏普率之差进行检验,我们必须知道样本夏普率之差的 standard error。为此,Ledoit and Wolf (2008) 使用了统计学中的 delta method。具体的,令 v = (μ_i, μ_n, γ_i, γ_n)’ —— 即向量 v 代表了计算两个收益率序列夏普率之差的总体(population)未知参数;令向量 \hat v 对应 v 的样本(sample)参数。Ledoit and Wolf (2008) 假设:
上式箭头上的 d 表示依分布收敛;Ψ 表示 (μ_i, μ_n, γ_i, γ_n) 的协方差矩阵(未知、需估计);T 为样本长度。由于夏普率之差 Δ 是 v 的函数,直接使用 delta method 可得:
上式就是使用样本数据计算的夏普率之差需要满足的分布。一旦我们能够得到协方差矩阵 Ψ 的相合估计 \hat Ψ,就可以利用下式求出 \hat Δ 的 standard error:
有了 standard error,再假设真实夏普率之差为 Δ = θ,便可以计算 t-statistic:
有了 t-statistic 就可以进一步计算 p-value 并以此接受或拒绝原假设 Δ = θ。问题的核心由此归结为估计协方差矩阵 Ψ。为此,Ledoit and Wolf (2008) 给出了两种方法:
第一种方法是基于渐进正态性的假设,使用 heteroskedasticity and autocorrelation (HAC) kernel estimation 对 Ψ 进行估计。在协方差矩阵的 HAC 估计方面,学术界有很多方法,Ledoit and Wolf (2008) 采用的是 Andrews (1991) 给出的方法。
第二种方法是使用自助法(bootstrap)。Ledoit and Wolf (2008) 认为对于实际中的收益率时间序列,由于分布未知且样本数量较短,前一种基于渐进正态性的方法可能无法给出正确的估计。出于这种考虑,Ledoit and Wolf (2008) 采用了 studentized bootstrap 方法(见《用 Bootstrap 进行参数估计大有可为》中的第五节)。
由于篇幅所限,本节不再展开介绍协方差矩阵 Ψ 的估计。感兴趣的朋友请参考 Ledoit and Wolf (2008)。在下一节的实验中,由于使用的假想收益率序列出自正态分布,因此使用上述第一种方法对夏普率进行检验。
4、回答正确的问题
上述夏普率差别的检验回答的是 prob(\hat Δ | Δ = θ) 的问题 —— 即在原假设 H0:Δ = θ 下,我们观测到样本夏普率差异 \hat Δ 的概率。在实际进行资产配置时,即便我们能显著的拒绝原假设,它也不是我们最关心的问题。
在利用不同夏普率进行资产配置时,正确的问题是计算 prob(Δ = θ | \hat Δ) —— 即当样本数据显示出 \hat Δ 的夏普率差异时,这两个策略真实夏普率差异是 θ 的概率。由贝叶斯法则可知,prob(Δ = θ | \hat Δ) 与 Δ = θ 的先验概率以及统计检验结果 prob(\hat Δ | Δ = θ) 的乘积成正比:
上式说明,为了计算 prob(Δ = θ | \hat Δ) 需要知道先验 prob(Δ = θ) 是多少。在一定程度上,它的取值和主观经验判断密切相关 —— 比如认为两个策略夏普率没有差异的概率最大;或者认为某个策略就是风险收益更高,因此它们年化夏普率差异为 1 的概率最大等。
下面,假设真实年化夏普率差异 θ 的取值为 0、0.5 和 1,并假设 prob(Δ = 0) = 0.6、prob(Δ = 0.5) = 0.2、prob(Δ = 1) = 0.2。我们再来看看第二节中的那两个策略。
当只有前 100 周的样本数据,通过使用本文第三节介绍的检验方法得到如下结果:
从 prob(Δ = θ) 和 prob(\hat Δ | Δ = θ) 的乘积来看,最大的是 θ = 0.0 的情况,这说明仅仅通过 100 期的表现,我们并不能认为这两个策略中谁更好,尽管实际情况是策略 2 的真实夏普率是策略 1 的两倍。
当使用全部 1000 个样本数据时,可得到的结果如下。在足够长的样本数据下(二十年),结果显示两个策略最有可能的真实夏普率差别是 θ = 1.0。
这个例子虽然从收益率序列到先验都是假想的,但通过它想要引出的观点是:
1. 评价不同资产/策略的夏普率差异(进而进行更主动的资产配置)需要一个基于统计手段的科学分析框架,并在这个框架下回答正确的问题;
2. 样本数据的长短对于总体统计量的推断至关重要,使用很短的数据计算夏普率或者资产配置也许更倾向于配置噪音。
5、结语
资产配置从来都不是一个容易的课题。
当我们知道不同策略(或者资产)真实夏普率的时候,没有理由使用简单多样化配置;充分利用不同资产的夏普率信息才可能最大化投资组合的夏普率,达到最优的风险收益特性。可惜,真实夏普率是未知的。
使用收益率序列计算夏普率并比较不同策略时应该使用科学的统计检验并回答正确的问题。这需要合理的先验和足够长的数据。而基于有限的数据计算出(不确定性极大的)夏普率来配置相当于择时。计算夏普率在一定程度上近似于计算收益率;短时间内收益率的外推性是非常差的,因此使用短时间内夏普率进行资产配置(择时)并不十分合理的。
为什么第一节中的例子里按照滚动窗口计算出的夏普率来配置显著战胜了简单多样化呢?其原因是 A 股中泾渭分明的牛、熊市 —— 任何对着 A 股的择时策略只要能躲过几波熊市都会显著提升样本内效果。在该例子中,一旦我们把 A 股从资产池中排除,对于余下几种资产,使用滚动夏普率并没有战胜简单多样化(下图)。
当使用了正确的方法和足够的数据之后,对于夏普率的判断(从而改变策略配置权重)是一种改变我们先验的低频行为。如果正确,它将会提高投资组合在未来的风险收益特征;如果错误,它则大概率是在样本内对着数据过拟合而已。
基于有限的收益率序列、滚动计算夏普率(或其他风险、收益指标)并配置资产,到底是在配置风险收益还是在配置噪音?
参考文献
Andrews, D. W. K. (1991). Heteroskedasticity and autocorrelation consistent covariance matrix estimation. Econometrica, Vol. 59(3), 817 – 858.
Jobson, J. D. and B. M. Korkie (1981). Performance hypothesis testing with the Sharpe and Treynor measures. Journal of Finance, Vol. 36(4), 889 – 908.
Ledoit, O. and M. Wolf (2008). Robust performance hypothesis testing with the Sharpe ratio. Journal of Empirical Finance, Vol. 15(5), 850 – 859.
https://en.wikipedia.org/wiki/Delta_method
来源:量信投资 作者:石川博士
-------------------------------------------------------------------------------
拓展阅读:
量化交易策略注意事项—过度历史拟合与欠拟合
资金管理:投资重要数学工具夏普比率
帮助量化入门者穿过迷茫之路-方法论
《风险中性的深度学习选股策略》
《算法导论 第三版英文版》_高清中文版
《深度学习入门:基于Python的理论与实现》_高清中文版
《深入浅出数据分析》_高清中文版
《Python编程:从入门到实践》_高清中文版
《Python科学计算》_高清中文版
《深度学习入门:基于Python的理论与实现》_高清中文版
《深入浅出数据分析》_高清中文版
《Python编程:从入门到实践》_高清中文版
这篇关于配置风险收益还是配置噪的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!