蒙特卡洛算法模拟欧式期权

实验项目:欧式期权蒙特卡洛模拟定价

实验时间:

一、实验目的

1.了解蒙特卡洛定价原理

2.模拟蒙特卡洛期权定价法 

二、实验要求

1. 能够使用python模拟该过程

2. 能够了解该算法

三、实验内容与设计(主要内容,操作步骤、算法描述或程序代码

1.蒙特卡罗方法:

  蒙特卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。

  1. 定价模拟的步骤:

①假设股票价格服从几何布朗运动,即满足以下随机微分方程:

 

其中,St表示t时刻的股票价格,r表示无风险利率,sigma表示股票价格波动率,dWt表示布朗运动的增量

②生成随机数,生成模拟随机路径终点股票价格

③根据期权到期时的收益,计算出其折现收益。

3.代码实现如下:

import numpy as np

def MonteCarloPrice(O,S,K,T,r,q,sigma,steps,paths):  
    dt = T / steps       # 设置步长dt    
    S_path = np.zeros((steps+1,paths))   #创建一个零矩阵储存模拟路径节点
    S_path[0] = S        #将模拟随机路径起点设置为S
    for step in range(1,steps+1):
        epsilon = np.random.standard_normal(paths)     #生成人工随机数
        S_path[step] = S_path[step - 1] * np.exp((r-q-0.5*sigma**2)*dt +sigma*np.sqrt(dt)*epsilon)   #生成模拟随机路径终点股票价格
    if O=="c":
        value = np.exp(-r*T)*np.maximum(S_path[-1]-K,0).mean()  #根据模拟路径终点股票价格计算看涨期权回报,再将回报均值以r折现
    else: 
        value = np.exp(-r*T)*np.maximum(K-S_path[-1],0).mean()  #根据模拟路径终点股票价格计算看跌期权回报,再将回报均值以r折现
    return value


C = MonteCarloPrice(O="c",S = 30,K=30,T =0.1,r=0.05,q=0.00,sigma = 0.2,steps = 10,paths = 100000)
P = MonteCarloPrice(O="p",S = 30,K=30,T =0.1,r=0.05,q=0.00,sigma = 0.2,steps = 10,paths = 100000)
print(round(C,3))
print(round(P,3))

四、实验结果分析及总结(对实验的结果是否达到预期进行分析,总结实验的收获和存在的问题等)

随机生成10次结果如下:

收获:对python运用更熟练,了解到该算法的实现方式。

存在问题:模拟的次数太少

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值