加载中 ...
首页 > 全球 > 百慕大期权 > 正文

用Python定价期权

2022-05-29 22:39:28 来源:巴菲期权网

金融市场上的衍生品大可分为四类:远期forwards、期货futures、期权options和互换swaps。

其中期权最为复杂,原因是难在定价上。首先从本身的定义规则来看,期权代表的是行使未来某一时刻的权利,它不像其他金融衍生品必须履行某种契约,所以给权利定价就变得抽象且复杂。如果从数学的角度看,给权力定价则变成了计算某个公式,以欧式看涨期权为例,就是计算下面的公式:

看起来就一行也不长,但手算还是需要花些时间的。

而电脑的出现恰好解决了时效的问题,所以接下来本文将介绍Python编程语言中的quantsbin程序包来完成对期权的定价。

1 几种期权类型

在编程开始之前,首先对期权的定义进行一些简单介绍。

期权可分为看涨期权(call option)与看跌期权(put option),每一个又可以采取做多或做空的策略,所以一共有四种情形,很多人容易对这四种情况混淆,在这简单总结一下:

做多看涨期权long the call:价格上涨后能低价买。

做空看涨期权short the call:对方要求低价买,所以只好低价卖。

做多看跌期权long the put:价格下跌后能高价卖。

做空看跌期权short the put:对方要求高价卖低价的东西,只好高价买。

用收益图比较来看,就更清楚一点:

这是按游戏规则来划分的,如果按行权时间来分类,则分为欧式期权、美式期权和百慕大期权。

欧式期权只有一个行权日,即到期日。美式期权则可以在到期日之前任意时间行权,而百慕大期权介于欧式与美式之间,在到期日之前的特定几个日期可以行权。

以上就是关于期权一些浅显的知识,了解这些后可以更好地理解后面的计算。

2 欧式股票期权

相比于其他金融产品的期权,欧式股票期权应该是最简单的了,我们就从最简单的开始入门。

比如,某股票目前的价格在29块每股,如果买入一看涨期权,到期日为半年后,可以以30块每股的行权价格买入,那目前此期权价格应该是多少呢?

(假设年化无风险利率为5%,此股票年化波动率为10%)

首先我们需要安装及导入相关的程序包quantsbin:

# 安装

pip install quantsbin

# 导入

import quantsbin.derivativepricing as qd

接下来输入计算的方程,

equity_option = qd.EqOption(

option_type = "Call",

expiry_type = "European",

strike = 29,

expiry_date = "20200501")

equity_option_v = equity_option.engine(

model = "BSM",

pricing_date = "20191201",

spot0 = 30,

rf_rate = 0.05,

volatility = 0.1)

# 计算

equity_option_v.valuation()

1.952928350088847

其中第一行EqOption是股票期权的内置方程,参数包含:

option_type:期权类型【“Call”,“Put”】

expiry_type:行权类型【“European”,“American”】

strike:行权价格

expiry_date:到期日【“YYYYMMDD”】

第二个方程用于输入计算参数:

model:计算模型【BSM:black-scholes-model,MC_GBM,Binomial】pricing_date:当前日期【“YYYYMMDD”】

spot0:当前股票价格

rf_rate:年化利率

volatility:年化波动率

最后一行便是计算出的最终期权价格,结果为1.952。

为了验证准确性,我用Black-Scholes模型公式再重新计算一下:

import numpy as np

import pandas as pd

import scipy.stats as sci

def call(S,K,T,rf,sigma):

d1 = (np.log(S/K)+(rf+0.5*sigma**2)*T) \

/(sigma*np.sqrt(T))

d2 = (np.log(S/K)+(rf-0.5*sigma**2)*T) \

/(sigma*np.sqrt(T))

c = S*sci.norm.cdf(d1)-\

K*np.exp(-rf*T)*sci.norm.cdf(d2)

return c

call(30,29,0.5,0.05,0.1)

1.9494474031880422

结果计算出来为1.949,与quantsbin程序包计算出来的1.952十分接近,说明quantsbin程序包计算出来的数据大致准确,可以使用。

此外,我们还可以计算相应期权的希腊值:

print(equity_option_v.risk_parameters())

{'delta': 0.8073646985204345, 'gamma': 0.12883104682859778, 'theta': -0.00463889968525322, 'vega': 5.813280387032892, 'rho': 11.165092460993892, 'phi': -12.143649848978592}

