蒙特卡洛估值计算(欧式期权)

来源:互联网 发布:直播网络说唱歌曲大全 编辑:程序博客网 时间:2024/04/27 15:53

蒙特卡洛模拟估计欧式看涨期权的价值

蒙特卡洛模拟是金融学和数值计算科学中最重要的算法之一,它在期权的定价和风险的管理上有很重要的作用,蒙特卡洛方法很容易处理高维度问题,在这种问题上复杂度和计算需求通常以线性方式增长.蒙特卡洛方法的缺点是:本身的高计算需求

主要参考Black-Scholes-Merton(BSM)模型,在模型中到期的指数水平是一个随机变量,通过到期指数公式计算:
              ST=S0exp((r12σ2)T+σTz)

其中z是一个服从标准正态分布的随机变量.
蒙特卡洛算法的描述:
1.生成 I 个服从标准正态分布的随机数,zi, i={1,2,3,,,I}, I为随机模拟的次数
2.通过上面的到期指数计算公式,计算出所有模拟结果的到期指数ST(i)
3.计算到期期权的每一个模拟可能的内在价值hT(i)
          
              hT(i)=max(ST(i)K,0)

4.通过蒙特卡洛估算公式计算出期权现值

             C0erT1TIihT(i)

import numpy as npimport matplotlib.pyplot as plt
# 对计算要用到的一些数据进行初始化S_0 = 100.0       # 股票的初始的指数水平K = 105.0         # 看涨的行权价格T = 1.0           # 到期的年限r = 0.05          # 固定无风险利率sigma = 0.2       # 固定波动率(收益的标准差)
I = 1000      # 随机数的个数,模拟计算到期指数的次数z = np.random.standard_normal(I)# 股票到期指数水平S_T = S_0 * np.exp((r - 0.5 * sigma ** 2)* T + sigma * np.sqrt(T) * z)# 期权的内在价值h_T = np.maximum(S_T - K, 0)# 期权现值C = np.exp(-r * T)* np.sum(h_T)/I

期权现值

# 期权现值print 'value of the European call option %.6f'%C
value of the European call option 7.988801
def draw_pic(position,y,label,plt):    plt.subplot(position)    plt.plot(y, label=label)    plt.grid(True)    plt.legend(loc=0)    plt.ylabel(label)

到期指数水平
到期期权内在价值

%matplotlib inlineplt.figure(figsize=(12,7))draw_pic(211, S_T, 'S_T', plt)draw_pic(212, h_T, 'h_T', plt)

png这里写图片描述