Matlab Black Scholes公式如何从B& S价格获得波动

时间:2014-10-05 09:46:05

标签: matlab finance solver volatility

我是从matlab开始的,有一个简单的问题吗?

我获得了Black& Scholes公式以获得具有以下输入参数的看涨期权价格: S =股票价格,K =走势,r =利率,T =到期时间,sigma =波动率

看涨期权价格由:

给出
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)

我对这个功能没有任何疑问,但是我需要让黑色的scholes波动。

我有输入:S, K , r , T , BlackScholesPrice我希望返回sigma。

我试过“syms sig; solve(”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)"

如果有人知道它会很棒。谢谢所有'

1 个答案:

答案 0 :(得分:1)

您正在尝试查找隐含波动率。为此,您可以使用blsimpv。使用此功能会更容易,只需要根据输入提供输入。