|
Тема |
Re: Solver странност [re: Бypaн] |
|
Автор |
Viper X (just a snake...) |
|
Публикувано | 09.09.08 21:19 |
|
|
за 30 акции за 1 комбинация от тегла имаме ковариацонна матрица 30 на 30, т.е. 900 елемента,
вариацията на портфолиото при фиксирани тегла е
=MMULT(MMULT(weights;covarianceMatrix);TRANSPOSE(weights))
или което е същото като производителност (скорост)
=SUMPRODUCT(MMULT(weights;covarianceMatrix);weights)
както и да ги броя вътрешното MMULT са 900 умножения и събирания, външното са още 30, т.е. 930 умножения и събирания общо.. за 1 комбинация от тегла.. и това работи МНОГО ПЪТИ по бавно от когато въобще не изчислявам ковариационната матрица (тя се изчислява еднократно), ами изчислявам вариацията на портфейла, като за всеки от периодите изчисля възвръщаемостта. В моя пример имам 1410 периода с 30 акции.. изчисляването на възвръщаемостите за 1 комбинация от тегла би отнела 30*1410 операции събиране и умножение или над 40000.. сега ако от вектора на така изчислената възвръщаемост взема VARP - пак си работи бавно, струва ми се че с една идея по-бързо от когато умножавам матриците.. обаче ако разбия формулата VARP на 2 стъпки - изчисля ръчно отклоненията от средното и ги вдигна на квадрат и взема на тоя масив AVERAGE - всичко тръгва десетки пъти по-бързо.. напук на всичките ми представи, че трябва да се ползват колкото се може повече конкретни функции, защото са написани да работят по-бързо и да не се разбива така на отделни операции..
Може би първия метод - с ковариационната матрица - би работил най-бързо ако се разглеждат десетки или направо стотици хиляди периоди. Обаче дори с дневни доходности ако вземем интервал от 10 години например това са малко над 3000 периода само.. нещо яко е сбъркано при реализацията на по-рядко използваните екселски функции явно.. не са си дали зор да ги пооптимизират..
между другото опитах да пусна модела със 500 акции например, т.е. ковариационна матрица 500x500... след няколко часа чакане пред увисналия ексел солвъра не беше помръднал въобще..
иначе за Матлаб - ще го ползвам и него, пиша дипломна работа и трябва да го направя и с Ексел и с Матлаб..
-------------
|
| |
|
|
|