R语言Markowitz马克维茨投资组合理论分析和可视化

摘要:
它不是一个点,而是一个有效的边界。但更重要的是,预期回报和协方差不是给定的,而是估计的。然而,我们可以考虑使用另一个更可靠的估计器,covmat=Momentspointstextpolygon,这确实会影响点的(水平)位置,因为方差和有效边界现在不同,而且方差明显更低。了解可能发生的情况的一种方法是使用引导程序,例如每日收入。˃{++er=apply+points+}或其他资产的Plot>poly>这是我们在{+++ef<-efficient.frontier+lines+}的(估计)有效边界上得到的结果。因此,至少从统计角度来看,很难评估投资组合是否最优。

R语言Markowitz马克维茨投资组合理论分析和可视化第1张

原文链接: http://tecdat.cn/?p=14200

之前我们在关于投资组合优化相关的内容中已经看到了Markowitz的理论,其中给出了预期收益和协方差矩阵

  1.  
    > pzoo = zoo ( StockIndex , order.by = rownames ( StockIndex ) )
  2.  
    > rzoo = ( pzoo / lag ( pzoo , k = -1) - 1 ) * 100
  3.  
    >
  4.  
     
  5.  
    ans <- do.call ( method , list ( x = x , ... ) ) + return ( getCov ( ans ) )} > covmat=Moments(as.matrix(rzoo),"CovClassic")
  6.  
    > (covmat=round(covmat,1))
  7.  
    SP500 N225 FTSE100 CAC40 GDAX HSI
  8.  
    SP500   17.8 12.7 13.8 17.8 19.5 18.9
  9.  
    N225    12.7 36.6 10.8 15.0 16.2 16.7
  10.  
    FTSE100 13.8 10.8 17.3 18.8 19.4 19.1
  11.  
    CAC40   17.8 15.0 18.8 30.9 29.9 22.8
  12.  
    GDAX    19.5 16.2 19.4 29.9 38.0 26.1
  13.  
    HSI     18.9 16.7 19.1 22.8 26.1 58.1

现在,我们可以可视化下面的有效边界(和可接受的投资组合)

  1.  
     
  2.  
     
  3.  
     
  4.  
     
  5.  
     
  6.  
    > points(sqrt(diag(covmat)),er,pch=19,col="blue")
  7.  
    > text(sqrt(diag(covmat)),er,names(er),pos=4, col="blue",cex=.6)
  8.  
    > polygon(u,v,border=NA,col=rgb(0,0,1,.3))

R语言Markowitz马克维茨投资组合理论分析和可视化第2张

实际上很难在该图上将重要的东西可视化:收益之间的相关性。它不是点(单变量,具有预期收益和标准差),而是有效边界。例如,这是我们的相关矩阵

  1.  
     
  2.  
     
  3.  
    SP500 N225 FTSE100 CAC40 GDAX HSI
  4.  
    SP500   1.00 0.50 0.79 0.76 0.75 0.59
  5.  
    N225    0.50 1.00 0.43 0.45 0.43 0.36
  6.  
    FTSE100 0.79 0.43 1.00 0.81 0.76 0.60
  7.  
    CAC40   0.76 0.45 0.81 1.00 0.87 0.54
  8.  
    GDAX    0.75 0.43 0.76 0.87 1.00 0.56
  9.  
    HSI     0.59 0.36 0.60 0.54 0.56 1.00

