关于数据挖掘:R语言Markowitz马克维茨投资组合理论分析和可视化

73次阅读

共计 2569 个字符,预计需要花费 7 分钟才能阅读完成。

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

原文出处:拓端数据部落公众号

之前咱们在对于投资组合优化相干的内容中曾经看到了 Markowitz 的实践,其中给出了预期收益和协方差矩阵

> pzoo = zoo (StockIndex , order.by = rownames ( StockIndex) )
> rzoo = (pzoo / lag ( pzoo , k = -1) - 1 ) * 100
> 

ans <- do.call (method , list ( x = x , ...) ) + return (getCov ( ans) )} > covmat=Moments(as.matrix(rzoo),"CovClassic")
> (covmat=round(covmat,1))
SP500 N225 FTSE100 CAC40 GDAX HSI
SP500   17.8 12.7 13.8 17.8 19.5 18.9
N225    12.7 36.6 10.8 15.0 16.2 16.7
FTSE100 13.8 10.8 17.3 18.8 19.4 19.1
CAC40   17.8 15.0 18.8 30.9 29.9 22.8
GDAX    19.5 16.2 19.4 29.9 38.0 26.1
HSI     18.9 16.7 19.1 22.8 26.1 58.1

当初,咱们能够可视化上面的无效边界(和可承受的投资组合)

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

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

SP500 N225 FTSE100 CAC40 GDAX HSI
SP500   1.00 0.50 0.79 0.76 0.75 0.59
N225    0.50 1.00 0.43 0.45 0.43 0.36
FTSE100 0.79 0.43 1.00 0.81 0.76 0.60
CAC40   0.76 0.45 0.81 1.00 0.87 0.54
GDAX    0.75 0.43 0.76 0.87 1.00 0.56
HSI     0.59 0.36 0.60 0.54 0.56 1.00

咱们实际上能够更改 FT500 和 FTSE100 之间的相关性(此处为.786)

courbe=function(r=.786){
 
ef 
plot(ef$sd,ef$er,type="l",xlab="Standard Deviation",ylab="Expected Return",
points(sqrt(diag(covmat)),er,pch=19,col=c("blue","red")\[c(2,1,2,1,1,1)\])

polygon(u,v,border=NA,col=rgb(0,0,1,.3))
}

例如,相关系数为 0.6,咱们失去以下无效边界

> courbe(.6)

并具备更强的相关性

> courbe(.9)

很显著,相关性很重要。但更重要的是,冀望收益和协方差不是给出而是预计的。以前,咱们的确将规范估计量用于方差矩阵。然而能够思考应用另一个更牢靠的预计器

covmat=Moments(as.matrix(rzoo),"CovSde")





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

它的确影响了点的(程度)地位,因为方差当初以及无效边界都不同,而方差显著更低。

为了阐明最初一点,阐明咱们的确有基于察看到的收益的估计量,如果咱们察看到不同的收益怎么办?理解可能产生的状况的一种办法是应用疏导程序,例如每日收益。

> 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)
> polygon(u,v,border=NA,col=rgb(0,0,1,.3))
> for(i in 1:100){
+  
+  
+ er=apply(as.matrix(rzoo)\[id,\],2,mean)
+ points(sqrt(diag(covmat))\[k\],er\[k\],cex=.5)
+ }

或其余资产

这是咱们在(预计的)无效边界上失去的

> polygon(u,v,border=NA,col=rgb(0,0,1,.3))
> for(i in 1:100){
+ 
+  
+  
+ ef <- efficient.frontier(er, covmat, alpha.min=-2.5, alpha.max=2.5, nport=50)
+ lines(ef$sd,ef$er,col="red")
+ }

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


参考文献

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

正文完
 0