python期权定价公式_期权及 Black-Scholes模型的python实现
Black-Scholes模型最早是由Fischer Black和Myron Scholes在1973提出,发表在论文The Pricing of Options and Corporate Liabilities中。此后,该模型为金融市场以市价价格变动的金融衍生品提供了合理的定价基础。
名词解释
option:期权或期权合约,赋予拥有者以一定价格购买或者卖出的权利,而不是义务。Give its owner the right, but not the obligation, to either buy or sell an underlying asset at a given price.
call option: 看涨期权,在未来某个时间可以以某种价格购买某种商品的权利
put option: 看跌期权,在未来某个时间可以以某种价格出售某种商品的权利
strike price: 交割价格或执行价格,事先约定好在为未来购买或者卖出的价格
spot price: 现货价格,即期权对应标的商品的即期价格
premium: 权利金或期权价格,指期权合约购买方在购买期权时必须支付给期权卖方的费用
期权种类
根据期权的权利划分:call option: 看涨期权,在未来某个时间可以以某种价格购买某种商品的权利,如果未来该购买价格比商品的实际价格还要高,可以放弃该权利,只有低于商品的价格才会有盈利的机会。每一个期权合约都有一个买方和卖方,买方拥有权利,卖方拥有义务。买方一旦实施该权利,卖方必须履行其义务。
put option: 看跌期权,在未来某个时间可以以某种价格出售某种商品的权利,如果未来该出售价格低于商品的实际价格,可以放弃该权利,不然可以选择在现货市场上出售该商品获取更高的利润。同样,也对应于一个买方和卖方,卖方拥有权利,买方拥有义务。
根据买方买方又延伸出四种期权形式:long call: 看涨期权的购买方,拥有权利购买,跟short call相对
short call: 看涨期权的卖出方,拥有义务出售
long put: 看跌期权的购买方,拥有义务出售,跟short put相对
short put: 看跌期权的卖出方,拥有义务购买
根据交割时间划分:欧式期权:只能在到期日交割
美式期权:在到期日之前和到期日都可以交割
期权的价格
跟股票、黄金的价格一样,期权也有价格,股票的价格反应了对于公司未来业绩的期望,黄金甚至可以等同于货币,赋予了流通的属性。期权的价格并不反映标的物的价值,而是作为风险补偿,由期权买方给卖方,作为卖方承担风险的回报。
期权价格又称权利金,premium,指期权合约购买方在购买期权时必须支付给期权卖方的费用,因而获得了一定的权利,买方的风险是已知的,就算未来现货价格大幅变化时,可以选择不实施权利,最多损失的就是这部分费用。然而,卖方需要承担一定的风险甚至损失,例如对于call option的卖方而言,当现货价格大幅上涨时,仍需要以远低于现货价格的交割价格卖给买方。这也是premium的来由,premium的中文意思就是保险费、溢价的意思。
期权的价格主要由内涵价值和时间价值(time value)组成:
期权价格 = 内涵价值 + 时间价值根据期权的内涵价值(intrinsic value)将期权分为:In the money: 价内期权或实值期权,call option时如果交割价格小于现货价格,put option时如果交割价格大于现货价格
Out of the money: 价外期权或者虚值期权,call option时如果交割价格大于现货价格,put option时如果交割价格小于现货价格
In the mony: 平值期权,不论看涨还是看跌期权,交割价格等于现货价格
时间价值时间价值是指期权的价格超过内涵价值的部分
指在期权有效期内,标的资产的波动为期权所有者带来的收益可能性
期权的内涵价值表明了期权合约履行时可以获得的利润,交割价格和现货价格的gap越大,盈利的可能性更大。距离交割期越久,期货的时间价值越大,因而期货价格越高
BS模型的重要假设针对欧式期权,即交割期前不能交易
期权有效期内无分红和其它所得
市场无法预测
无风险利率和波动性均是恒定值
标的物价格遵循对数正态分布
不含分红的期权定价BS模型
下面是变量的含义:S: t时刻的现货价格
T: 期权合约的总时间,当前时刻到交割期的时间为T-t
K: t时刻的交割价格
r: 无风险利率
σ: 现货价格的标准差
N(d)为标准正态分布的累计分布,d为自变量
C(S, t)为t时刻call option的价格,P(S, t)为t时刻put option的价格。BS公式为:
其中:
Python实现
import numpy as np
from scipy.stats import norm
def vanilla_option(S, K, T, r, sigma, option='call'):
"""S: spot priceK: strike priceT: time to maturityr: risk-free interest ratesigma: standard deviation of price of underlying asset"""
d1 = (np.log(S/K) + (r + 0.5*sigma**2)*T)/(sigma*np.sqrt(T))
d2 = (np.log(S/K) + (r - 0.5*sigma**2)*T)/(sigma * np.sqrt(T))
if option == 'call':
p = (S*norm.cdf(d1, 0.0, 1.0) - K*np.exp(-r*T)*norm.cdf(d2, 0.0, 1.0))
elif option == 'put':
p = (K*np.exp(-r*T)*norm.cdf(-d2, 0.0, 1.0) - S*norm.cdf(-d1, 0.0, 1.0))
else:
return None
return p
vanilla_option(50, 100, 1, 0.05, 0.25, option='call')
0.027352509369436617
vanilla_option(50, 100, 1, 0.05, 0.25, option='put')
45.15029495944084
含分红的期权定价BS模型
除了之前的五个变量,还多了一个变量q:S: t时刻的现货价格
T: 期权合约的总时间,当前时刻到交割期的时间为T-t
K: t时刻的交割价格
r: 无风险利率
σ: 现货价格的标准差
q: 分红率,假设是连续分红
现在q参数被包含在了C(S, t)和P(S, t)公式中:
其中:
Python实现
def bs_option(S, K, T, r, q, sigma):
"""S: spot priceK: strike priceT: time to maturityr: risk-free interest rateq: rate of continuous dividendsigma: standard deviation of price of underlying asset"""
d1 = (np.log(S/K) + (r - q + 0.5*sigma**2)*T)/(sigma*np.sqrt(T))
d2 = (np.log(S/K) + (r - q - 0.5*sigma**2)*T)/(sigma*np.sqrt(T))
if option == 'call':
p = (S*np.exp(-q*T)*norm.cdf(d1, 0.0, 1.0) - K*np.exp(-r*T)*norm.cdf(d2, 0.0, 1.0))
elif option == 'put':
p = (K*np.exp(-r*T)*norm.cdf(-d2, 0.0, 1.0) - S*np.exp(-q*T)*norm.cdf(-d1, 0.0, 1.0))
else:
return None
return p
python期权定价公式_期权及 Black-Scholes模型的python实现相关推荐
- python 字符串拼接_面试官让用 3 种 python 方法实现字符串拼接 ?对不起我有8种……...
点击上方 蓝字关注我们 点击上方"印象python",选择"星标"公众号重磅干货,第一时间送达!之前发过很多关于 Python 学习的文章,收到大家不少的好评, ...
- python ide 最好_我在iPad上最好的Python IDE
python ide 最好 Having finished my first year at university, and being left with very little to do thi ...
- python selenium脚本_怎样开始写第一个基于python的selenium脚本
1.下载并安装python(http://www.python.org/geti/). 2.安装selenium(http://pypi.python.org/pypi/selenium)下载并解压缩 ...
- python语言 行业_如何入门编程开发行业 选择Python语言怎么样
如何入门编程开发行业?选择Python语言怎么样?Python是一种面向对象的解释型计算机程序设计语言,它是纯粹的自由软件,语法简洁清晰,它具有丰富和强大的库.它常被称为胶水语言,能够把用其他语言制作 ...
- python笔记视频_终于拿到!清华大佬Python视频+书+笔记汇总
终于拿到!清华大佬Python视频+书+笔记汇总 清华学姐推荐的Python视频400集,拿走不谢!
- python 建筑计算_制图小技巧:巧用Python和ELK瞬间完成总图建筑名称标注
哎呦,又到了每周一次的制图教室啦.经过前面两次制图教程的分享,相信大家对于白模填色和写实渲染这两种表达方式肯定有了较好的掌握. 那么今天我们就转战制图技巧篇,和童鞋们聊一下总平面图中的建筑名称标注问题 ...
- python编程首选_为什么说学编程首选是python
为什么学编程 你可能不会成为一名专业的程序员, 不过学编程的确是有很多的原因的 1. 最重要的是你想学!不论是因为业余爱好还是作为职业,编程都是十分有意思的, 都会让你收获很多 2. 如果你是对计算机 ...
- python树代码_浅析AST抽象语法树及Python代码实现
在计算机科学中,抽象语法树(abstract syntax tree或者缩写为AST),或者语法树(syntax tree),是源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码.树上的每个 ...
- python入门教授_南开大学教授强力推荐的5本Python入门书籍,附电子版
筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. python现在的主流版本是3.7(有明显性能提升,强烈推荐) 3.6, 不基于这两个或者更新版本的书,慎重选择.很多库已经不提供py ...
- 永恒python怎么用_毫无基础的人如何入门 Python ?Python入门教程拿走不谢啦!
随着人工智能的发展,Python近两年也是大火,越来越多的人加入到Python学习大军,对于毫无基础的人该如何入门Python呢?这里整理了一些个人经验和Python入门教程供大家参考. 如果你是零基 ...
最新文章
- Scrum指南2020中文版发布/scrum中文网
- 2007年3月东北微软技术活动预告
- 手把手部署Linux下磁盘配额(quota)应用与实战
- oracle+restore+pfile,RAC(11gR2) OCR BACKUP RESTORE
- 高度为k的二叉树个数(递推分析)
- 这一大波电子“艺术”图,美翻了!
- 三层架构与MVC的区别
- Tomacat服务器的安装和配置
- Ubuntu屏幕分辨率设置
- lisp型材库_基于Auto LISP 创建V 带轮标准件库
- 算法复杂度-渐进分析 (Asymptotic Analysis)
- 用PyTorch完成手写数字识别
- python爬虫探索原神世界(角色篇)
- [转...转] 国内软件破解下载网站列表!
- java json转抽象对象_做一次面向对象的体操:将 JSON 字符串转换为嵌套对象的一种方法...
- 死亡搁浅运送系统服务器,死亡搁浅车辆怎么解锁 死亡搁浅载具获取方法一览...
- 4、Kafka API实战
- 【Java】获取当前时间(毫秒级)
- 让我们再聊聊浏览器资源加载优化
- keras电影评论分类