Задача связана с финансовой моделью Блека-Шоулса (извините за специфическую терминологию, примененную ниже):
исходные данные (все известны):
текущий день = t0;
день исполнения = t1;
число дней до исполнения = (t0 - t1);
доля года до исполнения t = (t0 - t1)/365;
цена финансового актива = Е;
страйк опциона = S;
волатильность = v;
Дальнейшие вычисления в Эксель сводятся к определению конечной величины Р.
промежуточные вычисления:
arg1 = (LN(S/E) + (v*v*t*0,5))/(v*КОРЕНЬ(t));
arg2 = arg1 - v*КОРЕНЬ(t);
nd1 = НОРМСТРАС(arg1);
nd2 = НОРМСТРАС(arg2);
завершающее вычисление:
Р = S*nd1 - E*nd2;
А теперь собственно вопрос:
Мне необходимо провести обратный процесс в Эксель, т.е. по известному значению Р определить неизвестное значение v. Наличие функции НОРМСТРАС() сводит вычисление v к подстановке v методом перебора. В принципе в Эксель я решаю это при помощи "Поиска решения". Однако этот метод подходит, если нужно провести 1-5 вычислений. А если их надо провести 1000-3000?
Прошу знатоков подкинуть идею либо процедуры либо процедуры с функцией на VBA, которые помогли бы решить такого рода задачу.
Конкретный пример:
Дано:
до исполнения (в долях от целого года) t = 0,10;
цена актива Е = 100
страйк опциона S = 100
цена опциона Р = 1
Требуется (пользуясь моделью Блека-Шоулса) найти неизвестное значение v.
Как это сделать, используя возможности VBA?