Matlab Black-Scholes公式如何从B&;价格

Matlab Black-Scholes公式如何从B&;价格,matlab,finance,solver,volatility,Matlab,Finance,Solver,Volatility,我刚开始学习matlab,有一个问题可能很简单 我得到了Black&Scholes公式,得到了具有以下输入参数的看涨期权价格: 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) 我对这个函数没有问题,但是我需要得到black-scho

我刚开始学习matlab,有一个问题可能很简单

我得到了Black&Scholes公式,得到了具有以下输入参数的看涨期权价格: 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)
我对这个函数没有问题,但是我需要得到black-scholes波动率

我有如下输入:
S,K,r,T,blackscholeprice
,我想返回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)"
使用symfun>validateArgNames时出错(第211行) 第二个输入必须是唯一符号变量的标量或向量。 symfun中的错误(第45行) y、 vars=验证信号(输入); sym/subsasgn中的错误(第762行) C=symfun(B,[inds{:}]); normcdf>localnormcdf(第100行)中出错
p(sigma==0&x您正在尝试寻找隐含波动率。因此,您可以使用。使用此函数会更容易,只需您需要根据输入值进行输入。

您确定B&S公式中的波动率与隐含波动率相同吗?非常感谢!