文章目录

  • 理论推导
  • 蒙特卡洛模拟法模拟股价走势
  • 欧式期权
    • 欧式看涨期权
    • 欧式看跌期权
  • 亚式期权
    • 亚式看涨期权
    • 亚式看跌期权
  • 回望期权
    • 回望看涨期权
    • 回望看跌期权

蒙特卡洛模拟方法如何用于期权定价?

理论推导

蒙特卡洛法的基本思想为:在风险中性的世界里,随机产生标的资产价格的可能路径,由此获得期权收益的期望值,然后再对其以无风险利率进行贴现,得到期权的价格。

详细推导可查看:

参考文章:https://mp.weixin.qq.com/s/qTBuCSAmCc39G2nDfUDgmQ

蒙特卡洛模拟法模拟股价走势

首先我们需要通过蒙特卡洛模拟法模拟股价走势。

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import pandas as pd
import math
'''
s:股票现价
t:期限(年)
r:无风险利率(年)
sigma:股票年化波动率
N:每年的期数
M:模拟次数
'''
def generate_simulated_stock_returns(t,r,sigma,N):      a1=[]dt=1/Nterm = int(t*N)for i in range (1, term+1):z=np.random.normal()simulated_return = (r-(sigma**2/2))*dt + z*sigma*(dt**(1/2))a1.append(simulated_return)array_return=np.array(a1)return array_returndef generate_simulated_stock_values(s,t,r,sigma,N):rate=generate_simulated_stock_returns(t,r,sigma,N)stock_price = [s]term = int(t*N)for i in range(1, term+1):values = stock_price[i-1]*math.e**(rate[i-1])stock_price.append(values)array_price = np.array(stock_price)return array_price

欧式期权

欧式看涨期权

欧式看涨期权的定价:
C=Max(St−X,0)e−rtC = Max(S_t-X,0)e^{-rt} C=Max(St​−X,0)e−rt

def MCEuroCallOptionValue(s,x,t,r,sigma,N,M):call_prices = []for i in range(M):stock_price = generate_simulated_stock_values(s,t,r,sigma,N)[-1]call_price = max(stock_price-x,0)*np.exp(-r*t)call_prices.append(call_price)price_mean = np.mean(call_prices)  return price_mean
def BSEuroCallOptionValue(s,x,t,r,sigma):d1 = (math.log(s/x)+(r+sigma**2/2)*t)/(sigma*math.sqrt(t))d2 = d1-sigma*math.sqrt(t)c = s*stats.norm.cdf(d1)-x*math.exp(-r*t)*stats.norm.cdf(d2)return c
mc_price = MCEuroCallOptionValue(90, 100, 1, 0.1, 0.3, 100, 1000)
print(mc_price)
bs_price = BSEuroCallOptionValue(90, 100, 1, 0.1, 0.3)
print(bs_price)
9.84671058110504
10.51985812604488

欧式看跌期权

欧式看跌期权的定价:
P=Max(X−St,0)e−rtP = Max(X-S_t,0)e^{-rt} P=Max(X−St​,0)e−rt

def MCEuroPutOptionValue(s,x,t,r,sigma,N,M):put_prices = []for i in range(M):stock_price = generate_simulated_stock_values(s,t,r,sigma,N)[-1]put_price = max(x-stock_price,0)*np.exp(-r*t)put_prices.append(put_price)price_mean = np.mean(put_prices)  return price_mean
def BSEuroPutOptionValue(s,x,t,r,sigma):  d1 = (math.log(s/x)+(r+sigma**2/2)*t)/(sigma*math.sqrt(t))d2 = d1-sigma*math.sqrt(t)p = x*math.exp(-r*t)*stats.norm.cdf(-d2)-s*stats.norm.cdf(-d1)return p
mc_price = MCEuroPutOptionValue(100, 100, 1.0, 0.1, 0.3, 100, 10000)
print(mc_price)
bs_price = BSEuroPutOptionValue(100, 100, 1.0, 0.1, 0.3)
print(bs_price)
7.217875385982609

亚式期权

亚式期权的收益依附于标准的资产有效期至少一段时间内的平均价格,亚式期权可分为平均价期权和平均执行价格期权。

亚式期权应用于股票期权报酬有两个作用:

1、避免人为炒作股票价格。

2、减少公司员工进行内幕交易、损害公司利益的行为。

亚式看涨期权

亚式看涨期权的定价:
C=Max(Average(S)−X,0)e−rtC = Max(Average(S)-X,0)e^{-rt} C=Max(Average(S)−X,0)e−rt

