ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Markowitz投资组合模型—基于R

2022-06-03 23:02:14  阅读:227  来源: 互联网

标签:基于 方差 股票 sum geq quad Markowitz 收益率 模型


模型的介绍

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>

标签:基于,方差,股票,sum,geq,quad,Markowitz,收益率,模型
来源: https://www.cnblogs.com/hznudmh/p/16335795.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有