Markowitz投资组合模型—基于R
模型的介绍
1952年Markowitz给出了现代投资组合理论的基本框架,并于1990年获得诺贝尔经济学奖.
其基本思想是用收益率的期望来度量投资股票的收益率,用收益率的方差来衡量投资的风险,方差越大风险越大,方差越小风险越小.
模型的建立
假设有三种股票 \(A,B,C\),它们的年收益率分别为 \(R_1,R_2,R_3\),则 \(R_i\) 为一个随机变量,利用概率论相关知识可以得出
\[E(R_1) = \mu_1,\quad E(R_2) = \mu_2,\quad E(R_3) = \mu_3
\]
年收益率的协方差矩阵为 \(M\).
用决策变量 \(x_1,x_2,x_3\) 分别表示投资人投资股票 \(A,B,C\) 的比例. 假设市场上没有其他投资渠道,且手上资金必须全部用于投资这3种股票,则
\[x_1,x_2,x_3 \geq 0, \quad x_1+x_2+x_3 = 1
\]
于是投资的年期望收益率为
\[E(R) = E(x_1R_1+x_2R_2+x_3R_3)=x_1ER_1+x_2ER_2+x_3ER_3
\]
年投资的方差为
\[\begin{aligned}
V &= D(x_1R_1+x_2R_2+x_3R_3)\\
&= D(x_1R_1)+D(x_2R_2)+D(x_3R_3)+2cov(x_1R_1,x_2R_2)+2cov(x_1R_1,x_3R_3)+2cov(x_2R_2,x_3R_3)\\
&= x_1^2DR_1+x_2^2DR_2+x_3^2DR_3+2x_1x_2cov(R_1,R_2)+2x_1x_3cov(R_1,R_3)+2x_2x_3cov(R_2,R_3)\\
&=\sum_{j=1}^3\sum_{i=1}^3x_ix_jcov(R_i,R_j)
\end{aligned}
\]
然后,根据问题列出风险(方差)最小化的规划模型或者收益(期望)最大化的规划模型.
案例分析
已知三种股票A,B,C从1943年到1954年价格每年的增长如下表所示,表中第一个数据1.3的含义是股票A再1943年末的价值是其年初价值的1.3倍,即年收益率为30%,其余数据依此类推. 假设你在1955年有一笔资金准备投资这三种股票,期望年收益率至少为15%,问应如何投资?
年份 | 股票A | 股票B | 股票C |
---|---|---|---|
1943 | 1.300 | 1.225 | 1.149 |
1944 | 1.103 | 1.290 | 1.260 |
1945 | 1.216 | 1.216 | 1.419 |
1946 | 0.954 | 0.728 | 0.922 |
1947 | 0.929 | 1.144 | 1.169 |
1948 | 1.056 | 1.107 | 0.965 |
1949 | 1.038 | 1.321 | 1.133 |
1950 | 1.089 | 1.305 | 1.732 |
1951 | 1.090 | 1.195 | 1.021 |
1952 | 1.083 | 1.390 | 1.131 |
1953 | 1.035 | 0.928 | 1.006 |
1954 | 1.176 | 1.715 | 1.908 |
问题求解
根据题意可知,表中数据减1即为年收益率.
Step1. 计算三种股票年收益率期望及协方差矩阵
> A <- c(0.3, 0.103, 0.216, -0.046, -0.071, 0.056, 0.038, 0.089,
+ 0.09, 0.083, 0.035, 0.176)
> B <- c(0.225, 0.290, 0.216, -0.272, 0.144, 0.107, 0.321, 0.305,
+ 0.195, 0.390, -0.072, 0.715)
> C <- c(0.149, 0.260, 0.419, -0.078, 0.169, -0.035, 0.133, 0.732,
+ 0.021, 0.131, 0.006, 0.908)
> ## 计算均值和协方差
> # 写入一个矩阵
> M <- matrix(c(A,B,C), nrow = 12)
> apply(M, 2, mean)
[1] 0.08908333 0.21366667 0.23458333
> round(cov(M), 4)
[,1] [,2] [,3]
[1,] 0.0108 0.0124 0.0131
[2,] 0.0124 0.0584 0.0554
[3,] 0.0131 0.0554 0.0942
于是,
\[ER_1 = 0.0891, \quad ER_2 = 0.2137, \quad ER_3 = 0.2346\\
COV =
\left[
\begin{array}{c}
0.0108 & 0.0124 & 0.0131\\
0.0124 & 0.0584 & 0.0554\\
0.0131 & 0.0554 & 0.0942
\end{array}
\right]
\]
Step2. 规划模型的建立
- 决策变量:用 \(x_1,x_2,x_3\) 表示投资者投资三种股票的比例,于是就有
\[x_1+x_2+x_3 = 1,\quad x_1,x_2,x_3 \geq 0
\]
- 目标函数:由于要使得风险最小化,即年收益率的方差最小化,故目标为
\[\min \ V = \sum_{j=1}^3\sum_{i=1}^3x_ix_jcov(R_i,R_j)
\]
- 约束条件:根据题意,期望年收益率至少为15%,即
\[x_1ER_1 + x_2ER_2 + x_3ER_3 \geq 0.15
\]
综上,构造出了一个二次规划问题
\[\begin{aligned}
&\min \ V = \sum_{j=1}^3\sum_{i=1}^3x_ix_jcov(R_i,R_j)\\
& \quad\quad x_1ER_1 + x_2ER_2 + x_3ER_3 \geq 0.15\\
& \quad\quad x_1+x_2+x_3 = 1\\
& \quad\quad x_1,x_2,x_3 \geq 0
\end{aligned}
\]
下面利用 R 求解
> ## 二次规划的求解
> #install.packages("quadprog")
> library(quadprog)
> round(cov(M), 4) -> COV_M
> d <- c(0,0,0)
> A <- t(matrix(c(Mean, 1, 1, 1, -1, -1, -1), nr = 3, byrow = T))
> b0 <- c(0.15, 1, -1)
> solve.QP(Dmat = COV_M, dvec = d, Amat = A, bvec = b0)
$solution
[1] 0.5300751 0.3565292 0.1133957
$value
[1] 0.01120525
$unconstrained.solution
[1] 0 0 0
$iterations
[1] 4 1
$Lagrangian
[1] 0.176950638 0.000000000 0.004132096
$iact
[1] 1 3
于是投资三种股股票的比例为 A: 53.01%, B: 35.65%, C: 11.34%,风险最小为 \(0.0112 \times 2 = 0.0224\).
R语言二次规划:> https://blog.csdn.net/littlely_ll/article/details/53946628>