使用“扫一扫”即可将网页分享至朋友圈。
用Python定价期权
金融市场上的衍生品大可分为四类:远期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
热门文章
- 1.万亿市场大消息!场外期权迎来扩容窗口?容量最多可提升80%如何影响A股?这类券商或最受益
- 2.50etf期权分仓软件操作是不是实盘交易
- 3.50etf期权时间价值?50ETF期权时间价值为什么重要?
- 4.场外期权交易商增至41家!场外衍生品规模近1.5万亿元
- 5.中证协发布场外期权管理办法场外期权挂钩个股标的范围扩大
- 6.“最赚钱业务”恢复高增长!场外期权增速超五成,华泰稳居榜首,中信建投增长最快,集中度快速下滑
- 7.50etf期权自己能开户吗?50ETF期权怎么交易?
- 8.场外期权和一般期权的实质性不同在哪?
- 9.熬过50天,四大星座财源滚滚而来,学业大获丰收,禄星化禄
- 10.50ETF期权对投资者有哪些影响?