my Black-Scholes Function:
—————–
function C = bs ( Interest, Volatility, Stock, StrikePrice, TimeToMaturity )
d1 = (log(Stock ./ StrikePrice) + (Interest + (Volatility .^ 2) ./ 2) .* TimeToMaturity) ./ (Volatility .* sqrt(TimeToMaturity));
d2 = (log(Stock ./ StrikePrice) + (Interest – (Volatility .^ 2) ./ 2) .* TimeToMaturity) ./ (Volatility .* sqrt(TimeToMaturity));
C = normcdf(d1) .* Stock – normcdf(d2) .* StrikePrice .* exp(-Interest .* TimeToMaturity);
end
—————————————————————-
My new function for fsolve
—————
function F = myfunc(C, Interest, Volatility, Stock, StrikePrice, TimeToMaturity)
F = C – bs(Interest, Volatility, Stock, StrikePrice, TimeToMaturity);
end
—————————————————————–
Now I make C =261
volatility = fsolve(@(x) myfunc(261,0.05,x,1033.56, 775, 1/52), 1);
The answer should be around 1.12, but I only get these:
fsolve completed because the vector of function values is near zero as measured by the default value of the function tolerance, and the problem appears regular as measured by the gradient.
Equation solved. The sum of squared function values, r = 1.289886e-20, is less than sqrt(options.TolFun) = 1.000000e-03. The relative norm of the gradient of r, 9.923745e-10, is less than options.TolFun = 1.000000e-06.
Please Help!! Thank you very much!
Best Answer