def MCAsianCallOptionValue(s,x,t,r,sigma,N,M):   call_prices = []for i in range(M):stock_price = np.mean(generate_simulated_stock_values(s,t,r,sigma,N))call_price = max(stock_price-x,0)*np.exp(-r*t)call_prices.append(call_price)price_mean = np.mean(call_prices)   return price_mean
acall_price = MCAsianCallOptionValue(100, 100, 1.0, 0.10, 0.30, 100, 1000)
print(acall_price)
9.494626161093787

亚式看跌期权

亚式看跌期权的定价:
P=max(X−Average(S),0)e−rtP = max(X-Average(S),0)e^{-rt} P=max(X−Average(S),0)e−rt

def MCAsianPutOptionValue(s,x,t,r,sigma,N,M):   put_prices = []for i in range(M):stock_price = np.mean(generate_simulated_stock_values(s,t,r,sigma,N))put_price = max(x-stock_price,0)*np.exp(-r*t)put_prices.append(put_price)price_mean = np.mean(put_prices)   return price_mean
aput_price = MCAsianPutOptionValue(100, 100, 1.0, 0.10, 0.30, 100, 1000)
print(aput_price)
4.462073414456472

回望期权

回望期权(Lookback Options),是指回报不仅取决于标的资产的执行价格,同时还取决于期权续存期内标的资产的最高价或者最低价的期权。回望期权在到期时要回望过去标的资产的表现,其收益支付结构与合约期间标的资产价格所达到的最大值或者最小值相关,和很多奇异期权一样,回望期权也是路径依赖的一种期权。

**回望期权可以根据执行价格是固定还是浮动的分成以下几种:**分别是固定执行价格的回望看涨期权、固定执行价格的回望看跌期权、浮动执行价格的回望看涨期权和浮动执行价格的回望看跌期权。

固定执行价格的看涨期权和看跌期权在合约到期时的执行价格是固定的,和普通的期权无异,以期权持有期内标的资产所达到的最高价格和最低价格作为到期日价格;

而浮动执行价格的回望看涨期权和看跌期权则选取的是合约期间标的资产的最低价格和最高价格作为期权的执行价格,标的资产的价格用的仍旧是到期日的价格。

回望看涨期权

回望看涨期权的定价:
C=Max(Max(S)−X,0)e−rtC = Max(Max(S)-X,0)e^{-rt} C=Max(Max(S)−X,0)e−rt

def MCLookbackCallOptionValue(s,x,t,r,sigma,N,M):    call_prices = []for i in range(M):stock_price = max(generate_simulated_stock_values(s,t,r,sigma,N))call_price = max(stock_price-x,0)*np.exp(-r*t)call_prices.append(call_price)price_mean = np.mean(call_prices)  return price_mean
lcall_price = MCLookbackCallOptionValue(100, 100, 1.0, 0.10, 0.30, 100, 1000)
print(lcall_price)
29.63502178494703

回望看跌期权

回望看跌期权的定价:
P=Max(X−Min(S),0)e−rtP = Max(X-Min(S),0)e^{-rt} P=Max(X−Min(S),0)e−rt

def MCLookbackPutOptionValue(s,x,t,r,sigma,N,M):put_prices = []for i in range(M):stock_price = min(generate_simulated_stock_values(s,t,r,sigma,N))put_price = max(x-stock_price,0)*np.exp(-r*t)put_prices.append(put_price)price_mean = np.mean(put_prices)  return price_mean
lput_price = MCLookbackPutOptionValue(100, 100, 1.0, 0.10, 0.30, 100, 1000)
print(lput_price)
15.536862634356844

