进入王的机器公众号,回复 AA 可下载本帖 3.3 中讲的完整代码。
主程序是 asset-allocation.mlx, 这是 Maltab 里面的 Live Script 的格式 (如下图),类似于 Python 的 Jupiter Notebook。( Matlab 2015 之后的版本才能用)
把大象关进冰箱里大概分三步:
打开冰箱门
进去大象
关上冰箱门
创建投资组合大概分三步:
选择资产
横截面分配
时间序列分配
选择资产是个大课题,横截面分配 (cross-sectional accloation) 指的是在组合里给有风险资产 (risky asset) 分配权重,时间序列分配 (time-series allocation) 指的是在有风险组合和无风险资产 (risk-free asset) 上分配权重。本文讲的资产配置是横截面分配。
投资组合资产配置的对话
斯蒂文:对资产回报的期望和方差估计有把握?
客户 A:有
斯蒂文:用 Mean-Variance Optimization。
客户 B:一无所知
斯蒂文:用 Equal Weight。
客户 C:我只想最小化风险。
斯蒂文:用 Global Minimum Variance。
客户 D:我只关注分散效应。
斯蒂文:用 Most-Diversified Portfolio。
客户 E:没太大把握,但对风险有些观点。
斯蒂文:用 Risk Pairty。
斯蒂文:用 Black Litterman。
先卖个关子,用下图激起读者兴趣。
本帖的内容主要参考 [1],目录如下:
第一章 - 前戏王
1.1 基本概念
1.2 向量求导
1.3 拉格朗日
第二章 - 理论皇
2.1 基础关系
2.2 MVO
2.3 EW
2.4 GMV
2.5 MDP
2.6 RB
2.7 RP
2.8 EMV
2.9 BL
第三章 - 实践狼
3.1 对齐 MVO
3.2 相互对齐
3.3 代码实现
总结
技术附录
参考资料
1.1
基本概念
在投资组合管理中,最初有资产价格的历史数据,接下来计算各种有用的统计量,比如
计算每个资产回报 (return),根据具体问题回报可以是绝对回报、相对回报或对数回报 (常见)
计算每个资产预期回报 (expected return) 和波动率 (volatility)
计算两两资产的协方差 (covariance) 或相关性 (correlation)
公式和常用符号如下:
用近 4 天阿里巴巴和京东的股票历史价格,我们算出以上所有统计量。
如果建立一个投资组合,里面只有阿里巴巴和京东,权重分别为 w1 = 60% 和 w2= 40%,那么投资组合的预期回报和波动率为
利用个股的统计量,可以计算出组合的统计量
风险可用很多变量来量化,比如方差、标准差 (波动率)、最大撤回 (maximum drawdown)、风险价值 (value at risk) 等,在本帖中我们选用波动率来代表风险。
归一化
本帖的归一化和其传统定义有所不一样,其操作如下:
这种归一化的作用使得 w 中所有元素加起来为 1,满足权重的定义。注意,下节很多模型计算出权重 w,不管它的表示形式有多么复杂,归一化 w 只需将其除以 wT1。
加权法
给定一组数 x1,x2, ..., xn,求它的平均就是一种加权法,只不过是1/n 等权重,更通用的加权法如下 (w 是权重)
上述 w 求和可等于 1,也可不等于 1 (想让权重和为 1,只要除以 w 的和即可),这种加权称为 w-加权 (w-weighted),在本帖中,我们会遇到
效用函数
投资者的目标通常通过效用函数 (utility function) 来表达 (“效用”有效地量化了投资者对不同经济结果的满意水平)。效用函数量化了回报和风险之间的权衡,而投资者总是最大化效用。举一个效用函数的例子
效用函数 = 期望回报 – λ × 期望风险
其中 λ 是风险偏好系数 (λ ≥ 0),λ 越小越偏好风险。看两种极端情况
当投资者极度偏好风险,λ = 0,效用函数中第二项为 0,投资者这时最大化“期望回报”。
当投资者极度厌恶风险,λ = +∞,效用函数中第一项微不足道,投资者这时最大化负的“期望风险”,即最小化“期望风险”。
1.2
向量求导
下图首先定义了一些向量和矩阵符号 x, y, c 和 A,一个多变量的向量函数 y(x):
在组合管理时,通常我们把组合层面的预期回报和方差用每个资产的权重表示出来,最常见是求它们 (标量) 对权重 (向量) 的偏导数。
y = cTx (y 表示组合的预期回报)
y = xTAx (y 表示组合的预期方差)
下表给出求导过程:
1.3
拉格朗日
最优规划大体分两种,无约束规划 (unconstraint) 和约束规划 (constraint),下表给出两者的表现形式
明显“约束”比“无约束”的规划问题困难,而拉格朗日量 (Lagrangian) 可以将“约束”转换成“无约束”,其定义如下:
由其定义可知,拉格朗日量是 x, α, β 的函数,α 是和不等式类型的条件 (g) 相乘,而 β 是和等式类型的条件 (h) 相乘。
试想如果对 L 只在 α, β (注意没有包括 x) 上求最大值,用 θ 来表示,那么这个 θ 其实是 x 的一个函数,记作 θ(x)。
有一个非常有意思的结论就是:无约束最小化 θ(x) 等价于有约束最小化 f(x)。证明一点也不难,如下:
证明
情况1:当 x 违反了边界条件 (gi(x) > 0, hi(x) ≠ 0)
因为只要将 αi 调到无限大,将 βi 调到无限大 (小) 当 hi 大于 (小于) 0,那么 θ(x) 最大值为正无穷。
情况2:当 x 没有违反了边界条件 (gi(x) ≤ 0, hi(x) = 0)
因为只要将 αi 调为 0,那么 θ(x) 最大值为 f(x)。
综上所述,
因此无约束最小化 θ(x) 等价于有约束最小化 f(x) 的确是等价的,数学表达形式的对比在下表
铺垫了这么多,其实就想说,一旦你碰到了棘手的约束规划问题,用拉格朗日量转化成容易解的无约束问题,两者是等价的。
2.1
基础关系
首先列出全文需要的数学符号,一旦看懂了它们具体表达的意思,后面的所有推导就简单了。
假设组合里包含 n 个资产,其权重为 w1, w2, ..., wn,那么该组合的超额回报 (随机变量) 为
组合层面的回报和风险
求 rp 的期望和方差得到组合的预期回报 μp 和预期风险 σp
组合层面的贝塔
贝塔是用来衡量个别资产相对于整个组合的波动情况。注意力放在第 i 个资产,根据其定义得到
把 n 个贝塔众向叠起成为一个列向量
组合的贝塔 βp 根据定义应该等于 1,因为自己和自己完全相关,下面推导也证实了这一点
组合层面的夏普比率
组合的夏普比率 SRp 根据定义
组合层面的敏感度
根据小节 1.2 两个“标量对向量求偏导”的式子得到组合的预期回报 μp 和预期风险 σp 对权重的敏感度
上面两式的结果都是向量,关注向量中每一个元素,用白话来解释就是
权重 wi 变化一个单位,组合预期回报变化 μi 个单位。
权重 wi 变化一个单位,组合预期风险变化 βiσp 个单位。
再根据上面两式和乘法原则 (product rules) 推出组合的夏普比率 SRp 对权重的敏感度。
一图来总结本小节的推导出来的基本式子,为后面几小节打好基础。
最大化夏普比率组合
最大夏普比率组合 (Maximum Sharpe Ratio Portoflio, MSRP) 可以将夏普比率 SRp 对权重的敏感度设为 0 求出,我们有
上面递推关系的最后说每个资产的额外回报 μi 等于其对应的贝塔 βi 和组合额外回报 μp 的乘积,这不就是著名的资本资产定价模型 (Capital Asset Pricing Model, CAPM) 吗?再对上式做恒等变化
上面递推关系的最后说当每个资产的“边际回报”和“边际风险”的比率相同时(都等于 μp/σp),该组合的夏普比率最大。
投资组合优化 (portfolio optimization) 流程是为特定的投资目标创建最佳的投资组合。优化目标可以是用来实现投资组合的最高回报、最低风险、最高夏普比率、最高分散比率等等。下面几节就分别对这几个优化目标来分配资产权重。
2.2
Mean-Variance Optimization
如果可以准确估计预期回报 (expected return) 和协方差 (covariance),马科维茨 (Markowitz) 在 1952 年 [2] 提出的“均值-方差优化” (Mean-Variance Optimization, MVO) 来最大化以下效用函数:
其中 λ 反映投资者特定的风险偏好,低 (高) 的 λ 意味着喜好 (厌恶) 风险。
在无约束的情况下,套用小节 1.2 的结果,求目标函数对 w 的一阶导并设为零,得到 MVO 模型的权重:
可以证明,在 MVO 模型下,对于每个资产,“组合回报边际贡献”和“组合风险边际贡献”的比率是相同的
而它也等于组合最优夏普比率,推导如下
因此,只要一个组合是 MVO 最优,那么它的夏普比例最大,它是个最大夏普比率组合 (Maximum Sharpe Ratio Portoflio, MSRP),MSRP 的一个最优条件就是
市场组合 (market portfolio) 其实就是解上面 MVO 的效用函数,把风险偏好系数 λ 定义成
其中 μmkt 和 σmkt 是市场组合的预期回报和预期波动率。带入权重公式得到
这样得到的权重称为“市场权重” (Market Weight, MW)。这个“市场”其实是权益投资者的基准 (benchmark),主要几个基准为
在美国市场,标普 500 中的成分股的权重
在中国市场,沪深 00 中成分股的权重
在欧洲市场,MSCI Europe 中成分股的权重
在全世界,MSCI World 中成分股的权重
很多时候,我们假设市场投资组合就是从 MVO 模型推导出来的 (不见得对,但先这么假设着),然后根据市场真实的权重 wmkt、真实的风险偏好系数 λmkt 和协方差 Ξ (比回报容易预测) 再反推出每个资产的预期回报。
MVO 模型理论上很漂亮,而且可以延伸出很多其他的模型,但是在实操中存在不少问题,比如:
对模型参数有高敏感性,需要较准确的预测出回报和风险
资产组合的权重过于集中
2.3
Equal Weight
在 1950 年到 1960 期间,当 MVO 理论被引入时,60% 股票和 40% 债券组合大致代表了美国市场可投资资产的权重,也称为“固定权重” (Fixed Weight, FW)。FW 的一个特例是“等权重” (Equal Weight, EW),顾名思义,EW 为组合中的所有资产分配相同的权重,wi = 1/n。
2.4
Global Minimum Variance
鉴于 MVO 模型对回报预测敏感性的潜在缺点,许多投资者决定转向纯粹基于风险的投资组合方法,全局最小方差 (Global Minimum Variance, GMV) 是其中一个。
GMV 模型是 MVO 模型的一个特例,其投资者非常厌恶风险 (λ 很高)。在这种情况下,“规避风险”优先于“寻求回报”。在极端情况,投资者只在乎“最小化风险”,而根本不在乎预期回报,有时可简单地假设所有资产的预期回报相等 (都等于 c)。
加上权重限制,上述问题是个约束规划问题,利用小节 1.3 的结果,引入拉格朗日量将约束规划转成无约束规划。
套用小节 1.2 的结果,求目标函数对 w 的一阶导并设为零,得到 GMV 模型的权重:
在预期超额回报等于 c 的假设下,每种资产的夏普比率与相应的波动率成反比,则最优投资组合夏普比率为:
此外,我们可以推导出来每个资产对组合的贝塔都是相等的,而且都等于 1。
2.5
Most-Diversified Portfolio
另外一个像 GMV 只预测风险而不需要预测回报的模型叫做最大化分散比率组合(Most-Diversified Portfolio, MDP) 模型 [3]。分散比率 (Diversification Ratio, DR) 指的是“加权平均资产波动率”与“总体投资组合波动率”之比。
MDP 模型也是 MVO 模型的一个特例,用到的假设是所有资产的夏普比率相等。如果该假设成立,那么所有资产的回报和风险的比率都相同(夏普比率 = 回报/风险),因此有 μ = c·σ 关系。
套用小节 1.2 的结果,求目标函数对 w 的一阶导并设为零,得到 MDP 模型的权重:
2.6
Risk Budgeting
风险预算 (Risk Budgeting, RB) 可以基于投资者对资产未来表现 (主要是风险) 的具体看法,或一些通用原则来给资产来分配风险预算,而不是给资产分配权重。下图画出两者的区别。
传统的 FW 模型把 60% 分给股票而 40% 分给债券,但是这样的一个投资组合 90% 的风险都来自股票只有 10% 的风险来自债券。那么这个组合更容易出现股票尾部风险 (tail risk)。一个风险更均衡的投资组合应该选择配置更多债券 (比如 75%) 和更少股票 (比如 25%),如下图所示。
RB 模型的思路就是通过分配风险 (上图的风险比例) 来影响权重 (上图的资产权重),通常是给风险低的资产 (如债券) 高风险配额,而风险高的资产 (如股票) 低风险配额。
接下来我们看看 RB 模型的数学公式吧,首先回顾组合风险
对于第 i 个资产,其边际风险贡献 (Marginal Risk Contribution, MRC) 是该资产权重 wi 的微小变化对组合风险 σp 所带来的影响。用数学公式表示就是对 σp 求 wi 的偏导数。
第 i 个资产的总体风险贡献 (Total Risk Contribution, TRC) 是其 MRC 乘以其权重,顾名思义,这个总体贡献一方面来自 MRC,一方面来自权重,数学表达式为:
根据 TRCi 的定义,即第 i 个资产对总体风险的贡献,可推出它们总和应该等于组合风险 sp,从数学上也可证实此关系
上式两边同时除以 σp,并定义风险预算 si 为 TRCi 的占比,可得 sT1 = 1
由上式看出 si 也类似于权重,只不过是风险上的权重,而 wi 是资产上的权重。下面给出 si 和 wi 之间的关系
在 RB 模型中,股票权重等于风险预算除以贝塔,因此,RB 模型依赖于贝塔的预测质量。归一化之后的权重等于
事先将一组风险预算分配好,例如 s = [20%, 30%, 50%],再数值解下面序列二次规划 (Sequential Quadratic Programming, SQP) 问题可以得到 RB 模型下的最佳权重
RB 模型中风险预算可以任意给定,一个很自然的想法就是,如果等量分配风险预算,RB 模型会变成什么样子?
2.7
Risk Parity
RB 方法的一个特例是为投资组合中的所有资产分配相等的风险,该方法也称为风险平价 (Risk Parity, RP)。RP 核心就是平衡组合里的风险暴露 (risk exposure)。在 [4] 白皮书中确定了两个关于资产定价的永恒和普遍原则:
资产随着时间的推移表现总是优于现金。
资产价格根据未来经济情景来折现。
这两大原则跟波动率和相关系数的预测无关。
桥水基金 (Bridgewater Associate) 在 1996 年提出了全天候 (All Weather) 资产配置策略,里面用到了风险平价,但是 RP 模型在 2011 年才被广大投资者了解和接受。通常我们认为股票和债券两者之间负相关,在经济好时股票表现好于债券,在经济差时股票表现差于债券。但这只考虑了经济这一个因素,看看另一个因素– 通胀,股票和债券的表现都是通胀升时表现好,通胀降时表现差,那它们都和通胀正相关。
全天候资产配置可不是只在经济好或通胀降时表现好,它的目标是不管什么样的大环境下表现都不错。因此桥水将市场环境分成四种情况:1) 经济增长 2) 经济放缓 3) 通胀上升 4) 通胀下降,然后给每种情况都等额分配风险,即 25% 的总风险,如下图所示 (从 [5] 中还得知桥水在每种情况下投资的资产类别):
接下来我们看看 RB 模型的数学公式吧。类比 RB,RP 给每个风险配额 si 的分配 1/n 的权重,这时组合权重为
同样可得到 RP 模型下的优化问题 (用 1/n 替代 si )
2.8
Equal Marginal Volatility
在 n 个资产中,如果两两资产之间的相关性为零时 (ρij= 0, i ≠ j),RP 模型仅根据资产的波动性分配权重,这时 RP 模型继续简化成 EMV 模型。EMV 是 Equal Marginal Volaitlity 的缩写,是“相同边际波动率”的意思。
当 ρij = 0, i ≠ j 时,风险预算 si 可简化为
根据上面连等式最后一个等式,我们可以写出 EMV 模型下的最优权重
EMV 模型根据个别资产的预期波动率 σi 分配组合权重,给波动性较高的资产赋予高权重,给波动性较低的资产赋予低权重,以使所有资产达到贡献相同边际波动率。然而,EMV 模型忽略了资产相关性对投资组合波动的贡献。
2.9
Black Litterman
Black-Litterman (BL) 模型是由 Fisher Black 和 Robert Litterman 在1992 年 [6] 中首先提出,是基于金融行业对马科维茨 (Markowitz) 模型数十年的研究和应用的基础上优化。BL 模型使用两方面的信息:
客观 - 市场投资组合的资产权重
主观 - 投资者对预期回报的看法
结合市场信息和投资者的观点,可以重新计算出“预期回报”和“协方差”,将其输入标准的 MVO 流程,得到 BL 模型下的权重。BL 模型可以总结为四个步骤:
第一步 - 定义客观市场权重
对当前市场组合权重的预期回报进行逆向工程 (reverse engineering),即把 MVO 模型的公式反过来,根据“市场权重”获得“市场隐含的”资产预期回报 П。
但预期回报 R 是一个随机变量,假设它是服从 П 为均值,τΞ 为方差的正态分布。
R ∼ N(П, τΞ)
其中 τ 是平衡主观和客观之间的参数:
当 τ → 0,BL 就是 MVO,完全客观
当 τ → +∞,BL 由投资观点决定,完全主观
第二步 - 定义主观投资观点
不同的投资者对市场有不同的观点。假设他们对 3 只股票有 3 个观点,举例如下:
由上图看出,观点可以表达在一个资产的绝对回报上,称绝对观点;也可以表达在几个资产的相对回报上,称相对观点。
从具体实例到一般建模,假定投资者对 n 只股票有 K 种观点, BL 模型假设投资者对回报的观点 P · R 也是随机变量,服从 q 为均值,Ω 为方差的正态分布
P · R ∼ N(q, Ω)
其中
P = (pkj) 是 K×n 观点矩阵
q = (q1, …, qK)T 是 K×1 观点的期望
Ω = n×n 对角矩阵,量化观点的信心水平
下面的推理是关键,理解它才能继续探索 BL 模型。联系上图,q = [-5% 7% 20%] 是投资者根据当前市场环境 (比如 2018 年12 月美股下调) 上苹果、百度和京东的回报期望得出来的。如果换一个市场环境 (比如 2017 年美股暴涨的时候),那么 q 可能等于 [10% 0% 0%],即苹果超额回报为 10%,苹果和百度打平,苹果和百度京东平均也打平。这么想的话 q 其实是跟着 R 而变化的,因此我们也可假设给定 R 后的 q 也服从正态分布,以 P · R 为均值,Ω 为方差
q|R ∼ N(P · R, Ω)
第三步 - 确定条件回报分布
建模到现在,我们假设由市场信息反映的超额回报 R,和根据回报的投资者观点 q|R 都服从正态分布
R ∼ N(П, τΞ)
q|R ∼ N(P · R, Ω)
根据技术附录A的定理可得,R|q = q* 也服从正态分布 (注意 q 是随机变量,而 q* 是某次投资者给的具体观点,不是随机变量),其均值和协方差矩阵如下:
上面两式右边的 6 项推导如下:
后三项的推导用到技术附录B的“总协方差定理 (law of total covariance)”。
将上面 6 个推导结果带入 E[R|q] 和 cov[R, R|q] 得到
上面两个变量是在得知观点 q 的条件后,回报 R 的期望和协方差。
第四步 - 计算主观组合权重
类比 MVO 模型下的权重公式,把式子里面的回报的期望和协方差 (纯靠客观、市场先验) 替换成回报的条件期望和条件协方差 (加入主观、后验),得到 BL 模型的最优权重
3.1
对齐MVO
在上节介绍的各个模型中,MVO 是始祖。下表总结和比较各种模型 (除 MVO 以外) 的主要目标和成为 MVO 模型的条件。咋一看其他模型的目标尽管不同,但通过对资产回报和风险做某些特定假设,这些模型都可成为 MVO 模型的特例。
MW → MVO
MVO 模型根据预期回报计算出最优权重,而市场组合通常假设用 MVO 这一套,对当前市场组合权重的预期回报进行逆向工程 (reverse engineering),即把 MVO 模型的公式反过来,根据“市场权重”获得“市场隐含的”资产预期回报。
EW → MVO
从 EW 到 MVO 的条件:资产的“预期回报”与“协方差矩阵的行的和”成比例
FW → MVO
从 FW 到 MVO 的条件:资产的“预期回报”与“协方差矩阵的行的加权平均值”成比例
GMV → MVO
从 GMV 到 MVO 的条件:所有资产的“预期回报”相等
MDP → MVO
从 MDP 到 MVO 的条件:所有资产的“夏普比率”相等
RP → MVO
从 RP 到 MVO 的条件:所有资产的“总体风险贡献”相等
RB → MVO
从 RB 到 MVO 的条件:所有资产的“总体回报贡献占比”等于“总体风险贡献占比”
EMV → MVO
从 EMV 到 MVO 的条件:资产的“预期回报”和“相关性加权的波动率”成比例
BL → MVO
从 BL 到 MVO 的条件:不考虑投资者的观点
3.2
互相对齐
上节是以 MVO 模型为标杆,本节分析不同模型之间的关系如何。下图有 9 个箭头,意味着就 9 对模型之间有关系。从下图的底部 EW 模型开始分析,注:
MVO 到 GMV, MDP, RP, RB 在上节已分析过
RB 到 RP,RP 到 EMV 在小节 2.7 和 2.8 已分析过
本节只分析 EMV 到 EW,MDP 到 EMV,MDP 到 GMV 这三对关系。
EMV → EW
如果所有资产的波动率相同,则 EMV 和 EW 等价。
MDP → EMV
如果平均相关系数为零,则 MDP 和 EMV 等价。
MDP → GMV
如果所有资产波动率相同,则 MDP 和 GMV 等价。
3.3
代码实现
本节设计了两个资产 (two assets) 和三个资产 (three assets) 组合,首先分析由 Matlab 代码的产出是否和理论相符,再展示相应的 Matlab 代码。
两个资产组合
先从简单的股票和债券两个资产组合开始:
股票的预期超额回报为 10%,波动率为 20%
债券的预期超额回报为 5%,波动率为 10%
它们相关系数为 -10%
根据这些假设,下表显示了每种模型的投资组合权重,回报贡献,风险贡献以及夏普比率、分散比率。
MVO, EMV, MDP 和 RP 产生一模一样的投资组合(红色标出)。注意 EW 夏普比率最差,因为它分配股票过多。GMV 夏普比率第二差,因为它分配债券过多。
三个资产组合
两个资产组合太多重样,接着分析股票、债券和信贷三个资产组合,我们会发现更多差异化的属性:
股票的预期超额回报为 10%,波动率为 20% (夏普比率 1/2)
债券的预期超额回报为 5%,波动率为 10% (夏普比率 1/2)
信贷的预期超额回报为 10%,波动率为 15% (夏普比率 2/3)
股票与债券、股票与信贷、债券与信贷的相关系数为 -10%, 30%, -30%
根据上面两表结果,我们总结了值得说道的地方(红色和蓝色标出)
EW 等权重 (独有性质),但是它的夏普比率和分散比率 (不够分散) 都是最差的。
MVO 夏普比率最高 (独有性质),各资产的“回报贡献和风险贡献比值”相等 (最大夏普比率的条件),此外“夏普比率和波动率各资产的加权平均相关性的比值”相等。
EMV 的加权波动率相等,即权重乘以波动率相等 (因为权重和波动率成反比)。
GMV 的贝塔相等 (独有性质),因此风险贡献和权重相等 (因为风险贡献等于权重和贝塔乘积)。
MDP 的分散比率最高 (独有性质),此外各资产的“波动率加权平均相关性”相等。
RP 的风险贡献相等 (独有性质)。
MATLAB 代码
下面的代码可以生成上面双资产和三资产的所有产出,建议读者对着公式看代码。
两个资产和三个资产的信息
% two assets
mu = [0.1; 0.05];
sigma = [0.2; 0,1];
rho = -0.1;
% three assets
mu = [0.1; 0.05; 0.1];
sigma = [0.2; 0,1; 0.15];
rho = [1 -0.1 0.3; -0.1 1 -0.3; 0.3 -0.3 1];
如果相关系数是标量,转成矩阵形式
if numel(rho) == 1; rho = [1 rho; rho 1]; end
计算组合预期回报和风险
portfolio_excess_return = mu' * w;
portfolio_risk = sqrt((w.*sigma)' * rho * (w.*sigma));
计算各资产贝塔和组合贝塔
VCV = (sigma*sigma') .* rho;
beta = VCV * w / portfolio_risk^2;
portfolio_beta = beta' * w;
计算回报贡献
return_constribution = mu .* w;
return_constribution = return_constribution / sum(return_constribution);
计算风险贡献
risk_constribution = w .* beta;
计算回报贡献 / 风险贡献
return_div_risk = return_constribution ./ risk_constribution;
计算组合夏普比率
portfolio_sharpe_ratio = portfolio_excess_return / portfolio_risk;
计算分散比率
portfolio_diversification_ratio = (sigma'*w) / portfolio_risk;
计算加权波动率
weighted_volatility = w .* sigma;
计算波动率加权平均相关性
volatility_weighted_average_correlation
= rho * (weighted_volatility ./ sum(weighted_volatility));
计算夏普比率 / 波动率加权平均相关性
sharpe_ratio_per_volatility_weighted_average_correlation
= (mu./sigma) ./ volatility_weighted_average_correlation;
计算 EW 权重
weight = ones(size(volatility)) / numel(volatility);
计算 MVO 权重
weight = VCV \ expected_excess_return;
weight = weight / sum(weight);
计算 EMV 权重
weight = 1 ./ volatility;
weight = weight / sum(weight);
计算 GMV 权重
weight = VCV \ ones(size(volatility));
weight = weight / sum(weight);
计算 MDP 权重
weight = VCV \ volatility;
weight = weight / sum(weight);
计算 RB 权重
VCV = v*v'.*rho;
w0 = ones(size(v)) / numel(v);
A = ones(size(v))'; B = 1;
LB = zeros(size(v)); UB = ones(size(v));
weight = fmincon( @(w) ...
sum((w.*(VCV*w)/((w.*v)'*rho*(w.*v)) - s).^2), ...
w0, A, B, [], [], LB, UB );
weight = weight / sum(weight);
计算 RP 权重
s = ones(size(volatility)) / numel(volatility);
weight = risk_budgeting( volatility, correlation, s );
三个不变性
继续用三资产组合为例,在某些情况下,这些模型的权重可能会发生变化,比如在投资组合中引入相同或类似资产,或者加杠杆。我们希望看到的是这些权重在具有以下三种不变性。
杠杆不变性 (leverage invariance):非杠杆资产的投资组合权重不应受某些杠杆的影响资产。比如,信贷杠杆上了 2 倍,三个资产的权重不变。
复制不变性 (duplication invariance):在原先的组合里加入一个同样信贷资产,三个资产的权重保持不变。
多余不变性 (redundancy invariance):在原先的组合里加入一个类似合成资产,里面股票:债券:信贷= 6:3:1,三个资产的权重保持不变。
首先看杠杆不变性的结果:
旧权重是之前算出来的,新权重是考虑信贷加了两倍算出来的。但为了苹果比苹果,我们需要计算一个有效 (effective) 新权重。用 [w1 w2 w3] 代表新权重,以新权重下的两倍杠杆为例,可以想成你又额外借了 w3 的信贷,因此我们有
把上面公式用在 EW 上,[33% 33% 66%] 做完归一化的确等于 [25% 25% 50%]。
从上表可知,MVO, EMV, MDP 和 RP 具有“杠杆不变性”,而 EW 和 GMV 不具有。
接着看复制不变性的结果:
注意:信贷* 和信贷的复制品,显然它们被分配的权重应该一样。结合两者就得到有效新权重下的信贷权重。以 MVO 举例,18%+18% = 36%。
从上表可知,MVO, GMV 和 MDP 具有“复制不变性”,而 EW, EMV 和 RP 不具有。
接着看多余不变性的结果:
注意:6/3/1 可看成是个合成资产(股票:债券:信贷 = 6:3:1),其下的权重应该按 6/3/1 的比率分配到有效新权重的股票、债券和信贷上。以 EMV 举例 (27% 是合成资产下的权重),
股票:17% + 27%×0.6 = 33%
债券:34% + 27%×0.3 = 42%
信贷:22% + 27%×0.1 = 25%
从上表可知,MVO, GMV 和 MDP 具有“复制不变性”,而 EW, EMV 和 RP 不具有。
最后总结这三种不变性于下表。
由此得出
EW 不符合全部三种不变性,因此在加入新的未知的知产时可能会出问题。
EMV 和 RP 虽然在工业界很收欢迎,但它们不符合复制和多余不变性,因此在处理相似资产时要多加留意。
GMV 不符合杠杆不变性,有个处理方式是在用 GMV 之前先把每个资产预处理有相似的波动率水平,之后再在时间序列分配中调整整个组合的波动率 (volatility targeting)。
MVO 和 MDP 符合全部三种不变性,鲁棒性不错。
本贴介绍了根据不同投资者目标 (最高回报、最低风险、最高夏普比率,最高分散比率等等) 的资产分配模型,MVO 模型是开山鼻祖,其他模型在某些特定假设下用些数学技巧可以“成为” MVO 模型。此外,我们用代码实现了简单的双资产和三资产组合,并发现了 MVO 和 MDP 符合杠杆不变性、复制不变性和多余不变性。未来可以用在不同时期的真实的数据来评估各个模型的表现。
注意:本帖介绍各种模型时没有介绍约束条件,实际构建投资组合时还需要考虑权重上下限、跟踪误差、换仓约束、资产数目等等。
技术附录
假设列向量 X 被分解成 p 维列向量 X1 和 k 维列向量 X2,即 X = [X1;X2],如果 X1 和 X1|X2 都服从正态分布,那么 X 也服从正态分布;反之如果 X 服从正态分布,其均值和协方差表示如下,
那么 X1 的条件分布 X1|X2 = a 也服从正态分布,其均值向量和协方差矩阵为
对于随机变量 X, Y, Z,如果知道以 Z 的条件随机变量 X|Z, Y|Z 和 X,Y|Z,则有以下关系:
证明:
参考资料