Loading...
墨滴

傲天居士

2021/07/05  阅读:12  主题:默认主题

欧式回望买权的定价-基于蒙特卡洛模拟

1. 期权简介

期权是一种标准化合约,该合约赋予期权持有人在到期日或持有期间以约定的价格买入或卖出标的资产的某种权利。

  1. 欧式期权是指买入期权的一方必须在期权到期日当天才能行使。
  2. 而美式期权的持有人则在持有期间都可以以约定的价格买入或卖出标的资产。

因此,在其他条件相同时,美式期权的价格一般高于欧式期权的价格。

  1. 看涨期权是指期权赋予持有人在到期日或到期日之前,以固定价格购买标的资产的权利,其授予权利的特征是购买,因此又被称为买权。
  2. 看跌期权是指期权赋予持有人在到期日或到期日之前,以固定价格出售标的资产的权利,其授予权利的特征是出售,因此又称为卖权。

除了欧式期权、美式期权,现代金融业的发展也催生了各种各样的复杂期权。比如回望期权、亚式期权。其中,回望期权的收益依附于期权有效期内标的资产达到的最大或最小价格。而欧式回望看涨期权的收益取决于期权到期日标的资产价格超过期权有效期内标的资产所达到的最低价格的值。

2. 期权定价

期权的价格与许多因素有关:初始时刻的标的资产价格 ,行权价格 ,标的资产的波动度 、持有期长度 、无风险利率 。如果标的资产是股票,期权价格还与股票支付的股息有关。

期权定价的方法有很多:二叉树,B-S-M公式、蒙特卡洛模拟等等。其中当深度足够大时,二叉树定价会收敛于B-S-M公式。今天我们来看一下蒙特卡洛模拟在期权定价中的应用。

3. 蒙特卡洛模拟的实战操作

假设我们有一个欧式回望买权,标的资产的年化波动度 ,年化无风险利率 ,到期期限为半年,初始时刻股票的价格为50,行权价格为55.

我们知道,资产价格服从几何布朗运动:

其中 表示资产的价格,它是关于时间 的函数S 表示年化无风险利 率, 表示资产的年化波动率, 表示资产价格 的微分, 表 示时间 的微分。本案例中,

期权的价格与标的资产相联系。对于欧式回望买权,其价格为:

其中 表示期权的剩余到期期限, 表示执行价格, 表示标的资产在存续期间价格的最大值。本案例中 , =0.5

本案例中期权价格是路径依赖的,在 MATLAB 中采取 Monte Carlo Stochastic Simulation 来模拟标的资产的价格以确定欧式回望买权的价格。

若每月记为一次采样点,以 为步长切分存续期间计算出标的资产的价格在存续期间的最大值 ,进而求出每次模拟的期权价格。重复模拟10000次,将每次模拟得出的期权价格可视化,见下图:

由上可知, 每次模拟的结果有显著差异,个别值接近60,然而大多数集中在10以下。若以平均值作为最终的期权价格,可以得出期权价格为5.6389;

由于每个月记一次采样点不够精细,因此考虑更为精细的切分。以1年的1000分之一为步长进行采样,重复上述过程并模拟10000 次, 将每次模拟的期权价格可视化,见下图:

由上图可知,每次模拟的结果有显著的差异,有的甚至超过了80,然而大多数在10 以下。若以模拟的平均值作为期权价格,可以得到期权价格为7.8974。

综上,若采样点为每个月,则 Monte Carlo Simulation 的期权价格平均是5.6389;若采样点足够精细,例如为1年的千分之一,则 Monte CarloSimulation 的期权价格平均是7.8974.

4. MATLAB代码

我们附上使用蒙特卡洛模拟计算欧式回望买权价格的MATLAB代码。其中,以每个月为采样点的MATLAB代码如下:

clc
clear all
S0=50;r=0.01;sigma=0.4;T=0.5;K=55;
S(1)=S0;
dt=1/12;
for j=1:10000
    for i=1:T/dt
        dW=sqrt(dt).*normrnd(0,1)
        S(i+1)=S(i)+r*S(i)*dt+sigma*S(i)*dW;
    end
    lt(j)=max(max(S)-K,0);
    S=zeros(1,i+1)
    S(1)=S0;
end
option_value=exp(-r*T).*lt
figure
plot(option_value);xlabel('times of simulation');ylabel('option value');
title('Monte Carlo')
optional_value=mean(exp(-r*T).*lt)

以一年的1000分之一为采样点的MATLAB代码如下:

clc
clear all
S0=50;r=0.01;sigma=0.4;T=0.5;K=55;
S(1)=S0;
dt=0.001
for j=1:10000
    for i=1:T/dt
        dW=sqrt(dt).*normrnd(0,1)
        S(i+1)=S(i)+r*S(i)*dt+sigma*S(i)*dW;
    end
    lt(j)=max(max(S)-K,0);
    S=zeros(1,i+1)
    S(1)=S0;
end
option_value=exp(-r*T).*lt
figure
plot(option_value)
xlabel('times of simulation');ylabel('option value');title('Monte Carlo')
optional_value=mean(exp(-r*T).*lt)

傲天居士

2021/07/05  阅读:12  主题:默认主题

作者介绍

傲天居士