我在excel中使用Solver来解决最优投资组合权重,但有一个约束我不知道如何定义。
优化问题是我有12只股票,我希望找到一个最优,其中一个限制是投资组合中使用了六个或更多股票。
有谁知道我怎么做到这一点?
(如果有任何差异,权重总和为1
。)
是否有可能在求解器中生成IF语句?
我不确定的最后一个约束是如何声明投资组合中只考虑5%或更多的权重。
答案 0 :(得分:0)
我认为您有12个决策变量w_1, w_2 ,..., w_12
,其中w_i
是投资组合中股票i
的权重。引入12个新的决策变量b_1, b_2, ..., b_12
,它们被约束为二进制(0或1) - 在求解器中易于实施。添加一个新约束,其中这些约束的总和应为> = 6.您需要确保
b_i = 1 <=> w_i > 0
并且
w_i > 0 => w_i >= 0.05
添加以下24个约束(每个库存2个):
0.05 * b_i <= w_i <= b_i
0.05 * b_i <= w_i
时约束w_i >= 0.05
强制b_i = 1
。如果w_i <= b_i
b_i = 1
会强制w_i > 0
在电子表格中,如果您的决策变量位于列中,则可以引入标记为您的决策变量旁边的Used?
用于保存新的决策变量,也许还有另一列用于保存产品0.05 *b_i
。
最后一点 - 在一个单元格中将最小权重0.05
放在某处可能是好的,而不是硬连接,以便可以修改它。