2014-10-05 37 views
1

我剛開始使用matlab,有一個問題可能很簡單?Matlab Black Scholes公式如何從B&S價格獲得波動率

我有黑色& 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) 

我有這個功能沒有probleme,但我需要得到布萊克斯科爾斯波幅:期權價格由下式給出。

我有作爲輸入:S, K , r , T , BlackScholesPrice,我想返回西格瑪。

我試着用「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)" 

如果有人有一個想法,將是真棒。 Thx all'

回答

0

您正在嘗試尋找隱含波動率。爲此,您可以使用blsimpv。使用這個函數會更容易,只是需要根據輸入進行輸入。

+0

您確定B&S公式中的波動率與隱含卷是相同的嗎? – 2014-10-05 12:53:22

+0

亞..波動隱含從BS價格被稱爲隱含卷.. – lakesh 2014-10-05 12:58:41

+0

偉大非常感謝你! – 2014-10-05 13:00:45