2010-04-15 19 views
0

高级目标是选择10只彼此具有最低相关性的股票, ,这样我可以有一个多元化的投资组合。使用Excel VBA,考虑到50只股票的每日价格,选择10只股票以使它们具有最小相关性

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

我迄今试图只是一些局部的最大启发:

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

我想知道是否有一些算法,已经解决了这样的问题,并给出了最佳的解决方案?

+0

没有什么比用你的储蓄信任VBA脚本... – 2010-04-15 15:55:36

+1

好吧,嘿,VBA确实使用银行家的舍入...... :) – 2010-04-15 16:01:22

回答

0

我不完全确定你的描述,但我想你想看看STDEV函数的帮助。更多信息还有here。大多数人使用它来筛选畸变,而你将筛选出非畸变(这也是一种非常常见的用法,例如在一批中识别“问题病例”)。

+0

我正在使用CORREL函数,而不是STDEV:http://office.microsoft .COM/EN-US/EXCEL/HP052090231033.aspx 假设A列有股票A的价格,塔B股票B的价格,我会使用计算相关: = CORREL(A:A,B:B) – correl 2010-04-15 18:08:16

+0

好的。对不起,我的无知,并感谢您的耐心! – Smandoli 2010-04-15 18:40:49

0

MATRIX包有一些有用的功能,这将让你做的主成分分析(PCA),甚至独立成分分析(ICA)做了较为全面和有原则的办法。