3 美式股票期权

由于美式期权的行权时间不是固定的,就导致数学计算上相当复杂,相比之下,用蒙特卡尔或二叉树的方法来计算价格会更方便一些,而quantsbin程序包里正有这些。

为了把欧式与美式两者进行比较,下面先是欧式期权的计算,与上文有同样的参数,其中多加了一项yield_div,代表股息收益率。

equity_option = qd.EqOption(

option_type = "Call",

expiry_type= "European",

strike = 29,

expiry_date = "20200601")

equity_option_v = equity_option.engine(

model = "BSM",

pricing_date = "20191201",

spot0 = 30,

rf_rate = 0.05,

volatility = 0.1,

yield_div = 0.02)

# 计算

equity_option_v.valuation()

1.7161326885968933

下面是美式的计算:

e_Aoption = qd.EqOption(

option_type = "Call",

expiry_type= "American",

strike = 29,

expiry_date = "20200601")

e_Aoption_v = e_Aoption.engine(

model = "Binomial",

pricing_date = "20191201",

spot0 = 30,

rf_rate = 0.05,

volatility = 0.1,

yield_div = 0.02)

e_Aoption_v.valuation()

1.7174828307248409

运行后出来的结果显示,欧式看涨期权价格在1.716,美式则为1.717,美式的比欧式的价格略高,不过近乎一样,这是由于时间价值。所以一般看跌期权,两者之间的差距会更明显。

4 汇率期权

以标的资产为汇率的期权就是汇率期权(Forex option)。

标准的欧式汇率期权数学公式可写成:

比如目前1欧元可以换1.11左右美元,一年后可以按1:1.20的比例换美元的期权价格应该是多少?假设EUR/USD汇率的年化波动率为15%,欧元年化利率0.1%,美元年化利率4%,我们可以写入以下代码:

EUR_USD = qd.FXOption(

option_type = "Call",

strike = 1.2,

expiry_date = "20201201",

expiry_type = "European")

EUR_USD_Op = EUR_USD.engine(

model = "Binomial",

spot0 = 1.11,

pricing_date = "20191201",

volatility = 0.15,

rf_rate_local = 0.04,

rf_rate_foreign = 0.001)

EUR_USD_Op.valuation()

0.04809404656589679

得到的结果为0.0481,再用汇率期权的数学公式计算一下,看是否一样:

def FXcall(S,K,T,r,rf,sigma):

d1 = (np.log(S/K)+ \

(r-rf+0.5*sigma**2)*T) \

/(sigma*np.sqrt(T))

d2 = (np.log(S/K)+ \

(r-rf-0.5*sigma**2)*T) \

/(sigma*np.sqrt(T))

c = S*np.exp(-rf*T)*sci.norm.cdf(d1)- \

K*np.exp(-r*T)*sci.norm.cdf(d2)

return c

FXcall(1.11,1.2,1,0.04,0.001,0.15)

0.04784737572960368

公式计算出的结果是0.0478,与0.0481非常接近了。

5 商品期权

商品期权跟股票期权不用的是,商品期权没有股息收益(dividend yield),但是存在convenience yield和cost yield两项。

假设目前黄金现货价格在1300美元每盎司,一年期的看跌期权,行权价格在1200美元的期权价格是多少,并假设波动率为0.3,美元利率0.04,convenience yield 0.03,cost yield 0.02,可写入以下代码:

gold = qd.ComOption(

option_type = "Put",

strike = 1200,

expiry_date = "20201201",

expiry_type = "European")

gold_Op = gold.engine(

model = "Binomial",

spot0 = 1300,

pricing_date = "20191201",

volatility = 0.3,

rf_rate = 0.04,

cnv_yield = 0.03,

cost_yield = 0.02)

gold_Op.valuation()

88.3944411947053

以上就是几种常见期权的定价过程,其实期权下细分还有很多不同的种类,比如其中一种叫做奇异期权(Exotic option),正如像其名字那样,规则上五花八门、乱象奇绝,所以不像上面介绍的几种有统一的定价公式可以直接计算,这时就需要按其自身定义的游戏规则,编写相应的方程来计算得出。

更多内容请参考quantsbin官网文件:网页链接

“ETF期权网”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与

