问题标签 [quadprog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 如何解决具有广义目标函数的投资组合优化?
我有一个由 5 只股票组成的投资组合,我想为其找到最小化投资组合方差和最大化预期未来股息的最佳组合。后者来自分析师的预测。我的问题是我知道如何解决最小方差问题,但我不确定如何将二次形式转换为 quadprog 目标函数的正确矩阵形式。
标准最小方差问题读取
Min! ( portfolio volatility )
哪里r
有五只股票的 252 日收益,d
有预期的年度股息收益率(firm_A
支付 1 %,firm_B
支付 2 %等)
我将其编程如下
显然,r
标准正常的回报,因此每只股票的权重约为 20%。
Q1:
我如何解释firm_A
支付股息 1、firm_B
股息 2 等的事实?
新的目标函数如下:
Max! ( 0.5 * Portfolio_div - 0.5 * Portfolio_variance )
但我不知道如何对其进行硬编码。投资组合方差很容易输入,Dmat
但新的目标函数具有Portfolio_div
定义为具有五个权重Portfolio_div = w * d
的元素。w
非常感谢。
EDIT:
也许添加一个更高级别的问题描述是有意义的:我可以对上面的代码使用最小方差优化。最小化投资组合方差意味着优化方差协方差矩阵Dmat
(维度为 5x5)的权重。但是,我想在优化中添加一个额外的部分,即红利d
乘以权重(因此尺寸为 5x1)。相同的权重也用于Dmat
.
Q2:
如何将向量添加d
到代码中?
EDIT2:
我想答案是简单地使用
因为我通过最小化负数的倒数来最大化预期股息。
Q3:
有人可以告诉我这是否正确吗?
optimization - 嵌套约束下的投资组合优化
我正在尝试解决一个投资组合优化问题,我希望在没有卖空的约束下最大化 4 个资产的风险/回报,并且权重之和应该等于 1。因为其中两个资产是 S&P500 (w1) 和Nikkei 225 (w2) 货币对冲到英镑,另外两个也是 S&P500 (w3) 和 Nikkei 225 (w4) 但这次货币未对冲到英镑。我想知道的是定义货币对冲水平和最大化每种资产的回报/风险的权重。所以权重应该遵守以下约束: w1+w3 = 0.5, w2+w4=0.5 , w1+w2+w3+4=1 , w1=(1-w3) , w2=(1-w4) 和 w1 到 w4 >=0。我过去一直在使用 quadprog,并且有几行代码可以在没有卖空的情况下最大化风险/回报,并且从以前的帖子/问题中获得最小最大范围约束下的投资组合优化。因此,我了解如何对大部分内容进行编程,但我不确定如何正确编码 bVec 中的补充约束,即 w1=(1-w3) & w2=(1-w4) 。我认为可以通过在代码中重新编程 bVec <- c(1,min_A,0,-max_A,-1) 来完成,但不确定如何执行此操作....任何帮助/线索表示赞赏...
r - 最大化回报——投资组合优化
另一个投资组合优化问题......
考虑到使用 quadprog 的限制 sum(P) = 1、MaxW <= 0.55 和 MinW >= 0.05,我试图最大化四个资产的投资组合的回报。
期间的平均回报是
而协方差矩阵是
我已经走到这一步了
哪个返回
作为最优分配。
在 Excel 中使用相同的数据,我得到了另一种解决方案(回报更高);
但是,将上限设置为 0.65,R 和 Excel 都会返回相同的解决方案;
我错过了什么?
r - r solve.QP:约束不一致,无解
我试图找到这个问题的全局最小值,但我无法弄清楚为什么会出现上述错误。我正在尝试将 5 个资产设置为等于确切权重,并在一个值范围内优化其他 5 个。我宁愿不使用 meq=5 选项。
r - 求解错误.QP
所以基本上我有两个包含股票超额收益(R)和预期超额收益(ER)的矩阵。
然后我将这些删除 R 的第一行并添加 ER 的第一行以形成一个新的矩阵 R1。
然后我对 R2 执行此操作,即删除和 R 的前两行并将其与 ER 的前两行绑定。
我这样做,直到我有从 R1 到 R47 的 n-1 个新矩阵。
然后我使用 cov() 即 Var-Cov1 到 Var-Cov47 找到每个返回矩阵的 Var-Cov 矩阵。
我现在正在尝试使用 quadprog 查找资产分配。例如:
由于某种原因,在使用任何 Var-Cov 矩阵运行solve.QP 时发现我收到此错误:
我想知道我做错了什么,甚至为什么这不起作用。
scip - SCIP 混合整数二次规划使用
我想使用包含在我的源代码 (C++) 中的 SCIP 来解决 MIQP,除了这个 FAQ 条目之外没有找到如何去做:
SCIP 不支持非线性目标函数,必须将其建模为约束函数。请注意,对非二次非线性约束的支持仍处于 BETA 阶段,还不如 SCIP 的其余部分强大。非线性变量和微小或巨大系数的缺失界限很容易导致数值问题,这可以通过仔细建模来避免。
我已经设法为目标函数构建了表达式树。我想知道:
- 如果必须将 MIQP 建模为 MINLP,那么此约束函数建模如何工作?上限是可变的吗?
- 如果有 MIQP 的特定方法,我在哪里可以找到有关它的文档?
r - solve.QP() $value 与数值计算不一致
我有一个关于这个算法的问题需要回答,因为我正在审核我的模型并且这种不一致是令人担忧的。
我正在使用它们必须总和为 1 的约束进行均值方差优化,并且权重必须在我指定的范围内。我的输入如下:
然后我运行:
问题是我为最后一个命令得到了 FALSE。这不是一个四舍五入的问题,它们相差近 20%。
有谁知道问题是什么?
r - 求解具有非线性约束的二次优化
我正在尝试解决以下二次规划问题:
最小w w T Σ w ,
st w T e = 1,
st。‖w ‖<sub>1 ≤ δ
其中A
是单位矩阵,Sigma
是协方差矩阵,e
是 1 的向量。
第一个约束确保解决方案加起来为一个。
第二个约束确保解的绝对值之和(1-范数)小于或等于某个常数。
我试图通过以下方式解决这个问题:
我想知道:
这个解决方案正确吗?
是否有替代(更简单)的方法来解决它?使用解决方案
solnp()
需要永远完成更大的任务。
python - 找到最小化函数的最优向量
我试图找到一个在乘以矩阵时最小化残差平方和的向量。
我知道 scipy 的优化包(它具有最小化功能)。但是,我的代码有一个额外的限制。w 的所有条目的总和(见下面的函数)必须等于 1,并且 w 的任何条目都不能小于 0。有没有一个包可以为我做这个?如果没有,我该怎么做?
试图最小化 w:
到目前为止,这是我循环遍历 w 的可能值的最佳尝试,但它无法正常工作。
r - 目标函数中具有 a_ix_i^2 项的二次规划
关于二次规划,我将如何设置目标函数,例如
min ∑a_i (x_i )^2
以“quadprog”或“limSolve”包的矩阵形式(对于这个包,我不确定它是否需要以矩阵形式)?
从我目前看到的讨论来看,没有二次项的乘法。