Я совсем начинаю с Matlab, и у меня есть вопрос, может быть, простой?
Я получил формулу Блэка и Шоулза, чтобы получить цену опциона колл со следующими входными параметрами: S = цена акции, K = страйк, r = курс, T = время до экспирации, сигма = волатильность.
Цена опциона колл определяется:
C(S,K,r,t,sigma) = S *N(d1) - K e^-rT *N(d2)
d1 = (1/sqrt(T))*(ln(S/K)+(r+0.5*sigma^2)*T)
d2 = d1 - sigma*sqrt(T)
У меня нет проблем с этой функцией, но мне нужно получить волатильность Блэка Скоулза.
У меня есть входы: S, K , r , T , BlackScholesPrice
, и я хочу вернуть сигму.
Я попытался с "syms sig; решить ("blackscholesequation" == blacksholesprice, sig);" но делать нечего, постоянно ошибка
"Error using symfun>validateArgNames (line 211)
Second input must be a scalar or vector of unique symbolic variables.
Error in symfun (line 45)
y.vars = validateArgNames(inputs);
Error in sym/subsasgn (line 762)
C = symfun(B,[inds{:}]);
Error in normcdf>localnormcdf (line 100)
p(sigma==0 & x<mu) = 0;
Error in normcdf (line 46)
[varargout{1:max(1,nargout)}] = localnormcdf(uflag,x,varargin{:});
Error in BlackScholesInverse (line 3)
solve(S0*normcdf((log(S0/K)+(r+0.5*sig*sig)*T)*(1/(sig*sqrt(T))))-K*exp(-r*T)*normcdf((log(S0/K)+(r+0.5*sig*sig)*T)*(1/(sig*sqrt(T)))-sig*sqrt(T))==
prixBS,sig)"
Если у кого-то есть идея, это было бы здорово. Спасибо всем