当前位置: 首页 > news >正文

免费网站空间可上传网站代做财务报表分析网站

免费网站空间可上传网站,代做财务报表分析网站,网站管理 官网,青岛网站制作计划0. pre 在《给你的二叉树期权定价》中就挖了坑要写期权定价的代码#xff0c;这会有时间来填坑啦。本文将会用python实现欧式期权定价。具体的定价算法分别是基于BS公式的、蒙特卡洛的以及二叉树的。对于二叉树和BS公式还不熟悉的小伙伴可以移步至往期关于二叉树期权定价和BS公… 0. pre 在《给你的二叉树期权定价》中就挖了坑要写期权定价的代码这会有时间来填坑啦。本文将会用python实现欧式期权定价。具体的定价算法分别是基于BS公式的、蒙特卡洛的以及二叉树的。对于二叉树和BS公式还不熟悉的小伙伴可以移步至往期关于二叉树期权定价和BS公式的3篇文章先熟悉一下二叉树和BS公式本身然后再来看代码实现。当然如果您对于理论推导部分不感兴趣也可以考虑跳过该部分直接看代码。只是这样可能理解起来稍微麻烦些。接下来我们将先描述基于蒙特卡洛的期权定价方法然后再分别对三种方法进行python代码的实现。1.基于蒙特卡洛的期权定价 1.1 蒙特卡洛思想蒙特卡洛是基于随机抽样的一种统计模拟方法。由于大数定律的成立此方法可以用于计算一些难搞的期望的数值解或者是进行数值积分的计算。由于在风险中性的假设下欧式期权价格等于到期时期权价值的期望在无风险利率下的贴现。因此这里的问题就成了如何计算时刻期权价值的期望。由于标的资产服从的既定分布蒙特卡洛模拟通过生成随机数的方式模拟资产价格的若干条路径并以此得到这若干条价格路径在到期时的价格。又由于看涨和看跌期权到期时的价值分别为和。因此我们便可以通过到期时标的资产价格计算期权价值再由大数定律知样本量足够大时均值趋于期望而计算出时刻期权价值的期望。最后用无风险利率将该期望贴现到0时刻便得到期权价格。1.2 蒙特卡洛期权定价的数学语言(1) 标的资产价格服从对数正态分布首先资产价格服从几何布朗运动又有伊藤引理因此对于来讲有所以(2) 蒙特卡罗模拟步骤1、生成若干个标准正态分布随机数。2、将这n个标准正态分布随机数带入方程得到n个到期时的标的资产价格。3、求这n个标的资产价格的均值得。4、用无风险利率对贴现得0时刻的期权价格。2. 参数初始化 import numpy as npfrom numpy.random import normalfrom scipy.stats import normclass european_option_pricing:    Desc: 此类用于实现各种方式的欧式期权定价    def __init__(self, r, sigma, T, K, s0, call):        :param r: 无风险利率        :param sigma: 标的资产波动率        :param T: 期权期限        :param K: 行权价        :param s0: 标的资产当前价格        :param call: 是否是看涨期权                self.r  r        self.sigma  sigma        self.T  T        self.K  K        self.s0  s0        self.call  call3.基于BS公式的代码实现 基于BS公式的期权定价相对简单只需要将5个参数填入一下两个看涨和看跌的定价公式。注意下面的代码都是类european_option_pricing下的方法每一种方法分别对应一种期权定价算法。def bs_formula(self):    Desc: 由BS公式计算欧式期权价格        d1  (np.log(self.s0/self.K)  (self.r  self.sigma**2 / 2) * self.T) / (self.sigma * np.sqrt(self.T))    d2  (np.log(self.s0/self.K)  (self.r - self.sigma**2 / 2) * self.T) / (self.sigma * np.sqrt(self.T))if self.call:        f0  self.s0 * norm.cdf(d1) - \             self.K * np.exp(-self.r * self.T) * norm.cdf(d2)                      # c  s0*N(d1) - Ke^{-rT} * N(d2)else:        f0  self.K * np.exp(-self.r * self.T) * norm.cdf(-d2) - \             self.s0 * norm.cdf(-d1)                                           # p  Ke^{-rT} * N(-d2) - s0 * N(-d1)return f04.基于蒙特卡洛的代码实现 def monte_carlo(self, log, path_num, step_num):    Desc: 风险中性假设下利用蒙特卡洛方法计算欧式期权价格    :param log: 是否根据标的资产对数来模拟路径。        True: 假设标的资产价格服从对数正态分布[logSt ~ N(logS0  (r-sigma^2/2)t, sigma^2 *t)]并以此计算sT。        False: 假设标的资产价格服从几何布朗运动[ds r*s*dt sigma*s*dz]并以此计算sT。    :param path_num: 蒙特卡洛生成的路径数量    :param step_num: 每条价格路径的步数    # (1) 风险中性下模拟标的资产价格路径并计算到期时各路径下的价格if log:# 生成1000条价格路径        log_sT  np.log(self.s0)  (self.r - self.sigma**2/2) * self.T  \                 self.sigma * normal(sizepath_num) * np.sqrt(self.T)        sT  np.exp(log_sT)else:# 生成path_num条价格路径每条路径走1000步        sT  []for i in range(path_num):            simu_ret  self.r * self.T/step_num  self.sigma * normal(sizestep_num) * np.sqrt(self.T/step_num)     # ds/s  r * dt  sigma * dz            cum_ret  (1  simu_ret).prod()            sT.append(self.s0 * cum_ret)# (2) 基于模拟的到期日标的资产价格计算期权价格if self.call:        fT  np.array([max(0, s - self.K) for s in sT])                   # 看涨期权到期时各路径下的价格else:        fT  np.array([max(0, self.K - s) for s in sT])                   # 看跌期权到期时各路径下的价格    f0  np.mean(fT * np.exp(-self.r * self.T))return f05.基于二叉树的代码实现 def binary_tree(self, step_num):    Desc: 利用二叉树从期权到期时的叶节点倒推地计算前面各个节点的期权价值直到0时刻即得出期权价格。    Note: 欧式期权只需要倒推地计算每一层各个节点期权的隐含价值但美式期权还要比较每个节点期权隐含价值与直接行权价值          的相对大小并最终取价值大的那一个作为该节点的期权价值。    :param step_num:  二叉树步数    # (1) 计算 u, d, p, q and dt    dt  self.T/step_num    u  np.exp(self.sigma * np.sqrt(dt))    d  np.exp(-self.sigma * np.sqrt(dt))    p  (np.exp(self.r * dt) - d)/(u - d)    q  1 - p# (2) 构造二叉树价格路径的矩阵(n步二叉树需要一个n1*n1矩阵来装价格路径)    s  np.array([[0] * (1  step_num)] * (1  step_num), dtypefloat)for i in range(0, 1  step_num):                           # 遍历每一步for j in range(i1):                                   # 遍历每一步中标的资产价格的每种可能            s[j, i]  self.s0 * u**(i-j) * d**j# (3) 构造二叉树下期权内涵价值路径的矩阵    f  np.array([[0] * (1  step_num)] * (1  step_num), dtypefloat)for i in range(step_num, -1, -1):# 倒推地计算期权价值if i  step_num:# 最后一步的期权价格if self.call:                f[:, i]  [max(sT - self.K, 0) for sT in s[:, i]]else:                f[:, i]  [max(self.K - sT, 0) for sT in s[:, i]]else:# 其他时候的期权价格(因为基于风险中性所以第t时刻的期权价值等于t1时刻期权价值的贴现)for j in range(i1):                f[j, i]  np.exp(-self.r * dt) * (p * f[j, i1]  q * f[j1, i1])    f0  f[0, 0]return f06.测试比较 (1)首先计算BS公式下的期权价格。europe_opt_price  european_option_pricing(r0.05, sigma0.2, T1, K10, s010, callTrue)bs_price  europe_opt_price.bs_formula()print(BS公式下的期权价格, bs_price)BS公式下的期权价格 1.045058357218557(2)接着计算蒙特卡洛下的期权价格。for num in [10, 100, 1000, 10000, 100000, 100000]:    monte_carlo_price  europe_opt_price.monte_carlo(logTrue, path_numnum, step_num100)    print({}条路径下的蒙特卡洛下的期权价格.format(num), monte_carlo_price)10条路径下的蒙特卡洛期权定价 1.28783643643895100条路径下的蒙特卡洛期权定价 0.87416519605453771000条路径下的蒙特卡洛期权定价 0.987155982802952410000条路径下的蒙特卡洛期权定价 1.062215087666785100000条路径下的蒙特卡洛期权定价 1.0439738276791009500000条路径下的蒙特卡洛期权定价 1.0445916779825162(3)最后计算二叉树下的期权价格。for num in [10, 50, 100, 500, 1000]:    binary_tree_price  europe_opt_price.binary_tree(step_numnum)    print({}步二叉树下的期权价格.format(num), binary_tree_price)10步二叉树下的期权价格 1.025340904487193750步二叉树下的期权价格 1.041069154073265100步二叉树下的期权价格 1.043061166224914500步二叉树下的期权价格 1.04465851364465381000步二叉树下的期权价格 1.0448584103764602从上面三种方法的计算结果可知BS公式、二叉树和蒙特卡洛模拟相互间是一致的。当二叉树步数和蒙特卡洛路径数量越来越大时他们的定价结果与BS公式越接近。而这一点也是与理论预期相符的。话说欧式搞定了美式还会远么坑继续挖着心情好的时候又来填参考文献《期权期货及其他衍生品》 by John Hull
http://www.yutouwan.com/news/465802/

