欢迎光临散文网 会员登陆 & 注册

北太天元软件对看涨期权问题的数值模拟

2023-02-12 21:54 作者:卢朓  | 我要投稿

%北太天元软件用Euler-Maruyama方法求解Black-Schoes方程 (Heston model)

%计算亚洲式看涨期权

%

% 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时刻的股票价格

% v(t) 是t时刻的股票的波动率

% W_1 W_2 是两个布朗运动

%参数的值

mu = 0.05; SK = 1.05; kappa = 2; beta = 0.1; theta = 0.09;

%假设初始的价格始1,然后你以0.05的价格买了在时间T=1的时候以1.05

%的价格买入此股票,那么

%如果在T=1 的时候,股票的价格是1.05则不赔不赚;

%如果在T=1 的时候,股票的价格高于1.05则赚;

%如果在T=1 的时候,股票的价格远远低于1.05,例如0.5,那么你最赔0.05;

%也就是期权能够把你风险控制在一定范围之内,在上面这个例子就是0.05



%初值

x_1 = 1; % S(0) 初值

x_2 = 0.09; % v(0) 初值


%假设股票在T =1 的时候的价格 S(1)

true_result = 1.0512;


error_em = zeros(1,5);

fin_value = zeros(1,5);


T = 1; % 最终时刻

n = 500; % [0,1]时间分成份数

dt = 1/n; %时间步长


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

   %生成两个正态分布的随机向量

   Z_1 = randn(1,n); Z_2 = randn(1,n);

   %用来储存布朗运动的数组

   B_1 = zeros(1,n); B_2 = zeros(1,n);


   for k = 2:n %布朗运动的路径

         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);


   %计算每个时刻的 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)


北太天元软件对看涨期权问题的数值模拟的评论 (共 条)

分享到微博请遵守国家法律