r - 投资组合优化 -solve.QP - 约束不一致

2023-11-22

我正在尝试使用solve.QP来解决投资组合优化问题(二次问题)

总计 3 项资产

有4个限制:

  1. 权重之和等于 1
  2. 投资组合预期回报率为 5.2%
  3. 每项资产权重大于0
  4. 每个资产权重小于 0.5

Dmat 是协方差矩阵

Dmat <- matrix(c(356.25808, 12.31581, 261.8830, 212.31581, 27.24840, 18.50515, 261.88302, 18.50515,535.45960), nrow=3, ncol=3)

dvec 是每项资产的预期回报

dvec <- matrix(c(9.33, 3.33, 9.07), nrow=3, ncol=1)

Amat 是约束矩阵

A.Equality <- matrix(c(1,1,1), ncol=1)
Amat <- cbind(A.Equality, dvec, diag(3), -diag(3))

约束 A^T b >= b_0,b 向量

bvec <- c(1, 5.2, rep(0, 3), rep(-0.5, 3))

meq=2,由于有两个等式约束,因此第一个和第二个约束是相等的

然后我运行函数solve.QP

library(quadprog)
qp <- solve.QP(Dmat, dvec, Amat, bvec, meq=2)

但它给出了错误

Error in solve.QP(Dmat, dvec, Amat, bvec, meq = 2) : constraints are inconsistent, no solution!

我不确定我哪里做错了。


您发布的代码有两个问题:

  • 已发布的Dmat实际上并不对称;您不小心包含了值 212.31581 而不是 12.31581
  • The meq=2选项意味着您的前两个约束保持相等,这意味着您的权重总和为 1,并且您的回报率为 5.2%。第二个约束显然是导致不可行的原因;考虑到您的其他限制,似乎没有有效的投资组合的回报率恰好等于 5.2%。事实上,由于投资组合的回报率不能超过 3.33%,其余的回报率必须至少为 9.07%,因此回报率必须为 6.2% 或更高。因此,您应该通过设置将其放松为 >= 约束meq=1.

这是工作代码:

library(quadprog)
Dmat <- matrix(c(356.25808, 12.31581, 261.88302, 12.31581, 27.24840, 18.50515, 261.88302, 18.50515,535.45960), nrow=3, ncol=3)
dvec <- matrix(c(9.33, 3.33, 9.07), nrow=3, ncol=1)
A.Equality <- matrix(c(1,1,1), ncol=1)
Amat <- cbind(A.Equality, dvec, diag(3), -diag(3))
bvec <- c(1, 5.2, rep(0, 3), rep(-0.5, 3))
qp <- solve.QP(Dmat, dvec, Amat, bvec, meq=1)
qp$solution
# [1] 0.3808733 0.5000000 0.1191267

最佳解决方案实际上与 6.3% 的回报相关。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

