2017-02-10 32 views
0
波幅估計

我的分配的subquestion需要經由Black和Scholes期權定價公式,是計算隱含波動率σ:Black和Scholes引伸通過rootsolving

BS Formula

更具體而言,它需要解決當所有參數給定值時,該方程式通過對σ進行基礎化。

我正在嘗試使用MATLAB的fzero函數來估計σ。我創建了兩個腳本。

拳頭腳本包括:

S_0 = 1403; % Stock Price 
K = 1350 ; % Strike Price 
rf = 0.0534; % Risk Free Rate 
div=0.0118; % Divident Rate 
T=0.1028; % Maturity Period 
C=81;% Call option value 
fixed_input=[S_0,K,rf,div,T,C];% Construct vector input values 
save ('fixed_input.mat','fixed_input'); 
imp_vol_ini=0.1; % Initial Implied Volatility Value 
BlackScholes = @BSF; 
[imp_vol,y]=fzero(BlackScholes,imp_vol_ini) 

雖然第二腳本包括代碼:

function y=BSF(imp_vol) 
load fixed_input 
S_0=fixed_input(1); 
K=fixed_input(2); 
rf=fixed_input(3); 
div=fixed_input(4); 
T=fixed_input(5); 
C=fixed_input(6); 
d1_nominator=log(S_0/K)+(rf-div+(imp_vol^2)/2)*T; 
d1_denominator=imp_vol*sqrt(T); 
d1=d1_nominator/d1_denominator; 
d2=d1-imp_vol*sqrt(T); 
y=C-(exp(-div*T))*S_0*normcdf(d1)+K*(exp(-rf/T))*normcdf(d2); 
end 

代碼工作,但數字是不合理的。通常,解決之後,y應接近於零,而σ應位於區間[0.1,0.3]之間,但情況並非如此。我檢索的號碼是y=81,而σ=-2.7018e-16

我覺得這與fzero的約束條件和選項有關。你能幫我麼?

+0

給那個人一枚獎章!!!非常感謝!完美的作品! – Whitebeard13

+0

@Sardar_Usama:你知道我該如何避免保存和加載部分,並通過'BlackScholes = @BSF來傳遞固定值(S_0,K等)。 [imp_vol,y] = fzero(BlackScholes,imp_vol_ini)'通過保持穩定並僅優化σ? – Whitebeard13

回答

1

錯誤是BSF函數的最後一行是:

y=C-(exp(-div*T))*S_0*normcdf(d1)+K*(exp(-rf/T))*normcdf(d2)‌​; 
%           ↑ 

你寫了/,而不是*。它應該是這樣的:

y=C-(exp(-div*T))*S_0*normcdf(d1)+K*(exp(-rf*T))*normcdf(d2)‌​; 
%           ↑ 
+0

只是好奇,你如何使這些漂亮的箭頭? – codeaviator

+1

@Cebri hah'Alt + 24'(來自NumPad的24)使''' –