原文链接: 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 HSISP500   17.8 12.7 13.8 17.8 19.5 18.9N225    12.7 36.6 10.8 15.0 16.2 16.7FTSE100 13.8 10.8 17.3 18.8 19.4 19.1CAC40   17.8 15.0 18.8 30.9 29.9 22.8GDAX    19.5 16.2 19.4 29.9 38.0 26.1HSI     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 HSISP500   1.00 0.50 0.79 0.76 0.75 0.59N225    0.50 1.00 0.43 0.45 0.43 0.36FTSE100 0.79 0.43 1.00 0.81 0.76 0.60CAC40   0.76 0.45 0.81 1.00 0.87 0.54GDAX    0.75 0.43 0.76 0.87 1.00 0.56HSI     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