第一次发博文,以后就在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^4maxReturn = 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)

R语言下的frontcon函数,由mean-variance画有效前沿。相关推荐

  1. R语言使用upper.tri函数、lower.tri函数、diag函数改变matrix矩阵上三角形、下三角形、对角线的数值

    R语言使用upper.tri函数.lower.tri函数.diag函数改变matrix矩阵上三角形.下三角形.对角线的数值 目录

  2. R语言 变量的操作函数

    R语言 变量的操作函数 1.变量变换 as.array(x),as.data.frame(x),as.numeric(x),as.logical(x),as.complex(x),as.charact ...

  3. R语言自定义极大似然估计函数、假设检验函数

    R语言自定义极大似然函数函数.假设检验函数 目录 一.自定义极大似然函数 二.自定义假设检验函数 目录 一.自定义极大似然函数 1.求出似然函数,以正太分布.指数分布为例 正太分布似然函数: 指数分布 ...

  4. R语言使用download.file函数下载网络文件到本地(Download File from the Internet)

    R语言使用download.file函数下载网络文件到本地(Download File from the Internet) 目录 R语言使用download.file函数下载网络文件到本地(Down ...

  5. R语言stringr包str_dup函数字符串多次复制实战

    R语言stringr包str_dup函数字符串多次复制实战 目录 R语言stringr包str_dup函数字符串多次复制实战 #导入stringr包 #仿真数据

  6. R语言stringr包str_count函数计算字符串匹配个数实战

    R语言stringr包str_count函数计算字符串匹配个数实战 目录 R语言stringr包str_count函数计算字符串匹配个数实战 #导入stringr包 #仿真数据

  7. R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色、添加抖动数据点jitter、误差条)并在X轴标签下方添加分组对应的统计值(样本数N、中位数、四分位数的间距iqr)

    R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色.添加抖动数据点jitter.误差条error bar)并在X轴标签下方添加分组对应的统计值(样本数N.中位数med ...

  8. R语言使用t.test函数计算两组独立数据的t检验(Independent t-test)

    R语言使用t.test函数计算两组独立数据的t检验(Independent t-test) 目录 R语言使用t.test函数计算两组独立数据的t检验(Independent t-test) #仿真数据

  9. R语言plyr包round_any函数将向量数据近似到任意精度实战

    R语言plyr包round_any函数向量将数据近似到任意精度实战 目录 R语言plyr包round_any函数向量将数据近似到任意精度实战 #导入plyr包 #仿真数据

最新文章

  1. Single-Shot Calibration:基于全景基础设施的多相机和多激光雷达之间的外参标定(IROS2021)...
  2. javascript页面登录代码_自己动手做一个很酷的登录页面
  3. raspberrypi 与 arduino 使用 nRF24L01+ 通信 -- raspberry pi为发送端
  4. c语言解三元一次方程组_一次二次反比例,一山更比一山高?二次函数三大解析式详解...
  5. [转]Ogre:Hardwarebuffer
  6. LINUX操作系统练习题
  7. 写给非网工的CCNA教程(6)VLAN和802.1q协议
  8. 产品经理必看书籍推荐
  9. 干货 | 团队建设共同愿景的探索
  10. 高性能Nginx服务器+互联网高并发解决方案+安全架构 蚂蚁学堂互联网架构师课程
  11. QQ抢车位游戏PhysicalDataModel
  12. 电子签名如何制作——word
  13. Ajax与Json的使用
  14. appstore上架所需截屏的制作方法
  15. rk3128 通过自带buildroot打包开发板根文件系统,重做自己的img镜像
  16. FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
  17. 攻防世界fileclude
  18. 番茄花园移花接木和微软的36计
  19. EFI VMware Virtual SCSI Hard Drive (0.0) ... No Media
  20. 计算机经典书籍电子书合集(适合计算机学生学习以及程序员笔试、面试)

热门文章

  1. 京喜APP - 图片库优化 | 京东云技术团队
  2. 程序员必会的计算机知识
  3. 高德地图web 输入提示+地图选点
  4. powerbi输入数据_获取数据集以添加行 - Power BI | Microsoft Docs
  5. 利用pandas处理复杂表格
  6. 艺赛旗(RPA)Mysql 数据查询慢 - 索引调优 Explain 用法
  7. CDR和DMG以及PKG的格式的区别
  8. java+解析png+gif图片_Java 转换png jpg gif格式图片的相互转换的实现
  9. 微软你再狠一些吧,把自己赶出中国
  10. 爱数16周年,从数据备份到全场景数据驱动的“Data+AI”