【量化课堂】MPT 模型的解析解(上)
导语:本篇文章将用拉格朗日乘子法来计算马科维兹的方差最小化问题。
作者:肖睿
编辑:宏观经济算命师
本文由JoinQuant量化课堂推出,难度为进阶(上),深度为 level-1。
阅读本文前需要掌握线性代数、多元微积分、MPT 模型以及拉格朗日乘子法的基础知识。
前言
量化课堂的 MPT 模型文章介绍了马科维兹的现代资产配置理论 (MPT, modern portfolio theory) 的模型和理论,其中讲解了重要的有效前沿和资本市场线的重要概念,但并没有解释有效前沿的计算方法。在拉格朗日乘子文章中我们介绍了使用拉格朗日乘子 (Lagrange multiplier) 来解决非线性规划问题的方法,并提到了该方法可以用来解决现代资产配置理论中的优化问题,这便是本篇文章探讨的主题。
MPT 模型可以分没有无风险资产和有无风险资产两个版本,这两个版本的解决思路相似但在细节上有一些差异,故本系列文章分为上下两篇,上篇主要探讨没有无风险资产的情况,而下篇解决有无风险资产的情况。本篇为上篇。
回顾
MPT 模型
在 MPT 模型中,我们假设金融市场上有风险资产 i∈{1,2,…,n}i∈{1,2,…,n}i∈{1,2,…,n},其中的每个资产的收益率都随机变量 ririri 表示,有数学期望值 ri¯¯¯¯=E[ri]ri¯¯¯¯=E[ri]ri¯=E[ri] 以及标准差 σi=Var[ri]−−−−−−√σi=Var[ri]−−−−−−√σi=Var[ri]。这些资产之所以称为风险资产,因为它们的标准差 σiσiσi 都大于零。在没有无风险资产的 MPT 模型中,我们想要按照一定权重将资金配置于风险资产,如果分配于资产 iii 的权重是 wiwiwi,那么 w=(w1,…,wn)w=(w1,…,wn)w=(w1,…,wn) 代表整个资产组合的配置比重。注意这里必须满足 ∑ni=1wi=1∑ni=1wi=1∑i=1nwi=1;当 wi< 0wi< 0wi< 0 时意味着要卖空第 iii 种金融资产。
我们用 rwrwrw 表示按照 www 配置资产得出的资产组合的收益率变量。经过计算,发现 rwrwrw 的期望值和方差分别满足以下等式
E[rw]Var[rw]=∑i=1nwiri¯¯¯¯=∑i=1n∑j=1nwiwjCov(ri,rj).
E[rw]Var[rw]=∑i=1nwiri¯¯¯¯=∑i=1n∑j=1nwiwjCov(ri,rj).
E[rw]=∑i=1nwiri¯Var[rw]=∑i=1n∑j=1nwiwjCov(ri,rj).
根据分散风险的方针,资产配置的一个目标是在固定预期收益的前提条件下把收益率的方差最小化,也就是对于一个固定的期望收益 μμμ 解决下面的最小化问题
最小化满足∑i=1n∑j=1nwiwjCov(ri,rj)∑i=1nwiri¯¯¯¯=μ∑i=1nwi=1.
最小化满足∑i=1n∑j=1nwiwjCov(ri,rj)∑i=1nwiri¯¯¯¯=μ∑i=1nwi=1.
最小化∑i=1n∑j=1nwiwjCov(ri,rj)满足∑i=1nwiri¯=μ∑i=1nwi=1.
得到一个最小的方差 V(μ)V(μ)V(μ),对应着标准差 σ(μ)=V(μ)−−−−√σ(μ)=V(μ)−−−−√σ(μ)=V(μ)。所有的期望和最小标准差的二元组 (μ,σ(μ))(μ,σ(μ))(μ,σ(μ)) 组成一条曲线,叫做有效前沿 (efficient frontier)。本文将致力于解决上述的方差最小化问题,并计算出有效前沿的闭合式公式。
拉格朗日乘子法
在拉格朗日乘子的文章中,我们提到了一个重要的定理:
定理. 设 n,m∈Nn,m∈Nn,m∈N。对于 i∈{1,2,…,m}i∈{1,2,…,m}i∈{1,2,…,m},gigigi 和 fff 都是 Rn→RRn→RRn→R 的 C1C1C1 函数。并且设 ci∈Rci∈Rci∈R。考虑规划问题
最小化满足f(x)gi(x)=ci, ∀i=1,2,…,mx∈Rn.
最小化满足f(x)gi(x)=ci, ∀i=1,2,…,mx∈Rn.
最小化f(x)满足gi(x)=ci, ∀i=1,2,…,mx∈Rn.
定义函数
L(x,λ)=f(x)−λ1(g1(x)−c1)−⋯−λm(gm(x)−cm),
L(x,λ)=f(x)−λ1(g1(x)−c1)−⋯−λm(gm(x)−cm),
L(x,λ)=f(x)−λ1(g1(x)−c1)−⋯−λm(gm(x)−cm),
这里 λ=(λ1,λ2,…,λm)∈Rmλ=(λ1,λ2,…,λm)∈Rmλ=(λ1,λ2,…,λm)∈Rm。如果 x˜∈Rnx˜∈Rnx~∈Rn 是上述规划问题的极值点,那么必定存在某个 λ˜∈Rmλ˜∈Rmλ~∈Rm 满足
∇L(x,λ)=0.
∇L(x,λ)=0.
∇L(x,λ)=0.
我们就将使用这个定理来解决 MPT 模型的方差最小化问题。
解决马科维兹最优化问题
我们稍微更改原本的问题:
最小化满足12Var[rw]=12∑i=1n∑j=1nwiwjCov(ri,rj)∑i=1nwiri¯¯¯¯=μ∑i=1nwi=1.
最小化满足12Var[rw]=12∑i=1n∑j=1nwiwjCov(ri,rj)∑i=1nwiri¯¯¯¯=μ∑i=1nwi=1.
最小化12Var[rw]=12∑i=1n∑j=1nwiwjCov(ri,rj)满足∑i=1nwiri¯=μ∑i=1nwi=1.
目标函数中的 121212 不改变问题的本质,但它可以让后边的计算过程更干净。上边的问题也可以改写成矩阵的形式
最小化满足12wTΣwwTr=μwT1n=1
最小化满足12wTΣwwTr=μwT1n=1
最小化12wTΣw满足wTr=μwT1n=1
在这些符号中,
Σ=⎡⎣⎢⎢Cov(r1,r1)⋮Cov(rn,r1)…⋱…Cov(r1,rn)⋮Cov(rn,rn)⎤⎦⎥⎥; w=⎡⎣⎢⎢w1⋮wn⎤⎦⎥⎥; r=⎡⎣⎢⎢r1¯¯¯¯¯⋮rn¯¯¯¯¯⎤⎦⎥⎥; 1n=⎡⎣⎢⎢1⋮1⎤⎦⎥⎥.
Σ=⎡⎣⎢⎢Cov(r1,r1)⋮Cov(rn,r1)…⋱…Cov(r1,rn)⋮Cov(rn,rn)⎤⎦⎥⎥; w=⎡⎣⎢⎢w1⋮wn⎤⎦⎥⎥; r=⎡⎣⎢⎢r1¯¯¯¯¯⋮rn¯¯¯¯¯⎤⎦⎥⎥; 1n=⎡⎣⎢⎢1⋮1⎤⎦⎥⎥.
Σ=[Cov(r1,r1)…Cov(r1,rn)⋮⋱⋮Cov(rn,r1)…Cov(rn,rn)]; w=[w1⋮wn]; r=[r1¯⋮rn¯]; 1n=[1⋮1].
当然,我们知道 Cov(ri,ri)=Var[ri]Cov(ri,ri)=Var[ri]Cov(ri,ri)=Var[ri]。
在解题之前我们确认这个规划问题的极小点是存在的。首先,目标函数(也就是方差)是一个凸函数:对于任何两个随机变量 XXX 和 YYY 有
Var[12X+12Y]=14Var[X]+14Var[Y]+12Cov(X,Y)≤14Var[X]+14Var[Y]+12σXσY≤(∗)12Var[X]+12Var[Y]
Var[12X+12Y]=14Var[X]+14Var[Y]+12Cov(X,Y)≤14Var[X]+14Var[Y]+12σXσY≤(∗)12Var[X]+12Var[Y]
Var[12X+12Y]=14Var[X]+14Var[Y]+12Cov(X,Y)≤14Var[X]+14Var[Y]+12σXσY≤(∗)12Var[X]+12Var[Y]
步骤 (∗)(∗)(∗) 是因为
⟹14Var[X]+14Var[Y]−12σXσY=(12σX−12σY)2≥014Var[X]+14Var[Y]≥12σXσY
⟹14Var[X]+14Var[Y]−12σXσY=(12σX−12σY)2≥014Var[X]+14Var[Y]≥12σXσY
14Var[X]+14Var[Y]−12σXσY=(12σX−12σY)2≥0⟹14Var[X]+14Var[Y]≥12σXσY
在此之上,规划问题的可行集 Δ={w1,…,wn∈R:∑ni=1wiri¯¯¯¯=μ,∑ni=1wi=1}Δ={w1,…,wn∈R:∑ni=1wiri¯¯¯¯=μ,∑ni=1wi=1}Δ={w1,…,wn∈R:∑i=1nwiri¯=μ,∑i=1nwi=1} 是由两个线性约束决定的,因此它是一个凸集。根据数学规划简介所述,一个凸函数在一个凸集上必定有极小点,即 minw∈Δ12Var(rw)minw∈Δ12Var(rw)minw∈Δ12Var(rw) 是有解的。以上逻辑所涉及到的理论会在以后的凸优化文章中更详细地解释。
下面我们着手解决上述规划问题。根据拉格朗日乘子定理,我们定义函数
L(w,λ1,λ2):=∑i=1n∑j=1nwiwjCov(ri,rj)−λ1(∑i=1nwiri¯¯¯¯−μ)−λ2(∑i=1nwi−1).
L(w,λ1,λ2):=∑i=1n∑j=1nwiwjCov(ri,rj)−λ1(∑i=1nwiri¯¯¯¯−μ)−λ2(∑i=1nwi−1).
L(w,λ1,λ2):=∑i=1n∑j=1nwiwjCov(ri,rj)−λ1(∑i=1nwiri¯−μ)−λ2(∑i=1nwi−1).
并计算它的各个偏导,
∂L∂wi∂L∂λ1∂L∂λ2=∑j=1nwjCov(ri,rj)−λ1ri−λ2, i=1,2,…,m=∑i=1nwiri¯¯¯¯−μ=∑i=1nwi−1.
∂L∂wi∂L∂λ1∂L∂λ2=∑j=1nwjCov(ri,rj)−λ1ri−λ2, i=1,2,…,m=∑i=1nwiri¯¯¯¯−μ=∑i=1nwi−1.
∂L∂wi=∑j=1nwjCov(ri,rj)−λ1ri−λ2, i=1,2,…,m∂L∂λ1=∑i=1nwiri¯−μ∂L∂λ2=∑i=1nwi−1.
上面的第一条可以改写成矩阵的形式,表示为
∂L∂w∂L∂λ1∂L∂λ2=Σr−λ1r−λ21n=wTr−μ=wT1n−1.
∂L∂w∂L∂λ1∂L∂λ2=Σr−λ1r−λ21n=wTr−μ=wT1n−1.
∂L∂w=Σr−λ1r−λ21n∂L∂λ1=wTr−μ∂L∂λ2=wT1n−1.
将梯度 ∇L∇L∇L 设为 000,即
0n00=Σw−λ1r−λ21n=wTr−μ=wT1n−1(1)(2)(3)
0n00=Σw−λ1r−λ21n=wTr−μ=wT1n−1(1)(2)(3)
0n=Σw−λ1r−λ21n(1)0=wTr−μ(2)0=wT1n−1(3)
假设 ΣΣΣ 是可逆的,由 (1) 可以得出 www 与 λ1λ1λ1 和 λ2λ2λ2 的关系
w=λ1Σ−1r+λ2Σ−11n(†)
w=λ1Σ−1r+λ2Σ−11n(†)
w=λ1Σ−1r+λ2Σ−11n(†)
下面还需要解出 λ1λ1λ1 和 λ2λ2λ2 根据 (2) 和 (3) 两个等式,又有
μ=1=wTrwT1n
μ=1=wTrwT1n
μ=wTr1=wT1n
代入 (†††),有
μ1=[λ1(Σ−1r)+λ2(Σ−11n)]Tr=λ1rTΣ−1r+λ21TnΣ−1r=[λ1(Σ−1r)+λ2(Σ−11n)]T1n=λ1rTΣ−11n+λ21TnΣ−11n
μ1=[λ1(Σ−1r)+λ2(Σ−11n)]Tr=λ1rTΣ−1r+λ21TnΣ−1r=[λ1(Σ−1r)+λ2(Σ−11n)]T1n=λ1rTΣ−11n+λ21TnΣ−11n
μ=[λ1(Σ−1r)+λ2(Σ−11n)]Tr=λ1rTΣ−1r+λ21nTΣ−1r1=[λ1(Σ−1r)+λ2(Σ−11n)]T1n=λ1rTΣ−11n+λ21nTΣ−11n
这里注意因为协方差矩阵 ΣΣΣ 是对称的,根据线性代数和对称矩阵的一些基本性质,有 (Σ−1)T=Σ−1(Σ−1)T=Σ−1(Σ−1)T=Σ−1.
上面的两个等式可以写为矩阵形式,即
[μ1]=[rTΣ−1rrTΣ−11n1TnΣ−1r1TnΣ−11n][λ1λ2].
[μ1]=[rTΣ−1rrTΣ−11n1TnΣ−1r1TnΣ−11n][λ1λ2].
[μ1]=[rTΣ−1r1nTΣ−1rrTΣ−11n1nTΣ−11n][λ1λ2].
那么,如果我们设 a=rTΣ−1r,b=1TnΣ−1r,c=1TnΣ−11na=rTΣ−1r,b=1TnΣ−1r,c=1TnΣ−11na=rTΣ−1r,b=1nTΣ−1r,c=1nTΣ−11n,可以解出
[λ1λ2]=[abbc]−1[μ1],(††)
[λ1λ2]=[abbc]−1[μ1],(††)
[λ1λ2]=[abbc]−1[μ1],(††)
然后利用 (†††) 的等式
w=λ1Σ−1r+λ2Σ−11n
w=λ1Σ−1r+λ2Σ−11n
w=λ1Σ−1r+λ2Σ−11n
就可解出梯度函数 ∇L∇L∇L 的一个零点 w∗w∗w∗;如果矩阵 [abbc][abbc][abbc] 和 ΣΣΣ 都是可逆的话,根据矩阵的列秩的性质,w∗w∗w∗ 便是 ∇L(w,λ1,λ2)=0∇L(w,λ1,λ2)=0∇L(w,λ1,λ2)=0 的唯一解。我们知道原规划问题是有极小点的,根据拉格朗日乘子定理那些极小点都是 ∇L∇L∇L 的零点,然而如果 ∇L∇L∇L 只有一个零点 w∗w∗w∗,那么 w∗w∗w∗ 必定是规划问题的唯一极小点。接下来我们需要确认 [abbc][abbc][abbc] 和 ΣΣΣ 在什么情况下是可逆的,并且对于不可逆的情况给出解决方法。
两个矩阵的可逆性
在这一节中我们将发现有两个假设可以保证矩阵 ΣΣΣ 和 [abbc][abbc][abbc] 的可逆性。它们是:
如果任何一组风险资产都不能配置出无风险资产,那么 ΣΣΣ 是可逆的,即公式 (†)(†)(†) 成立;
如果不是所有风险资产的收益率期望都是相等的,那么 [abbc][abbc][abbc] 是可逆的,即公式 (††)(††)(††) 成立。
接下来将展示上述结论的推导,这需要使用正定矩阵和半正定矩阵的相关理论。在线搜索方法的文章中我们介绍过正定矩阵和半正定矩阵的定义,这里重温一下:
定义. 设 A∈Rn×nA∈Rn×nA∈Rn×n 是一个对称矩阵,即 AT=AAT=AAT=A。如果对于任何一个 x∈Rnx∈Rnx∈Rn 都有 xTAx≥0xTAx≥0xTAx≥0,那么 AAA 是一个半正定矩阵 (positive semidefinite matrix)。如果对于任何一个 x∈Rn∖{0n}x∈Rn∖{0n}x∈Rn∖{0n} 都有 xTAx>0xTAx>0xTAx>0,那么 AAA 是一个正定矩阵 (positive definite matrix)。
首先我们考虑协方差矩阵 ΣΣΣ。根据概率论的基础理论,任何的协方差矩阵都是一个半正定矩阵。我们需要用到线性代数的理论中关于半正定矩阵可逆性的命题:
定理. 设 A∈Rn×nA∈Rn×nA∈Rn×n 是一个半正定矩阵,那么下面两个陈述是等价的:
A−1A−1A−1 存在;
对于每一个 x∈Rn∖{0n}x∈Rn∖{0n}x∈Rn∖{0n},都有 xTAx>0xTAx>0xTAx>0。
假设半正定矩阵 ΣΣΣ 不是可逆的,根据以上定理,可以找出某个非零的 w∈Rnw∈Rnw∈Rn 以满足 wTΣw=0wTΣw=0wTΣw=0。那么有
0=wTΣw=∑i=1n∑j=1nwiwjCov(ri,rj)=Var[∑i=1nwiri].
0=wTΣw=∑i=1n∑j=1nwiwjCov(ri,rj)=Var[∑i=1nwiri].
0=wTΣw=∑i=1n∑j=1nwiwjCov(ri,rj)=Var[∑i=1nwiri].
那么,按照 w1,…,wnw1,…,wnw1,…,wn 的比例配置 (r1,…,rn)(r1,…,rn)(r1,…,rn),会得到一个零方差的随机变量,对应着一个无风险的投资组合。这种情况可以在下一篇的有无风险资产的 MPT 模型中解决;本篇中不妨假设无风险资产不能由风险资产配置得来,这样 ΣΣΣ 必定是可逆的。
接下来我们需要保证矩阵 [abbc]=[rTΣ−1rrTΣ−11n1TnΣ−1r1TnΣ−11n][abbc]=[rTΣ−1rrTΣ−11n1TnΣ−1r1TnΣ−11n][abbc]=[rTΣ−1r1nTΣ−1rrTΣ−11n1nTΣ−11n] 是可逆的。根据行列式的定理,只需要证明 b2−ac≠0b2−ac≠0b2−ac≠0 即可。
首先,我们需要假设 a1n−br≠0na1n−br≠0na1n−br≠0n。这是一个合理的假设,因为如果上述的差等于零,那么所有的 ri¯¯¯¯ri¯¯¯¯ri¯ 都是相等的,也就是说所有的风险资产的收益率都是相同的,很显然这在现实中是几乎不可能发生的,这种情况也会导致有效前沿变成一条横向直线而不是一条曲线。
根据前一段的结论,我们知道 ΣΣΣ 是一个正定矩阵,并且根据下面的定理,
定理. 如果 A∈Rn×nA∈Rn×nA∈Rn×n 是一个正定矩阵,那么 A−1A−1A−1 也是一个正定矩阵。
可以得知 Σ−1Σ−1Σ−1 也是正定矩阵。
那么根据正定矩阵的性质和 a1n−br≠0na1n−br≠0na1n−br≠0n 的性质,有
0< (a1n−br)TΣ−1(a1n−br)=a21TnΣ−11n−ab1nΣ−1r−barΣ−11n+b2rΣ−1r=a2c−ab2−ab2+ab2=a(ac−b2).
0< (a1n−br)TΣ−1(a1n−br)=a21TnΣ−11n−ab1nΣ−1r−barΣ−11n+b2rΣ−1r=a2c−ab2−ab2+ab2=a(ac−b2).
0< (a1n−br)TΣ−1(a1n−br)=a21nTΣ−11n−ab1nΣ−1r−barΣ−11n+b2rΣ−1r=a2c−ab2−ab2+ab2=a(ac−b2).
由此可见 ac−b2≠0ac−b2≠0ac−b2≠0,得知 [abbc][abbc][abbc] 是可逆的。
有效前沿和资本市场线
有效前沿
在马科维兹优化问题中,给定每一个期望收益率 μμμ 都有一个对应的最小标准差 σ(μ)σ(μ)σ(μ),所有这些 (μ,σ(μ))(μ,σ(μ))(μ,σ(μ)) 的二元组构成了一条曲线,叫做有效前沿。接下来我们将计算出这条曲线的公式。
根据第二节中的拉格朗日乘子方法,标准差最小的配置权重向量满足
w=λ1Σ−1r+λ2Σ−11n
w=λ1Σ−1r+λ2Σ−11n
w=λ1Σ−1r+λ2Σ−11n
于是有
Var[rw]=wTΣw=(λ1rTΣ−1+λ21TnΣ−1)Σ(λ1Σ−1r+λ2Σ−11n)=λ21rTΣ−1r+2λ1λ21TnΣ−1r+λ221TnΣ1n=λ21a+2λ1λ2b+λ22c=[λ1λ2][abbc][λ1λ2]
Var[rw]=wTΣw=(λ1rTΣ−1+λ21TnΣ−1)Σ(λ1Σ−1r+λ2Σ−11n)=λ21rTΣ−1r+2λ1λ21TnΣ−1r+λ221TnΣ1n=λ21a+2λ1λ2b+λ22c=[λ1λ2][abbc][λ1λ2]
Var[rw]=wTΣw=(λ1rTΣ−1+λ21nTΣ−1)Σ(λ1Σ−1r+λ2Σ−11n)=λ12rTΣ−1r+2λ1λ21nTΣ−1r+λ221nTΣ1n=λ12a+2λ1λ2b+λ22c=[λ1λ2][abbc][λ1λ2]
再代入
[λ1λ2]=[abbc]−1[μ1]
[λ1λ2]=[abbc]−1[μ1]
[λ1λ2]=[abbc]−1[μ1]
的结论,有
Var[rw]=[μ1][abbc]−1[abbc][abbc]−1[μ1]=[μ1][abbc]−1[μ1]=1ac−b2[μ1][c−b−ba][μ1]=1ac−b2(cμ2−2bμ+a)
Var[rw]=[μ1][abbc]−1[abbc][abbc]−1[μ1]=[μ1][abbc]−1[μ1]=1ac−b2[μ1][c−b−ba][μ1]=1ac−b2(cμ2−2bμ+a)
Var[rw]=[μ1][abbc]−1[abbc][abbc]−1[μ1]=[μ1][abbc]−1[μ1]=1ac−b2[μ1][c−b−ba][μ1]=1ac−b2(cμ2−2bμ+a)
那么得出有效前沿的公式
σ(μ)=1ac−b2(cμ2−2bμ+a)−−−−−−−−−−−−−−−−−−−√.
σ(μ)=1ac−b2(cμ2−2bμ+a)−−−−−−−−−−−−−−−−−−√.
σ(μ)=1ac−b2(cμ2−2bμ+a).
最小风险组合
下面我们计算有效前沿上风险最小的组合。为了寻找函数 σ(μ)σ(μ)σ(μ) 的极小点,我们取其导数并将导数设为 000,
0=dσdμ=12σ(μ)(2cμ−2b).
0=dσdμ=12σ(μ)(2cμ−2b).
0=dσdμ=12σ(μ)(2cμ−2b).
由于 σ(μ)>0σ(μ)>0σ(μ)>0,那么上面等式成立当且仅当 cμ=bcμ=bcμ=b,也就是说最小的标准差存对应着收益期望 μ=b/cμ=b/cμ=b/c,将这个数代进马科维兹优化问题就可以算出最小方差组合的权重了。
举例的时间到了
为了举例的简便性,我们只选择五个风险资产进行计算。这五个资产是从沪深 300 成分股中随机选出的五支股票,使用两年的日收益率数据来计算收益率和标准差和协方差。这五支股票的日平均收益率和日收益率标准差分别是
r=⎡⎣⎢⎢⎢⎢⎢⎢1.0632.8344.1332.3262.788⎤⎦⎥⎥⎥⎥⎥⎥⋅10−3; σ=⎡⎣⎢⎢⎢⎢⎢⎢2.4902.7003.3793.5113.607⎤⎦⎥⎥⎥⎥⎥⎥⋅10−2.
r=⎡⎣⎢⎢⎢⎢⎢⎢1.0632.8344.1332.3262.788⎤⎦⎥⎥⎥⎥⎥⎥⋅10−3; σ=⎡⎣⎢⎢⎢⎢⎢⎢2.4902.7003.3793.5113.607⎤⎦⎥⎥⎥⎥⎥⎥⋅10−2.
r=[1.0632.8344.1332.3262.788]⋅10−3; σ=[2.4902.7003.3793.5113.607]⋅10−2.
这些数据放到标准差-均值坐标图上如下图的蓝色三角所示,图中的粉点是同期其他的沪深 300 成分股作为参考对比。
five.png
并且,我们计算这五支股票收益率的协方差矩阵为
Σ=⎡⎣⎢⎢⎢⎢⎢⎢6.2024.0471.0691.8433.8264.0477.2920.8151.6183.4581.0690.81511.4282.0284.0551.8431.6182.02812.3305.5923.8263.4584.0555.59213.011⎤⎦⎥⎥⎥⎥⎥⎥⋅10−4
Σ=⎡⎣⎢⎢⎢⎢⎢⎢6.2024.0471.0691.8433.8264.0477.2920.8151.6183.4581.0690.81511.4282.0284.0551.8431.6182.02812.3305.5923.8263.4584.0555.59213.011⎤⎦⎥⎥⎥⎥⎥⎥⋅10−4
Σ=[6.2024.0471.0691.8433.8264.0477.2920.8151.6183.4581.0690.81511.4282.0284.0551.8431.6182.02812.3305.5923.8263.4584.0555.59213.011]⋅10−4
使用 Numpy 计算 a,b,ca,b,ca,b,c 的值:
abc=rTΣ−1r=0.02651=rTΣ−115=6.724=1T5Σ−115=2724
abc=rTΣ−1r=0.02651=rTΣ−115=6.724=1T5Σ−115=2724
a=rTΣ−1r=0.02651b=rTΣ−115=6.724c=15TΣ−115=2724
那么计算出有效前沿曲线的公式为
σ(μ)=1ac−b2(cμ2−2bμ+a)−−−−−−−−−−−−−−−−−−−√=99.41μ2−0.4865μ+9.593⋅10−4−−−−−−−−−−−−−−−−−−−−−−−−−−√,
σ(μ)=1ac−b2(cμ2−2bμ+a)−−−−−−−−−−−−−−−−−−√=99.41μ2−0.4865μ+9.593⋅10−4−−−−−−−−−−−−−−−−−−−−−−−−−−√,
σ(μ)=1ac−b2(cμ2−2bμ+a)=99.41μ2−0.4865μ+9.593⋅10−4,
在 (σ,μ)(σ,μ)(σ,μ) 坐标图上的曲线如下
frontier.png
同时,我们也可以通过穷举列出一些加和为 111 的权重向量,让后计算按照这些权重配置出的资产组合的标准差和收益预期,并将这些数据也画在坐标图上,得到下面的图。图中的蓝线是之前算出的有效前沿,圆圈是穷举出的组合,五个蓝色三角形对应的是五个原生股票。
frontier_with_samples.png
可以看出,所有的组合都在有效前沿的右边,并且标准差最小的组合正好就在有效前沿上。
下面我们想计算整个有效前沿上风险最小的投资组合。根据之前的分析,我们知道最小标准差组合的收益期望是
μmin=bc=2.447⋅10−3.
μmin=bc=2.447⋅10−3.
μmin=bc=2.447⋅10−3.
那么建立马科维兹优化问题
最小化满足12wTΣwwTr=μminwT15=1.
最小化满足12wTΣwwTr=μminwT15=1.
最小化12wTΣw满足wTr=μminwT15=1.
我们用公式 (††††††) 先计算出拉格朗日乘子的值
[λ1λ2]=[abbc]−1[μmin1]=[0.026516.7246.7242724]−1[0.0024471]=[−2.776⋅10−173.640⋅10−4]
[λ1λ2]=[abbc]−1[μmin1]=[0.026516.7246.7242724]−1[0.0024471]=[−2.776⋅10−173.640⋅10−4]
[λ1λ2]=[abbc]−1[μmin1]=[0.026516.7246.7242724]−1[0.0024471]=[−2.776⋅10−173.640⋅10−4]
然后再使用公式 (†††) 计算出权重向量
wmin=λ1Σ−1r+λ2Σ−115=−2.776×10−17⋅⎡⎣⎢⎢⎢⎢⎢⎢6.2024.0471.0691.8433.8264.0477.2920.8151.6183.4581.0690.81511.4282.0284.0551.8431.6182.02812.3305.5923.8263.4584.0555.59213.011⎤⎦⎥⎥⎥⎥⎥⎥−1×104⋅⎡⎣⎢⎢⎢⎢⎢⎢1.0632.8344.1332.3262.788⎤⎦⎥⎥⎥⎥⎥⎥×10−3+3.640×10−4⋅⎡⎣⎢⎢⎢⎢⎢⎢6.2024.0471.0691.8433.8264.0477.2920.8151.6183.4581.0690.81511.4282.0284.0551.8431.6182.02812.3305.5923.8263.4584.0555.59213.011⎤⎦⎥⎥⎥⎥⎥⎥−1×104⋅⎡⎣⎢⎢⎢⎢⎢⎢11111⎤⎦⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢0.34990.25940.25230.1914−0.05298⎤⎦⎥⎥⎥⎥⎥⎥
wmin=λ1Σ−1r+λ2Σ−115=−2.776×10−17⋅⎡⎣⎢⎢⎢⎢⎢⎢6.2024.0471.0691.8433.8264.0477.2920.8151.6183.4581.0690.81511.4282.0284.0551.8431.6182.02812.3305.5923.8263.4584.0555.59213.011⎤⎦⎥⎥⎥⎥⎥⎥−1×104⋅⎡⎣⎢⎢⎢⎢⎢⎢1.0632.8344.1332.3262.788⎤⎦⎥⎥⎥⎥⎥⎥×10−3+3.640×10−4⋅⎡⎣⎢⎢⎢⎢⎢⎢6.2024.0471.0691.8433.8264.0477.2920.8151.6183.4581.0690.81511.4282.0284.0551.8431.6182.02812.3305.5923.8263.4584.0555.59213.011⎤⎦⎥⎥⎥⎥⎥⎥−1×104⋅⎡⎣⎢⎢⎢⎢⎢⎢11111⎤⎦⎥⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢⎢0.34990.25940.25230.1914−0.05298⎤⎦⎥⎥⎥⎥⎥⎥
wmin=λ1Σ−1r+λ2Σ−115=−2.776×10−17⋅[6.2024.0471.0691.8433.8264.0477.2920.8151.6183.4581.0690.81511.4282.0284.0551.8431.6182.02812.3305.5923.8263.4584.0555.59213.011]−1×104⋅[1.0632.8344.1332.3262.788]×10−3+3.640×10−4⋅[6.2024.0471.0691.8433.8264.0477.2920.8151.6183.4581.0690.81511.4282.0284.0551.8431.6182.02812.3305.5923.8263.4584.0555.59213.011]−1×104⋅[11111]=[0.34990.25940.25230.1914−0.05298]
这个向量代表着五支股票配置的权重比例,其中第五支股票的权重是负数,说明需要做空。
接下来计算这个组合的期望收益和标准差,有
rwmin¯¯¯¯¯¯¯¯¯¯=wTminr=[0.34990.25940.25230.1914−0.05298]⎡⎣⎢⎢⎢⎢⎢⎢1.0632.8344.1332.3262.788⎤⎦⎥⎥⎥⎥⎥⎥×10−3=2.447×10−3
rwmin¯¯¯¯¯¯¯¯¯¯=wTminr=[0.34990.25940.25230.1914−0.05298]⎡⎣⎢⎢⎢⎢⎢⎢1.0632.8344.1332.3262.788⎤⎦⎥⎥⎥⎥⎥⎥×10−3=2.447×10−3
rwmin¯=wminTr=[0.34990.25940.25230.1914−0.05298][1.0632.8344.1332.3262.788]×10−3=2.447×10−3
以及
σwmin=wTminΣwmin−−−−−−−−−√=⎡⎣⎢⎢⎢⎢⎢⎢0.34990.25940.25230.1914−0.05298⎤⎦⎥⎥⎥⎥⎥⎥T⋅⎡⎣⎢⎢⎢⎢⎢⎢6.2024.0471.0691.8433.8264.0477.2920.8151.6183.4581.0690.81511.4282.0284.0551.8431.6182.02812.3305.5923.8263.4584.0555.59213.011⎤⎦⎥⎥⎥⎥⎥⎥×10−4⋅⎡⎣⎢⎢⎢⎢⎢⎢0.34990.25940.25230.1914−0.05298⎤⎦⎥⎥⎥⎥⎥⎥−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−⎷=1.908×10−2
σwmin=wTminΣwmin−−−−−−−−−√=⎡⎣⎢⎢⎢⎢⎢⎢0.34990.25940.25230.1914−0.05298⎤⎦⎥⎥⎥⎥⎥⎥T⋅⎡⎣⎢⎢⎢⎢⎢⎢6.2024.0471.0691.8433.8264.0477.2920.8151.6183.4581.0690.81511.4282.0284.0551.8431.6182.02812.3305.5923.8263.4584.0555.59213.011⎤⎦⎥⎥⎥⎥⎥⎥×10−4⋅⎡⎣⎢⎢⎢⎢⎢⎢0.34990.25940.25230.1914−0.05298⎤⎦⎥⎥⎥⎥⎥⎥−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−⎷=1.908×10−2
σwmin=wminTΣwmin=[0.34990.25940.25230.1914−0.05298]T⋅[6.2024.0471.0691.8433.8264.0477.2920.8151.6183.4581.0690.81511.4282.0284.0551.8431.6182.02812.3305.5923.8263.4584.0555.59213.011]×10−4⋅[0.34990.25940.25230.1914−0.05298]=1.908×10−2
将 (1.908×10−2,2.477×10−3)(1.908×10−2,2.477×10−3)(1.908×10−2,2.477×10−3) 的点画在坐标图上,是下图中的红色猩猩,
frontier_with_min.png
它的确是在整个有效前沿曲线的最顶端,这就对了。
结语
本文使用拉格朗日乘子法解决了没有无风险资产的 MPT 模型的优化问题,算出了最小方差组合以及有效前沿还有的闭合式公式,以此进行计算要比穷举和使用蒙特卡罗法更快也更准确。在本系列的下一篇文章中,我们将使用拉格朗日乘子法来解决有无风险资产情况,计算出资本市场线的闭合公式,分析它和有效前沿的关系,并得到市场组合的计算方法。
本文由JoinQuant量化课堂推出,版权归JoinQuant所有,商业转载清联系我们获得授权,非商业转载请注明出处。