【Python量化】蒙特卡洛模拟法进行期权定价相关推荐

  1. 美式期权定价python_【优质好课】Python量化期权实战应用

    优质好课 · 涨价预警 <Python量化期权实战应用>课程,在预售初期就备受关注,课程开始上线以来,内容更是受到了广大学员的一致好评. 现在,眼看着课程就快要更新完毕了,如果还没有开始学 ...

  2. 量化投资传统指标投资决策VS蒙特卡洛模拟法

    前言 管理规模约5000亿.收益率曾经一度打败巴菲特的文艺复兴基金,在2020年11月被曝出旗下三支产品10月巨亏20%! 对量化投资的初学者来说,到底该看重传统的指标,还是其他概率统计手段,或是机器 ...

  3. 简述python在量化金融中应用_AQF课程丨Python量化投资与金融实战应用只要499

    快过年了,各位学霸们今年还能收到压岁钱嘛?反正小编我已经是好几年都没看到压岁钱了,但还是希望大家都能数钱都数到手抽筋,不过如果没有收到压岁钱也不要暗自悲伤,因为我们量化投资项目为大家准备了超多福利,它 ...

  4. python课件_如何20小时搞定Python量化期权实战?

    <Python量化期权实战应用>课程,在预售初期就备受关注,课程开始上线以来,内容更是受到了广大学员的一致好评. 眼看着课程就快要更新完毕了,如果还没有开始学习的同学要抓紧时间了. 课程总 ...

  5. Python量化教程:量化风险

    今天,我们将介绍非常重要的一部分:风险的量化.我们会从原理以及Python实战两个角度来学习. 我们开始今天的内容. 一.方差 1952年,Markowitz发表了均值-方差投资组合理论,在这套理论中 ...

  6. python量化期权_如何20小时搞定Python量化期权实战?

    <Python量化期权实战应用>课程,在预售初期就备受关注,课程开始上线以来,内容更是受到了广大学员的一致好评. 眼看着课程就快要更新完毕了,如果还没有开始学习的同学要抓紧时间了. 课程总 ...

  7. python量化期权_Python量化期权怎么学?

    python量化期权课程是如何学习的? 本产品为在线网络课程,购后48小时内开通学习权限 ▎课程学习的平台 本课程开通后需要在金程网校(PC端或者APP端)进行学习,学习账号为购课程时提交的手机号码 ...

  8. 【2022·合辑】Python量化从入门到精通

    引言 Annual work summary LOREM IPSUM 春去秋来,"Python金融量化"已坚持了四个年头,全网关注量10万+.在公众号阅读量急剧下降,短视频盛行的当 ...

  9. 【收藏】2020年Python量化文章合辑

    引言 Annual work summary Lorem Ipsum 不知不觉,公众号"Python金融量化"已走过两个年头.这一路走来非常感谢读者的支持,尤其是知识星球圈友,你们 ...

  10. 欧式期权matlab编码蒙特卡罗方法,基于MATLAB的金融工程方法与实践第七章 基于蒙特卡洛方法的期权定价.ppt...

    蒙特卡洛的优缺点 MCMC方法的优点 分布假设更一般,描述市场因素可能变化的统计分布既可以是正态.对数正态的,也可以是带跳的扩散分布.t分布等. 随机生成风险因素的各种各样的未来假想情景,可在模型中融 ...

最新文章

  1. Min_25筛学习笔记
  2. 机器学习笔记(七)贝叶斯分类器
  3. PyQt5 技巧篇-复选框绑定行内容,全选、清空、展示选中的内容功能实现演示,设置复选框选中,检查复选框选中状态
  4. ECCV 2020 DETR:《End-to-End Object Detection with Transformers》论文笔记
  5. OC之非ARC环境下循环retain问题
  6. C# 控制台 模拟时间一秒一秒走动,直到按Esc键,时间静止,退出!
  7. java中注解的使用与实例(一)
  8. 下载安装Redis+使用
  9. uva1673(后缀自动机)
  10. 批量WORD转换为PDF
  11. 金蝶kis商贸采购单商品代码_金蝶KIS商贸版操作明细
  12. Connection(数据库连接对象)
  13. 《孙子兵法》十三篇注译(13--火攻篇)
  14. Autosar CPU core trust/Nontrust配置
  15. ElasticSearch健康检查localhost:9200 not reachable
  16. 海德上位机软件学习总结(NetScada5.0)
  17. chrome 谷歌浏览器模拟各种手机设置userAgent
  18. php圆的周长_php面向对象编程练习:计算矩形、三角形、圆形的周长和面积
  19. 一顿饭吃一两斤肉和一顿饭吃几百斤肉
  20. 人工智能本科学位的完整4年课程规划

热门文章

  1. 【Linux-Minio】安装部署文档(含单节点多盘、多节点多盘【TLS+Nginx负载均衡】、省市代码)
  2. 【计算机网络】路由器与交换机
  3. 100000以内的水仙花数C语言,找出1000000内的水仙花数
  4. 电脑桌面简约时钟工具OneClock
  5. 西门子梯形图转换C语言,梯形图和指令表相互转换
  6. 解决VMware 虚拟机中的网络连接出现”受限制或无连接“问题的方法
  7. [计算机英语]句子翻译(只含unit1.3.4.5.7.8.9.12)
  8. →箭头符号大全复制_特殊符号及名称大全,复制即用
  9. 【deepstream部署Yolov6】
  10. Python项目分析:预测双色球福利彩票中奖号码(随便玩玩,不要当真)