How to find implied volatility using "solve"?

13 Ansichten (letzte 30 Tage)
Tiancong
Tiancong am 21 Jan. 2014
Kommentiert: Tiancong am 21 Jan. 2014
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
------------------
Now given that
bs ( 0.05, Volatility, 1033.56, 775, 1/52) = 261
How do we use "solve" function to find out what the Volatility is?

Akzeptierte Antwort

Amit
Amit am 21 Jan. 2014
You create a new function:
function F = myfunc(vol,C,Interest, Stock, StrikePrice, TimeToMaturity)
F = C - bs(Interest,vol,Stock,StrikePrice,TimeToMaturity);
and then solve it using fsolve
iniGuess = 10;
volatility = fsolve(@(x) myfunc(x,261,0.05,1033.56, 775, 1/52),iniGuess);
  1 Kommentar
Tiancong
Tiancong am 21 Jan. 2014
Thank you very much! However, the I still can't get the right result, could you help me again please! Thank you!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Financial Data finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by