r - 投资组合优化 -solve.QP - 约束不一致 的相关文章

  • 查找嵌套列表中元素的索引?

    我有一个类似的列表 mylist lt list a 1 b list A 1 B 2 c list C 1 D 3 是否有一种 无循环 方法来识别元素的位置 例如如果我想用 5 替换 C 的值 并且在哪里找到元素 C 并不重要 我可以这样
  • 简单的数据框重塑

    我刚刚从长时间的写作中断中回到 R 并且在记住如何重塑数据方面遇到了一些实际问题 我知道我想做的事情很容易 但出于某种原因 我今晚很愚蠢 并且将自己与融化和重塑混淆了 如果有人能快速指出我正确的方向 我将不胜感激 我有一个这样的数据框 pe
  • 如果“testthat”测试在“R”中失败,则打印自定义诊断信息

    I use a testthat单元测试来检查是否data frame函数返回的结果与我期望它返回的结果相同 如果测试失败 testthat打印一些诊断信息 例如 MyFunction df orig is not identical to
  • 指定 R 中 hist() 中的 bin 数量?

    我尝试指定垃圾箱的数量hist R为10 如下 gt hist x breaks 10 但垃圾箱的数量并不完全是 10 我尝试了几个其他数量的垃圾箱 结果发生了同样的情况 hist says breaks可以指定 给出直方图单元格数量的单个
  • 如何调整ggplot直方图的时间刻度轴

    我正在使用一个数据框 其中一列包含POSIXct日期时间值 我正在尝试使用绘制这些时间戳的直方图ggplot2但我有两个问题 我不知道如何设置 binwidthgeom histogram 我想将每个垃圾箱设置为一天或一周 我尝试提供 di
  • 如何使用 r 中的 caret 包在最佳调整超参数的 10 倍交叉验证中获得每次折叠的预测?

    我试图使用 R 中的插入符包使用 10 倍交叉验证和 3 次重复来运行 SVM 模型 我想使用最佳调整的超参数获得每次折叠的预测结果 我正在使用以下代码 Load packages library mlbench library caret
  • R read_excel:libxls 错误:无法解析文件

    我试图使用 readxl read excel 将 xls 文件读入 R 但它给出了以下错误 Error filepath data xls libxls error Unable to parse file 还尝试了 readxl exc
  • 使用 R 的 flextable 包时,有没有办法将传递给 add_header_lines() 的字符串部分加粗

    我正在使用我喜欢的 flextable 包为 Word 文档创建几个表格 但是 我在将表格标题中的部分文本加粗时遇到了一些麻烦 例如 我希望标题为 Table 1 我的表格标题的其余部分 而不是 表 1 我的表格标题的其余部分 I 找到这个
  • ggplot 中的错误问题:“grid.Call(”L_textBounds“, as.graphicsAnnot(x$label), x$x, x$y, … 中的错误”[重复]

    这个问题在这里已经有答案了 我试图在 ggplot 中制作一个条形图 其中我通过强制其中一些标签为长度为零的字符串 即 来指定要显示的标签 但是 我收到错误 Error in grid Call L textBounds as graphi
  • 错误:“rjags”的包或命名空间加载失败

    在终端的 conda 环境之一中 我能够成功安装包 rjags 但是 当我在该环境中运行 R 并运行库 rjags 时 出现以下错误 加载所需的包 coda 错误 rjags 的包或命名空间加载失败 rjags 的 loadNamespac
  • 从 R 环境中删除对象

    我正在阅读 Hadley 的 Advanced R 在第 8 章中 他说我们可以使用以下方法从环境中删除对象 rm 但是 移除该物体后我仍然可以看到该物体 这是我的代码 e lt new env e a lt 1 e b lt 2 e a
  • 从 R 中的 HTTPS 连接逐行读取

    当创建连接时open r 它允许逐行读取 这对于批量处理大数据流非常有用 例如这个脚本 https gist github com jeroenooms d33a24958d99bb969ac0通过一次读取 100 行来解析相当大的 gzi
  • 将 VLMC 拟合到很长的序列

    我正在尝试将 VLMC 拟合到最长序列为 296 个状态的数据集 我这样做如下所示 Load libraries library PST library RCurl library TraMineR Load and transform d
  • 将 sf voronoi 多边形裁剪到边界框时出错

    我正在尝试将 voronoi polygons 使用 sf package 创建 剪辑 到边界框 但它引发了我无法定义的错误 我对 R 的空间世界不太有经验 感谢所有帮助 样本数据 stations lt structure list ST
  • 将函数应用于 3d 数组的每一层,返回一个数组

    假设您有一个包含行 列和层的 3 维数组 A lt array 1 27 c 3 3 3 想象你有一个函数 它接受一个矩阵作为输入并返回一个矩阵作为输出 就像t 如何将该函数应用于数组的每一层 返回与第一层大小相同的另一个数组 我觉得我应该
  • 如何按 data.table 中的十分位数组计算统计数据

    我有一个 data table 想按组计算统计数据 R set seed 1 R DT data table a rnorm 100 b rnorm 100 这些组应该定义为 R quantile DT a probs seq 1 9 1
  • R 中的字符串作为函数参数

    数据框chocolates列出了糖果的类型以及每种糖果的一组评级 ID sweetness filling crash snickers 0 67 0 55 0 40 milky way 0 81 0 53 0 56 我正在编写一个函数 它
  • r 中的 5 维图

    我正在尝试在 R 中绘制 5 维图 我目前正在使用rgl包以 4 个维度绘制数据 使用 3 个变量作为 x y z 坐标 另一个变量作为颜色 我想知道是否可以使用这个包添加第五个变量 例如空间中点的大小或形状 这是我的数据和当前代码的示例
  • GGPLOT2:如何在 ggplot() 脚本中绘制特定选择

    这是一个名为的大型数据集的峰值P 其中有 10 个优惠 CS 有不同的商店 SHP 具有多个数值 数据集列出了按周排序的它们 WK 2 tm 52 它创建一个大文件 仅前 6 行出现峰值 WK MND CS SHP RevCY RevLY
  • 非闪亮上下文中的反应式对象绑定

    实际问题 你怎样才能近似反应性环境 行为 http shiny rstudio com tutorial lesson6 建立者shiny http shiny rstudio com函数 或者甚至可能在一个函数中使用这些函数无光泽上下文以

随机推荐

  • SQL Server 2012 Express 的修复/删除/安装进程卡住或挂起

    SQL Server 2012 Express 的一个实例因某种原因而损坏 我怀疑这在某种程度上与我使用实体框架有关 但还没有证据 当试图repair在实例中 修复过程似乎停留在 SqlEngineConfigAction repair v
  • 在delphi 7中制作向导界面

    我正在使用delphi 7 我正在尝试制作一个向导界面 我不知道是否有更简单的方法来制作向导 因此我正在考虑为向导的每个步骤制作单独的表单 当用户单击 下一步 时 活动表单将关闭并打开下一个表单 Here s a screen shot o
  • 优化 Berkeley DB 中的 Put 性能

    几天前我刚刚开始使用 Berkeley DB 所以我想看看在尽可能快地存储数据方面我是否遗漏了一些东西 以下是有关数据的一些信息 它有 512 字节块 块按顺序排列 块将按照 FIFO 顺序删除 如果我由于电源故障而丢失了一些数据 只要整个
  • Delphi中的自定义排序方法对字符串列表进行排序

    我正在尝试在 Delphi 中对文件列表 它们存储为字符串列表 进行排序 其名称如下所示 a 1 xml a 20 xml a 10 xml a 2 XML 当我使用快速排序时sort文件名 它对文件名进行排序如下 a 1 xml a 10
  • 为什么阻塞系统调用会阻塞用户级线程的整个过程?

    我不明白以下内容 用户级线程需要非阻塞系统调用 即多线程内核 否则 即使进程中还有可运行的线程 整个进程也会在内核中阻塞 内核线程如何处理阻塞系统调用 在用户级线程中 当一个线程正在进行阻塞系统调用 例如读取 时 为什么其他线程不能继续其工
  • 如何获取 LAN 上的活动 IP 地址、MAC 地址和 NetBIOS 名称的列表?

    如何获取活动 IP 地址 MAC 地址和NetBIOS局域网上的名称 我想获取 NetBIOS 名称 IP 和MAC地址对于 LAN 上的每台主机 最好不必亲自走到每台 PC 处记录这些内容 如何做到这一点Windows 脚本宿主 Powe
  • npm 警告 npm npm 不支持 Node.js v9.1.0

    我更新到最新的节点 v9 1 0 现在 npm 不起作用 npm 警告 npm npm 不支持 Node js v9 1 0 事实证明 当前安装的npm与新的不兼容node并且很难更新 解决办法就是卸载npm然后重新安装node其中将包含正
  • 关于iPhone上URL中NSString字符无效的问题

    我的一些http请求的URL中有 空格 但iPhone无法识别它 每当网址中存在 空格 时 我就必须将 空格 更改为 20 现在我必须将用户输入的消息发送到服务器 并且它可以具有用户喜欢的任意多个 空格 看起来我必须把它们全部替换掉 str
  • 使用 google plus 登录时出现“无法创建与服务器的可靠连接”错误

    我正在开发一个应用程序 我想在其中使用 google plus 登录 我已按照以下步骤操作https developers google com mobile android sign in 但是当我尝试使用 google api 示例项目
  • 使用库 mouse() 中的估算数据集来拟合 R 中的多级模型

    我是包装新手mice但我试图从 R 中估算 5 个数据集popmis然后拟合一个lmer model with 每一个和最后pool 穿过他们 我觉得pool 函数于mice 不适用于lmer 来电来自lme4包 对吗 如果是这样的话 有没
  • 如何获取用户的所有 github `PushEvents` 列表

    我可以查看特定用户的所有事件 例如这里是我的 https api github com users arasbm events 但我只对特定类型的事件感兴趣 type PushEvent 如何获取这些数据而不必处理所有事件的列表 这可能很慢
  • 关于 cudaMemcpyAsync 函数

    我有一些疑问 最近在用CUDA做一个程序 在我的程序中 Host 上有一个用 std map string vector int 编程的大数据 通过使用这些数据 一些向量 int 被复制到GPU全局内存并在GPU上处理 处理后 在 GPU
  • 逆透视 SQL 表中的所有列

    我有一个包含 30 列的表 我想轻松地取消透视所有列 我知道我可以使用这个策略 SELECT col value INTO New Table FROM SELECT FROM Test Data p UNPIVOT value FOR c
  • 在页面加载时使用 javascript(无 jquery)自行调整窗口大小并居中

    这不是我们通常会做的事情 但我们正在尝试将视频加载到由 clickTag 来自横幅广告 打开的空白窗口中 并使其尽可能感觉像模态窗口 是否可以使用javascript自行调整clickTag打开的空白窗口的大小并将其置于屏幕中央 我们无法对
  • Flutter Facebook 网页登录

    我已经尝试过Flutter Facebook 登录包 它在 android 中工作正常 但在 web 中我没有被重定向到 Facebook 进行身份验证 尝试过这个软件包的人可以帮忙吗 该插件不支持网页 但有人更新了代码以支持 romulo
  • 从列表集合中删除项目而不删除

    我正在制作一个集合 我需要从集合中删除一项并使用过滤 删除的集合 这是我的代码 public class Emp public int Id get set public string Name get set List
  • 在视频 FFmpeg 上添加图像叠加

    我有一个视频 test mp4 和一个图像 test png test png是一个黑色图像 中心有一个透明的 洞 我想使用 FFmpeg 显示test png在视频上方 所以我只能看到一圈视频 如果可能的话 调整大小test png适应视
  • USSD 消息中的最大字符数是多少?

    据我了解 USSD 消息由 160 个字节组成 对于 7 位数据编码方案 最大字符数为 160 8 7 即 182 个字符 我不清楚 UCS2 编码的最大字符数是多少 通常情况下 它会类似于 160 2 但我对此有一些复杂的信息 USSD
  • SSO - SAML,成功登录后将用户重定向到指定的登录页面

    我正在实施 SSO 其中我是身份提供商 现在我能够成功登录服务提供商 但它带我到主页 我想在发布响应时指定着陆页 URL 进行了很多搜索 但找不到任何令人信服的东西 不太清楚 SAML 响应的哪个元素带有登陆页面 URL 或者是我必须指定的
  • r - 投资组合优化 -solve.QP - 约束不一致

    我正在尝试使用solve QP来解决投资组合优化问题 二次问题 总计 3 项资产 有4个限制 权重之和等于 1 投资组合预期回报率为 5 2 每项资产权重大于0 每个资产权重小于 0 5 Dmat 是协方差矩阵 Dmat lt matrix