我们联系删除或处理,客服邮箱whsxe@qq.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同

其观点或证实其内容的真实性。

  • 声音提醒
  • 60秒后自动更新
  • 中国8月CPI年率2.3%,预期2.1%,前值2.1%。中国8月PPI年率4.1%,预期4.0%,前值4.6%。

    08:00
  • 【统计局解读8月CPI:主要受食品价格上涨较多影响】从环比看,CPI上涨0.7%,涨幅比上月扩大0.4个百分点,主要受食品价格上涨较多影响。食品价格上涨2.4%,涨幅比上月扩大2.3个百分点,影响CPI上涨约0.46个百分点。从同比看,CPI上涨2.3%,涨幅比上月扩大0.2个百分点。1-8月平均,CPI上涨2.0%,与1-7月平均涨幅相同,表现出稳定态势。

    08:00
  • 【 统计局:从调查的40个行业大类看,8月价格上涨的有30个 】统计局:从环比看,PPI上涨0.4%,涨幅比上月扩大0.3个百分点。生产资料价格上涨0.5%,涨幅比上月扩大0.4个百分点;生活资料价格上涨0.3%,扩大0.1个百分点。从调查的40个行业大类看,价格上涨的有30个,持平的有4个,下降的有6个。 在主要行业中,涨幅扩大的有黑色金属冶炼和压延加工业,上涨2.1%,比上月扩大1.6个百分点;石油、煤炭及其他燃料加工业,上涨1.7%,扩大0.8个百分点。化学原料和化学制品制造业价格由降转升,上涨0.6%。

    08:00
  • 【日本经济已重回增长轨道】日本政府公布的数据显示,第二季度经济扩张速度明显快于最初估值,因企业在劳动力严重短缺的情况下支出超预期。第二季度日本经济折合成年率增长3.0%,高于1.9%的初步估计。经济数据证实,该全球第三大经济体已重回增长轨道。(华尔街日报)

    08:00
  • 工信部:1-7月我国规模以上互联网和相关服务企业完成业务收入4965亿元,同比增长25.9%。

    08:00
  • 【华泰宏观:通胀短期快速上行风险因素主要在猪价】华泰宏观李超团队点评8月通胀数据称,今年二、三季度全国部分地区的异常天气(霜冻、降雨等)因素触发了粮食、鲜菜和鲜果价格的波动预期,但这些因素对整体通胀影响有限,未来重点关注的通胀风险因素仍然是猪价和油价,短期尤其需要关注生猪疫情的传播情况。中性预测下半年通胀高点可能在+2.5%附近,年底前有望从高点小幅回落。

    08:00
  • 【中国信通院:8月国内市场手机出货量同比环比均下降】中国信通院公布数据显示:2018年8月,国内手机市场出货量3259.5万部,同比下降20.9%,环比下降11.8%,其中智能手机出货量为3044.8万部,同比下降 17.4%; 2018年1-8月,国内手机市场出货量2.66亿部,同比下降17.7%。

    08:00
  • 土耳其第二季度经济同比增长5.2%。

    08:00
  • 乘联会:中国8月份广义乘用车零售销量176万辆,同比减少7.4%。

    08:00
  • 央行连续第十四个交易日不开展逆回购操作,今日无逆回购到期。

    08:00
  • 【黑田东彦:日本央行需要维持宽松政策一段时间】日本央行已经做出调整,以灵活地解决副作用和长期收益率的变化。央行在7月政策会议的决定中明确承诺将利率在更长时间内维持在低水平。(日本静冈新闻)

    08:00
  • 澳洲联储助理主席Bullock:广泛的家庭财务压力并非迫在眉睫,只有少数借贷者发现难以偿还本金和利息贷款。大部分家庭能够偿还债务。

    08:00
  • 【 美联储罗森格伦:9月很可能加息 】美联储罗森格伦:经济表现强劲,未来或需采取“温和紧缩”的政策。美联储若调高对中性利率的预估,从而调升对利率路径的预估,并不会感到意外。

    08:00
  • 美联储罗森格伦:经济表现强劲,未来或需采取“温和紧缩”的政策。美联储若调高对中性利率的预估,从而调升对利率路径的预估,并不会感到意外。

    08:00
  • 美联储罗森格伦:鉴于经济表现强劲,未来或需采取“温和紧缩的”政策。

    08:00