北太天元軟件對看漲期權(quán)問題的數(shù)值模擬

%北太天元軟件用Euler-Maruyama方法求解Black-Schoes方程 (Heston model)
%計(jì)算亞洲式看漲期權(quán)
%
%?d S = \mu S dt + S \sqrt{v} d W_1
%?d v= \kappa (\theta-v) dt + \beta \sqrt{v} d W_2
% S(t) 是t時(shí)刻的股票價(jià)格
% v(t) 是t時(shí)刻的股票的波動(dòng)率
% W_1 W_2 是兩個(gè)布朗運(yùn)動(dòng)
%參數(shù)的值
mu = 0.05; SK = 1.05; kappa = 2; beta = 0.1; theta = 0.09;
%假設(shè)初始的價(jià)格始1,然后你以0.05的價(jià)格買了在時(shí)間T=1的時(shí)候以1.05
%的價(jià)格買入此股票,那么
%如果在T=1?的時(shí)候,股票的價(jià)格是1.05則不賠不賺;
%如果在T=1?的時(shí)候,股票的價(jià)格高于1.05則賺;
%如果在T=1?的時(shí)候,股票的價(jià)格遠(yuǎn)遠(yuǎn)低于1.05,例如0.5,那么你最賠0.05;
%也就是期權(quán)能夠把你風(fēng)險(xiǎn)控制在一定范圍之內(nèi),在上面這個(gè)例子就是0.05
%初值
x_1 = 1; % S(0) 初值
x_2 = 0.09; % v(0) 初值
%假設(shè)股票在T =1 的時(shí)候的價(jià)格 S(1)
true_result = 1.0512;
error_em = zeros(1,5);
fin_value = zeros(1,5);
T = 1; % 最終時(shí)刻
n = 500; % [0,1]時(shí)間分成份數(shù)
dt = 1/n; %時(shí)間步長
mc = 20; % 蒙特卡羅方法的樣本量
S_value = zeros(1,mc); v_value = zeros(1,mc); Y_3_value = zeros(1,mc); Payoff_value = zeros(1,mc);
for p = 1:mc
???%生成兩個(gè)正態(tài)分布的隨機(jī)向量
???Z_1 = randn(1,n); Z_2 = randn(1,n);
???%用來儲存布朗運(yùn)動(dòng)的數(shù)組
???B_1 = zeros(1,n); B_2 = zeros(1,n);
???for k = 2:n %布朗運(yùn)動(dòng)的路徑
?????????B_1(1,k) = B_1(1,k-1) + sqrt(dt) * Z_1(1,k-1);
?????????B_2(1,k) = B_2(1,k-1) + sqrt(dt) * Z_2(1,k-1);
???end
???%S, v, Y3 :
???S = zeros(1,n); v = zeros(1,n); Y_3 = zeros(1,n); Payoff = zeros(1,n);
???%計(jì)算每個(gè)時(shí)刻的 S, v, Y_3
???S(1,1) = x_1; v(1,1) = x_2; Y_3(1,1) = x_1; %賦初值
???for k = 2:n
?????????dw_1 = B_1(1,k) - B_1(1,k-1);
?????????dw_2 = B_2(1,k) - B_2(1,k-1);
?????????S(1,k) = S(1,k-1) + mu*S(1,k-1)*dt + S(1,k-1)*sqrt(v(1,k-1))*dw_1;
?????????v(1,k) = v(1,k-1) + kappa*(theta - v(1,k-1))*dt + beta*sqrt(v(1,k-1))*dw_2;
?????????Y_3(1,k) = Y_3(1,k-1) + S(1,k-1)*dt;
?????????Payoff(1,k) = max(Y_3(1,k)/k-SK,0);
???end
???S_value(1,p) = S(1,n);
???v_value(1,p) = v(1,n);
???Y_3_value(1,p) = Y_3(1,n);
???Payoff_value(1,p) = Payoff(1,n);
end
fin_value = mean(S_value)
error_em = abs(fin_value - true_result);
plot(S_value)