投资组合理论
投资组合理论在狭义上来讲就是指马科维兹投资组合模型,而广义上来除了经典的投资组合理论以外还包括资本资产定价模型和证券市场有效理论所构成的资本市场理论。
对于金融资产的组合配置就是将投资资金合理地分配在多种资产上,并将风险控制在一定范围内的同时把收益率最大化。比如说,固定收益率不变,将风险降到最低;或者固定风险不变,将收益率提升到最高。
马科维兹投资组合理论
马柯维茨投资组合理论标志着现代投资组合理论的开端。美国经济学家 Markowitz 主要利用均值-方差模型分析得出通过投资组合可以有效降低风险的结论。
马克维茨投资组合理论的基本假设为:
(1)单期投资,作为一种简化模型对现实的近似描述,主要表现为投资者在期初投资,期末获得回报。
(2)事先知道投资收益的概率分布以及收益率满足正态分布的条件。
(3)投资者根据收益率的期望值与方差来衡量收益率的不确定性(即风险)并选择投资组合。
(4)投资者遵循占优原则,规避风险,追求期望效用最大值,即:同一风险下,选择收益率较高的,同一收益水平下,选择风险较低的。
马克维茨提出了以期望收益及其方差(E,δ2)确定有效投资组合。以期望收益 E 来衡量收益,以收益的方差 δ^2 表示投资风险。资产组合的总收益用各个资产预期收益的加权平均值表示,组合资产的风险用收益的方差或标准差表示,则马克维茨优化模型如下:
minδ2(rp)=∑∑wiwjCov(ri-rj)
rp= ∑wiri
限制条件: ∑wi=1 (允许卖空)
或 ∑wi=1 wi>≥0(不允许卖空)
式中:rp——组合收益;
ri、rj——第 i 种、第 j 种资产的收益
wi、wj——资产 i 和资产 j 在组合中的权重
δ2(rp)——组合收益的方差即组合的总体风险
cov(r,rj)——两种资产之间的协方差
在限制条件下求解wi 证券收益率使组合风险δ2(rp )最小,可通过朗格朗日目标函数求得。投资者可预先确定一个期望收益,通过上式可确定投资者在每个投资项目(如股票)上的投资比例(项目资金分配),使其总投资风险最小。不同的期望收益就有不同的最小方差组合,这就构成了最小方差集合。
马克维茨投资组合理论的基本思路是:
(1)投资者确定投资组合中合适的资产
(2)分析这些资产在持有期间的预期收益和风险
(3)建立可供选择的证券有效集
(4)结合具体的投资目标,最终确定最优证券组合。
有效前沿
在马科维茨的均值-方差模型中,有效前沿是指:对于给定的收益率水平,得到的对应投资组合的方差(或标准差)比在同样收益水平的任何组合的方差(或标准差)要小;或者在给定的方差(或标准差)中,相应的投资组合具有最大的期望收益率。
固定预期收益,然后拥有该预期收益,并且找到标准差(方差)最小的资产组合。也就是说,对于任意一个预期收益值 μ,找到一个由配置权重 w=(w1,w2,...,wn) 定义的资产配置 P,要求 P 的预期收益率为 μ,并且在所有可以配置出的预期收益为 μ 的组合中,P 的方差是最小的。
最小化: minδ2(rp)=∑∑wiwjCov(ri-rj) 使得:rp=∑wiri=μ 并且 ∑wi=1 对于每一个 μ 值,求得一个风险资产配置 p ,满足 rp=μ,并且标准差是最小的。画出最优解,在标准差-预期的坐标上得到一条抛物线。 这条曲线被叫做有效前沿。
有效前沿存在一个波动率最小的位置,也就是图中曲线最靠左的地方,并且在这个点以上的位置才是真正“有效”的。我们是固定预期收益算得的最低风险而得到的 这条曲线,如果再固定风险并选择最大的预期收益,则会筛选掉有效前沿的下半部分。所以,很多时候所说的“有效前沿”会特指上半部分。
两项资产的投资组合优化
回报率
风险
令投资总数为单位 1
最终得到
获取数据
> library(zoo)
> library(xts)
> library(TTR)
> library(quantmod)
> library(PerformanceAnalytics)
> getSymbols(c("AAPL", "GOOG", "SINA"))
[1] "AAPL" "GOOG" "SINA"
根据马科维兹投资组合模型我们需要求出投资交易的收益率来作为方差表示投资风险,所以首先将交易数据处理为收益率数据。
> AAPL_ret <- dailyReturn(AAPL)
> GOOG_ret <- dailyReturn(GOOG)
> SINA_ret <- dailyReturn(SINA)
>
> dat <- merge(AAPL_ret, GOOG_ret, SINA_ret)
> head(dat)
daily.returns daily.returns.1 daily.returns.2
2007-01-03 -0.028856319 0.003412046 0.0208476077
2007-01-04 0.022195848 0.033512260 0.0398392354
2007-01-05 -0.007121269 0.008132247 0.0009659047
2007-01-08 0.004938272 -0.007409796 0.0183338694
2007-01-09 0.083070270 0.003970350 0.0003158560
2007-01-10 0.047855582 0.008156556 0.0205241554
> tail(dat)
daily.returns daily.returns.1 daily.returns.2
2020-11-13 0.0004194531 0.015532880 0.0004624277
2020-11-16 0.0087204510 0.002453537 0.0006932979
2020-11-17 -0.0075644553 -0.006304091 0.0004619169
2020-11-18 -0.0113912389 -0.013202268 0.0000000000
2020-11-19 0.0051681776 0.009812349 0.0002308864
2020-11-20 -0.0109575439 -0.012319211 0.0004614816
> chart.CumReturns(dat, legend.loc='topleft')
可以简单看出AAPL 公司的收益率的趋势较强,而 GOOG 公司的趋势比较平缓。
计算投资组合的有效前沿
根据前面的有效前沿的知识点,我们可以尝试通过拉格朗日定理,将 minδ2(rp)=∑∑wiwjCov(ri-rj) 最小方差求解问题转换成一个线性方程系统。
frontier <- function(return){
Q <- cov(return)
r <- colMeans(return)
Q1 <- rbind(Q,rep(1,3),r)
Q1 <- cbind(Q1,rbind(t(tail(Q1,2)),matrix(0,2,2)))
rbase <- seq(min(r),max(r),length=100)
s <- sapply(rbase,function(x){
y <-head(solve(Q1,c(rep(0,3),1,x)),3)
y %*% Q %*% y
})
plot(s,rbase,xlab='return',ylab='var')
}
frontier(dat)
> library(fPortfolio)
> dat <- as.timeSeries(dat)
> Frontier <- portfolioFrontier(dat)
> Frontier
Title:
MV Portfolio Frontier
Estimator: covEstimator
Solver: solveRquadprog
Optimize: minRisk
Constraints: LongOnly
Portfolio Points: 5 of 50
Portfolio Weights:
daily.returns daily.returns.1 daily.returns.2
1 0.0000 0.0000 1.0000
13 0.0656 0.7854 0.1490
25 0.3600 0.5684 0.0716
37 0.6562 0.3438 0.0000
50 1.0000 0.0000 0.0000
Covariance Risk Budgets:
daily.returns daily.returns.1 daily.returns.2
1 0.0000 0.0000 1.0000
13 0.0486 0.7899 0.1615
25 0.3625 0.5664 0.0711
37 0.7205 0.2795 0.0000
50 1.0000 0.0000 0.0000
Target Returns and Risks:
mean Cov CVaR VaR
1 0.0006 0.0312 0.0684 0.0466
13 0.0008 0.0178 0.0410 0.0265
25 0.0009 0.0170 0.0402 0.0266
37 0.0011 0.0179 0.0422 0.0274
50 0.0013 0.0205 0.0479 0.0298
Description:
Sun Nov 22 17:32:47 2020 by user: Administrator
从上面的结果中 Title 部分表明的是操作中使用的相关方法。
Portfolio Weights 部分返回的是三只股票在投资组合中的头寸比例,每一行的和都是 1 。对于第二行,它表示的是在投资组合中将总头寸以 22.6% 、 75.14% 、 2.26% 的比例分散到三只股票上。 Covariance Risk Budgets 表示的是协方差风险预算矩阵。 Target Return and Risks 表示目标组合的预期收益率和风险数据。
> plot(Frontier)
Make a plot selection (or 0 to exit):
1: Plot Efficient Frontier
2: Add Minimum Risk Portfolio
3: Add Tangency Portfolio
4: Add Risk/Return of Single Assets
5: Add Equal Weights Portfolio
6: Add Two Asset Frontiers [LongOnly Only]
7: Add Monte Carlo Portfolios
8: Add Sharpe Ratio [Markowitz PF Only]
Selection:
有效前沿
最小风险组合
切线组合
单个资产的风险 / 收益
等权重投资组合
两资产投资组合的有效前沿(禁止卖空)
模特卡罗模拟得到的投资组合
夏普比率
最优投资组合的选择
最优投资组合是指投资者在可以得到的各种可能的投资组合中,唯一可获得最大效用期望值的投资组合。有效集的上凸性和无差异曲线的下凸性决定了最优投资组合的唯一性。