используя Excel VBA, учитывая дневную цену 50 акций, выберите 10 акций так, чтобы они имели минимальную корреляцию

Основная цель состоит в том, чтобы выбрать 10 акций с наименьшей корреляцией между собой из пула из 50, чтобы у меня был хорошо диверсифицированный портфель.

Мне удалось написать некоторый макрос VBA, чтобы загрузить ежедневные данные о ценах за последние 3 года из Yahoo Finance, а затем вычислить матрицу корреляции 50x50 (используя функцию Correl), используя дневное закрытие в качестве данных.

То, что я пробовал до сих пор, - это просто эвристика локального максимума:

  • Для двух акций, имеющих наибольшую корреляцию друг с другом, удалите одну из них. Из этих двух удалите ту, которая имеет более высокую среднюю корреляцию со всеми остальными акциями.
  • Когда я удаляю запас из пула, я просто удаляю соответствующую строку и столбец, чтобы получить меньшую матрицу.
  • Повторяйте, пока у меня не останется всего 10 акций (матрица 10x10).

Мне было интересно, есть ли какой-то алгоритм, который уже решает такую ​​задачу и дает оптимальное решение?


person correl    schedule 15.04.2010    source источник
comment
Нет ничего лучше, чем доверить свои сбережения сценарию VBA...   -  person Ben S    schedule 15.04.2010
comment
Ну, эй, VBA использует банковское округление... :)   -  person rh.    schedule 15.04.2010


Ответы (2)


Я не совсем уверен из вашего описания, но я думаю, что вы хотите проверить справку для функции СТАНДОТКЛОН. Дополнительная информация также здесь.

Большинство людей используют это для отсеивания аберраций, в то время как вы будете отсеивать неаберрации (и это также довольно распространенное использование, например, для выявления «проблемных случаев» в пакете).

person Smandoli    schedule 15.04.2010
comment
Я работаю с функцией CORREL, а не с STDEV: office.microsoft.com/ en-us/excel/HP052090231033.aspx Предположим, что в столбце A указаны цены акций A, а в столбце B — цены акций B, я вычислю корреляцию, используя: =CORREL(A:A,B:B) - person correl; 15.04.2010

В пакете MATRIX есть несколько полезных функций, которые позволят вам выполнять анализ главных компонентов ( PCA) или даже анализ независимых компонентов (ICA), чтобы использовать более общий и принципиальный подход.

person Matt Mizumi    schedule 17.08.2010