高级目标是从 50 只股票中选择 10 只相互关联度最低的股票,这样我就可以拥有一个多元化的投资组合。
我设法编写了一些 VBA 宏来从 Yahoo Finance 下载过去 3 年的每日价格数据,然后使用每日收盘价作为数据计算 50x50 相关矩阵(使用 Correl 函数)。
到目前为止,我所尝试的只是一些局部最大启发式:
- 对于彼此相关性最高的两只股票,删除其中一只。在两者之间,删除与所有其他股票具有较高平均相关性的那只。
- 当我从池中删除股票时,我只删除相应的行和列,以提供更小的矩阵。
- 重复直到我只剩下 10 只股票(10x10 矩阵)。
我想知道是否有一些算法已经解决了这样的问题并给出了最佳解决方案?