资产配置

主程序是 asset-allocation.mlx, 这是 Maltab 里面的 Live Script 的格式 (如下图),类似于 Python 的 Jupiter Notebook。( Matlab 2015 之后的版本才能用)

0

引言

把大象关进冰箱里大概分三步:

  1. 打开冰箱门
  2. 进去大象
  3. 关上冰箱门

创建投资组合大概分三步:

  1. 选择资产
  2. 横截面分配
  3. 时间序列分配

选择资产是个大课题,横截面分配 (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。

客户 F:没太大把握,但对回报有些观点。

斯蒂文:用 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.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),λ 越小越偏好风险。看两种极端情况

  1. 当投资者极度偏好风险,λ = 0,效用函数中第二项为 0,投资者这时最大化“期望回报”。
  2. 当投资者极度厌恶风险,λ = +∞,效用函数中第一项微不足道,投资者这时最大化负的“期望风险”,即最小化“期望风险”。

1.2

向量求导

下图首先定义了一些向量和矩阵符号 x, y, cA,一个多变量的向量函数 y(x)

在组合管理时,通常我们把组合层面的预期回报和方差用每个资产的权重表示出来,最常见是求它们 (标量) 对权重 (向量) 的偏导数。

  1. y = cTx (y 表示组合的预期回报)
  2. 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

理论皇

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 模型理论上很漂亮,而且可以延伸出很多其他的模型,但是在实操中存在不少问题,比如:

  1. 对模型参数有高敏感性,需要较准确的预测出回报和风险
  2. 资产组合的权重过于集中

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] 白皮书中确定了两个关于资产定价的永恒和普遍原则:

  1. 资产随着时间的推移表现总是优于现金。
  2. 资产价格根据未来经济情景来折现。

这两大原则跟波动率和相关系数的预测无关。

桥水基金 (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

实践狼

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 );

三个不变性

继续用三资产组合为例,在某些情况下,这些模型的权重可能会发生变化,比如在投资组合中引入相同或类似资产,或者加杠杆。我们希望看到的是这些权重在具有以下三种不变性。

  1. 杠杆不变性 (leverage invariance):非杠杆资产的投资组合权重不应受某些杠杆的影响资产。比如,信贷杠杆上了 2 倍,三个资产的权重不变。
  2. 复制不变性 (duplication invariance):在原先的组合里加入一个同样信贷资产,三个资产的权重保持不变。
  3. 多余不变性 (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 符合全部三种不变性,鲁棒性不错。

4

总结

本贴介绍了根据不同投资者目标 (最高回报、最低风险、最高夏普比率,最高分散比率等等) 的资产分配模型,MVO 模型是开山鼻祖,其他模型在某些特定假设下用些数学技巧可以“成为” MVO 模型。此外,我们用代码实现了简单的双资产和三资产组合,并发现了 MVO 和 MDP 符合杠杆不变性、复制不变性和多余不变性。未来可以用在不同时期的真实的数据来评估各个模型的表现。

注意:本帖介绍各种模型时没有介绍约束条件,实际构建投资组合时还需要考虑权重上下限、跟踪误差、换仓约束、资产数目等等。

技术附录

A

联合和条件正态分布

假设列向量 X 被分解成 p 维列向量 X1 和 k 维列向量 X2,即 X = [X1;X2],如果 X1 和 X1|X2 都服从正态分布,那么 X 也服从正态分布;反之如果 X 服从正态分布,其均值和协方差表示如下,

那么 X1 的条件分布 X1|X2 = a 也服从正态分布,其均值向量和协方差矩阵为

B

总协方差定理

对于随机变量 X, Y, Z,如果知道以 Z 的条件随机变量 X|Z, Y|Z X,Y|Z,则有以下关系:

证明:

本文分享自微信公众号 - 王的机器(MeanMachine1031),作者:王圣元

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-12-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 麦肯锡教我的思考武器

    这篇文章不是关于金工-量投-机学的,为什么跨度这么大写这篇文章,原因是硬实力 (比如专业) 和软实力 (比如管理) 两手都要抓,而当你职位越来越高时,软实力也就...

    用户5753894
  • 信用风险建模 in Python 系列 6 - 阈值模型校正

    链接:https://pan.baidu.com/s/1FVku6WefSBfhRwWILiaCrw

    用户5753894
  • 金融工程高度概览

    整个流程图分为 6 大模块,除了开始的“数据参数”模块,后 5 个模块都有相对应的函数。

    用户5753894
  • 头条测试一面二面三面

    a==b与a.equals(b)的区别(因为不会,所以面完搜了一下,发现应该是JAVA里的问题,本人学习的是C++)

    牛客网
  • Vue.js动态组件解析

    什么是动态组件绑定?简单的说,就是几个组件放在一个挂载点下,然后根据父组件的某个变量来决定显示哪个,或者都不显示。

    Dunizb
  • 揭秘微信「看一看」 是如何为你推荐的

    ? 作者:harryzhong,腾讯 WXG 应用研究员 在过去的几年里,质量控制作为微信看一看推荐的基石,我们在不断的迭代升级中积累了一定的技术和经验。本...

    腾讯技术工程官方号
  • 【技术沙龙】智能钛机器学习平台TI-ONE在工业和金融行业的落地

    凭借多年的技术积累和完善的产品矩阵,腾讯云AI在计算机视觉、自然语言处理和智能语音方面全面布局,持续推动人工智能技术在各产业领域的应用落地。

    腾讯智能钛AI开发者
  • 【Vue原理】Mixin - 白话版

    今天我们用白话文解读 mixin 的工作原理,轻松快速理解 mixin 内部工作原理。你说,你只懂怎么用的,却不懂他内部是怎么工作的,这样也不太行。

    神仙朱
  • linux 监控 TCP状态数量的推荐方法

    /proc/net/tcp 第四列 01代表了 TCP_ESTABLISHED 06代表代表time_wait 08代表close_wait

    葫芦
  • 1067: [SCOI2007]降雨量

    1067: [SCOI2007]降雨量 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 2148  Solved...

    HansBug

扫码关注云+社区

领取腾讯云代金券