相关文章:

  • 如何做视频网站的广告推广山西省网站域名备案得多长时间
  • 淘宝做问卷的网站好wordpress 打车
  • 做网站推广方法seo关键词优化最多可以添加几个词
  • 建设信用卡登录中心网站怎样做网站跳转
  • 京东自营入驻流程及费用百度seo公司
  • 千岛湖建设集团有限公司网站门户网站的布局
  • 江门网站建设维护减压疗程wordpress
  • 网站建设专业的商家微信下单小程序怎么开通
  • 帮别人做高仿产品网站 违法么兰州优化定制
  • 做可以上传文件的网站中山h5网站建设
  • asp.net 获取网站域名wordpress 圆形头像
  • 苏州市吴中区住房和城乡建设局网站网络营销策划案ppt
  • 中国建设监理协会网站继续教育系统五金设备网站建设
  • 做电力项目信息的网站徐州网站建设公司哪个好
  • 金融网站建站昆明网站推广专员
  • php网站开发练手项目网站怎么产品做推广
  • 胃肠科医院网站建设网站建设三大部分
  • 建筑招工人在哪个网站比较好找友情链接的获取途径有哪些
  • 如何seo网站挣钱陈木胜老婆
  • c 怎么和网站做交互建设电商网站多少钱
  • 在线教育网站设计wordpress主题模板 教育
  • 山东省建设厅招标网站首页出色的网站设计
  • 芗城网站建设网站模板建站
  • 怎样维护自己的网站昆山住房和城乡建设局网站
  • elementor做视频网站大麦网建设网站的功能定位
  • 专业网站建设设计服务wordpress首页title的调用
  • 做网站做百度竞价赚钱企业网站建设费如何列支
  • 做网站的专业叫什么asp网站开发上传组建
  • 青岛免费网站建设创建网站主题在哪里
  • 怎么提高网站浏览量怎么在网站上做旅游推广