我们实际上可以更改FT500和FTSE100之间的相关性(此处为.786)

  1.  
    courbe=function(r=.786){
  2.  
     
  3.  
    ef
  4.  
    plot(ef$sd,ef$er,type="l",xlab="Standard Deviation",ylab="Expected Return",
  5.  
    points(sqrt(diag(covmat)),er,pch=19,col=c("blue","red")[c(2,1,2,1,1,1)])
  6.  
     
  7.  
    polygon(u,v,border=NA,col=rgb(0,0,1,.3))
  8.  
    }

例如,相关系数为0.6,我们得到以下有效边界

> courbe(.6)

R语言Markowitz马克维茨投资组合理论分析和可视化第3张

并具有更强的相关性

> courbe(.9)

R语言Markowitz马克维茨投资组合理论分析和可视化第4张

很明显,相关性很重要。但更重要的是,期望收益和协方差不是给出而是估计的。以前,我们确实将标准估计量用于方差矩阵。但是可以考虑使用另一个更可靠的估计器

  1.  
    covmat=Moments(as.matrix(rzoo),"CovSde")
  2.  
     
  3.  
     
  4.  
     
  5.  
     
  6.  
     
  7.  
    points(sqrt(diag(covmat)),er,pch=19,col="blue")
  8.  
    text(sqrt(diag(covmat)),er,names(er),pos=4,col="blue",cex=.6)
  9.  
    polygon(u,v,border=NA,col=rgb(0,0,1,.3))

R语言Markowitz马克维茨投资组合理论分析和可视化第5张

它确实影响了点的(水平)位置,因为方差现在以及有效边界都不同,而方差明显更低。

为了说明最后一点,说明我们确实有基于观察到的收益的估计量,如果我们观察到不同的收益怎么办?了解可能发生的情况的一种方法是使用引导程序,例如每日收益。

  1.  
     
  2.  
     
  3.  
     
  4.  
     
  5.  
     
  6.  
     
  7.  
    > plot(ef$sd,ef$er,type="l",xlab="Standard Deviation",ylab="Expected Return", xlim=c(3.5,11),ylim=c(0,2.5),col="white",lwd=1.5)
  8.  
    > polygon(u,v,border=NA,col=rgb(0,0,1,.3))
  9.  
    > for(i in 1:100){
  10.  
    +
  11.  
    +
  12.  
    + er=apply(as.matrix(rzoo)[id,],2,mean)
  13.  
    + points(sqrt(diag(covmat))[k],er[k],cex=.5)
  14.  
    + }

R语言Markowitz马克维茨投资组合理论分析和可视化第6张

或其他资产

R语言Markowitz马克维茨投资组合理论分析和可视化第7张

这是我们在(估计的)有效边界上得到的

  1.  
     
  2.  
     
  3.  
     
  4.  
     
  5.  
     
  6.  
     
  7.  
     
  8.  
    > polygon(u,v,border=NA,col=rgb(0,0,1,.3))
  9.  
    > for(i in 1:100){
  10.  
    +
  11.  
    +
  12.  
    +
  13.  
    + ef <- efficient.frontier(er, covmat, alpha.min=-2.5, alpha.max=2.5, nport=50)
  14.  
    + lines(ef$sd,ef$er,col="red")
  15.  
    + }

R语言Markowitz马克维茨投资组合理论分析和可视化第8张

因此,至少在统计学的角度上,要评估一个投资组合是否最优是很困难的。


参考文献

1.用机器学习识别不断变化的股市状况—隐马尔科夫模型(HMM)的应用

2.R语言GARCH-DCC模型和DCC(MVT)建模估计

3.R语言实现 Copula 算法建模依赖性案例分析报告

4.R语言使用ARIMA模型预测股票收益

5.r语言中对LASSO回归,Ridge岭回归和Elastic Net模型实现

6.用R语言实现神经网络预测股票实例

7.r语言预测波动率的实现:ARCH模型与HAR-RV模型

8.R语言如何做马尔科夫转换模型markov switching model

免责声明:文章转载自《R语言Markowitz马克维茨投资组合理论分析和可视化》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇tomcat8配置(Server status)监控界面(转载).net 缓存处理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

指数基金梳理

1.指数基金基本认知 指数基金本质上投资的是什么?是一篮子股票 指数基金的优势是什么?永生不死,长期上涨 指数能买吗?指数不能买,只能买对应的指数基金 指数基金按照交易场所的不同,分为哪两种指数基金?场内交易指数基金和场外交易指数基金,这个场所指的就是证券交易所。 注:场内购买手续费一般是万分之几,但是最低购买金额是1手=100份(比如300ETF目前价格...

R语言基础-数据转换

一、基本转换 读取Excel数据 methods(is) 函数可以查看所有 is 的方法。用于判断数据 methods(as) 函数可以查看所有的转换方法。 二、对大数据集,取数据子集 1.读数据 两种写法 2.随机抽样函数 sample() 对向量抽样 对数据框抽样,取子集 3.删除特定数据 原数据 mtcars 删除1-5列 删除mpg列...

基于R语言股票市场收益的统计可视化分析

原文链接:http://tecdat.cn/?p=16453  金融市场上最重要的任务之一就是分析各种投资的历史收益。要执行此分析,我们需要资产的历史数据。数据提供者很多,有些是免费的,大多数是付费的。在本文中,我们将使用Yahoo金融网站上的数据。 在这篇文章中,我们将: 下载收盘价 计算收益率 计算收益的均值和标准差 让我们先加载库。   li...

经济--分级基金2

建议你把所有能开通的功能都开通了,尤其是创业板和国债逆回购的交易权限一定要开通 "三方存管"  说白了,就是“券商管券,银行管钱”,买股票券商来操作 不同证券公司用的股票行情软件还不一样,比如钱龙、大智慧、通达信、同花顺等等 上交所的开户费是40元,深交所50元,一共90元,但现在基本上没有证券公司会收这90元,都是免费开户,它以后可以从股票交易佣金中把这个...

第16本:《视觉繁美:信息可视化方法与案例解析》

第16本:《视觉繁美:信息可视化方法与案例解析》 阅读加写笔记大概用了6个小时。《视觉繁美》是从权哥的QQ上发现的,看到一堆超炫超 复杂的图形,就马上动手从amazon上买了下来。第一天粗翻一遍,确实是非常多、非常复杂的网络图,如果不是搞艺术设计的,真不知道这本书有什么用,但 第二天开始仔细阅读,发现前三章还是相当有料,从树状模型开始,过渡到网络模型,然...

R语言数据分析系列六

R语言数据分析系列六 ——by comaple.zhang 上一节讲了R语言作图,本节来讲讲当你拿到一个数据集的时候怎样下手分析,数据分析的第一步。探索性数据分析。 统计量,即统计学里面关注的数据集的几个指标。经常使用的例如以下:最小值,最大值,四分位数,均值,中位数,众数,方差,标准差。极差,偏度,峰度 先来解释一下各个量得含义,浅显就不说了,这里...