【问题标题】:How can I make the sum of the weights (for the stocks in my portfolio) be equal to 1 while using a genetic algorithm?在使用遗传算法时,如何使权重总和(对于我投资组合中的股票)等于 1?
【发布时间】:2023-03-05 07:51:01
【问题描述】:

我在 R 中运行遗传算法,为投资组合中的股票选择权重,同时具有最高的回报/风险比。问题是权重需要总计为 1,但我到目前为止尝试过的代码不起作用。任何帮助将不胜感激。

这是我的代码:

normalise=function(v){v/sum(v)}
f=function(weights){
  weights=normalise(weights)
  (weights%*%returns)/(weights%*%variances)

}
GA=ga(type="real",fitness=f,lower=rep(0,length(positive)),
      upper=rep(1,length(positive)),maxiter=20000,run=300)

【问题讨论】:

  • 提供一个小型的、可重现的数据集,以便我们了解您的问题的一些背景信息。查看here 以获取有关如何创建可重现示例的说明。

标签: r genetic-algorithm stock portfolio genetic-programming


【解决方案1】:

那是因为您实际上并没有“修复”解决方案:您只是在评估之前将其映射到可行的解决方案。这是你可能实际做的事情;但是您还必须映射 GA 的解决方案,即标准化 GA 返回的权重。 (例如参见Maringer, D. and Oyewumi, O. (2007). Index Tracking with Constrained Portfolios。)

【讨论】:

  • 好的,我明白了。所以你的意思是,权重也应该在 GA 之外进行归一化。我分别使用了这两种方法。但这不会使 GA(上面的代码)内部的规范化变得多余吗?
  • 不,不会。您希望 GA 找到标准化后看起来不错的解决方案,因此您需要将这样的解决方案传递给目标函数。否则,目标函数可能会导致标准化后看起来很糟糕的解决方案。
猜你喜欢
  • 1970-01-01
  • 2019-06-05
  • 2021-06-15
  • 1970-01-01
  • 1970-01-01
  • 2020-07-28
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
相关资源
最近更新 更多