R语言下的frontcon函数,由mean-variance画有效前沿。
来源:互联网 发布:js单选框选中事件 编辑:程序博客网 时间:2024/05/08 08:08
第一次发博文,以后就在CSDN安家落地了,markdown编辑器感觉还很不错╮(╯▽╰)╭,就是我完全不会用。
研究马科维茨的均值方差模型时,试图用稳健的方法求出稳健均值和稳健协方差矩阵,发现R语言下居然没有像资产组合有效前沿的解和最优解(MATLAB语言) 一文中所说的frontcon函数。
于是我便尝试着自己写frontcon。
有效前沿实际上就是在给定期望回报率下,求风险最小;或者给定风险的情况下,求回报率最大。这样就能得到一个 (return,risk)的点。
公式如下图:
这个公式用到了二次规划,实在给定的期望下,求风险最小。
按照资产组合有效前沿的解和最优解(MATLAB语言) 一文中的例子,我写了如下代码。
install.packages("quadprog")library(quadprog)ExpReturn=c(0.405533,0.49012,0.507552,0.620121,0.438577)ExpCovariance=matrix(c(0.000603,0.000565,0.000644,0.000589,0.000512,0.000565,0.000596,0.000656,0.000612,0.000537,0.000644,0.000656,0.000839,0.00071,0.000648,0.000589,0.000612,0.00071,0.000716,0.000643,0.000512,0.000537,0.000648,0.000643,0.000712),nrow = 5)frontcon <- function(ExpReturn, ExpCovariance, Numports = 10, float = 4){ size = length(ExpReturn); if(dim(ExpCovariance)[1] != size | dim(ExpCovariance)[2] != size ) stop("Fucking size!"); minReturn = round(range(ExpReturn)[1], float) + 1/10^4 maxReturn = round(range(ExpReturn)[2], float); ## 获得期望回报率的区间 seqReturn = seq(minReturn, maxReturn, length.out = Numports); risks = 0; risks = risks[-1]; for(i in 1:Numports){ ### 二次规划求一个(return,risk)的点 A <- cbind(rep(1, size), ExpReturn,diag(rep(1, size))) #约束系数 D <- ExpCovariance # 协方差矩阵 x <- ExpReturn # 期望收益 b <- c(1, seqReturn[i], rep(0, size)) #约束的右侧值 res <- solve.QP(2*D, x, A, b, meq = 2 ) ## meq 指的是限制条件中,前meq个条件为"=" risks = c(risks,t(res$solution) %*% ExpCovariance %*% res$solution); } output = data.frame(PortRisk = risks, PortReturn = round(seqReturn,float)); output}frontcon(ExpReturn,ExpCovariance, 30)
1 0
- R语言下的frontcon函数,由mean-variance画有效前沿。
- python 实现 frontCon 函数,画 马克韦茨 有效前沿和求切线 思路
- R语言中mean函数
- R weighted-mean加权函数
- 如何用matlab,frontcon函数画出有效市场边缘和资本市场线
- R语言read.xlsx( )函数报错 LoadLibrary failure: %1 不是有效的 Win32 应用程序
- 资产组合有效前沿的解和最优解(MATLAB语言)
- R语言的函数纪录
- R语言:函数的编写
- 【R 可视化】R语言画函数图
- Statistics: Mean, Variance, Covariance, and Correlation
- Standardization, or mean removal and variance scaling
- bias & variance 以及 Mean squared error
- 平均值(Mean)、方差(Variance)、标准差(Standard Deviation)
- Matlab mean()函数的用法
- ESL读书笔记2b:bias-variance tradeoff之 knn在k=1情况下受目标函数影响的bias和variance
- R语言基础入门3--数值运算的R函数
- R语言的常用函数速查
- 图片极致压缩,不失真
- 即将步入猿行业的新人一点想法
- Win8 Metro(C#)数字图像处理--2.64图像高斯滤波算法
- AFNetWorking快速教程
- 垃圾收集器无关参数整理。
- R语言下的frontcon函数,由mean-variance画有效前沿。
- android:padding和android:margin的区别
- iOS开发之Objective-C与JavaScript的交互
- Scratch源码使用ArduinoConnector.ane与串口通信
- log4j输出原则
- 01邻接矩阵创建_CreateMGraph.c
- Mysql主从配置
- TextView中ellipsize属性
- 第八周 项目四-string类的构造