|
Тема |
Solver странност |
|
Автор |
Viper X (just a snake...) |
|
Публикувано | 09.09.08 11:03 |
|
|
открих нещо много странно и би ми се искало някой още да го изпробва и потвърди...
оптимизирам със Solver един модел, целевата функция е вариацията на един масив --> VARP(arrayName)
когато ръчно разпиша изчисляването на вариацията (т.е. изчисля си отклоненията от средното, повдигна ги на квадрат и им взема AVERAGE) скоростта на Solver се вдига многократно в сравнение с когато използвам готовата VARP функция.
По-конкретно става дума за оптимизиране на портфейл (теорията на Марковиц). Когато изчисля вариацията на портфейла чрез матрицата на ковариациите (с помощта на MMULT) всичко тръгва още по-ужасно бавно.. При разглеждани 30 акции, т.е. ковариационната матрица е 30 на 30 или 900 елемента само, за изчисляването на вариацията по този метод трябват около 1000 умножения и събирания само и въпреки всичко е ужасно бавно.
Така реално решението, което би трябвало да е най-бързо (с ковариационната матрица) работи най-бавно, почти толкова бавно колкото него е и решението с VARP, т.е. когато изчислявам за всеки от периодите възвръщаемостта на портфейла и после взимам вариацията. Тук броя на изчисленията е с порядък по висок, защото броя периоди е например 1500 и въпреки това работи не по-бавно, дори ми се струва че маалко по-бързо.
И когато заменя VARP с ръчно изчисляване на повдигнатите на квадрат отклонения и взимане на средното - и започва да лети.. голяма мистерия :)
(излях си мъката, не че очаквам кой знае какви сериозни мнения по темата )
-------------
|
| |
|
|
|