使用Excel VBA,给定50股的每日价格,选择10只股票,使其具有最小相关性

时间:2010-04-15 15:51:39

标签: excel vba stocks correlation stockquotes

高级目标是从50个池中选择10个彼此之间相关性最低的股票,这样我就可以拥有一个多元化的投资组合。

我设法写了一些VBA宏来下载雅虎财经过去3年的每日价格数据,然后计算50x50相关矩阵(使用Correl函数),使用每日收盘作为数据。

到目前为止,我所尝试的只是一些局部最大启发式:

  • 对于彼此相关性最高的两只股票,请删除其中一只股票。在两者之间,删除与所有其他股票具有较高平均相关性的那个。
  • 当我从池中删除库存时,我只是删除相应的行和列,以提供更小的矩阵。
  • 重复直到我只剩下10个库存(10x10矩阵)。

我想知道是否有一些算法已经解决了这个问题并提供了最佳解决方案?

2 个答案:

答案 0 :(得分:0)

我不完全确定您的描述,但我想您想查看有关STDEV功能的帮助。更多信息也here

大多数人使用它来屏蔽像差,而你会筛选出非像差(这也是一种非常常见的用法,例如批量识别“问题情况”)。

答案 1 :(得分:0)

MATRIX包具有一些有用的功能,可以让你进行主成分分析(PCA)甚至独立成分分析(ICA)来做更通用和有原则的方法。