利用BS模型计算欧式看涨期权价格——基于中国沪深300ETF看涨期权验证,结果发现当期权虚值程度较深时,理论价格与现实价格差异极大。比如,在近年来沪深300很少能到4600点以上,因此理论价格几乎为零,但是现实市场中仍有投机者在够买
作者:袁江磊

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime
import math
from scipy.stats import norm
plt.rcParams['font.sans-serif']=['simhei']#用于正常显示中文标签
plt.rcParams['axes.unicode_minus']=False#用于正常显示负号
import tushare as ts
pro=ts.pro_api()
pd.set_option('display.max_columns', None)# 显示所有列
pd.set_option('display.max_rows', None)# 显示所有行class BlackScholes():"""通过BS模型计算欧式看涨期权价格"""def __init__(self,ts_code):self.data_ = pro.index_daily(ts_code=ts_code)  # 获得指定标的资产的日行情数据def init_info(self,S_0,X,r):"""S_0为股票初始价格,X为行权价格,r为无风险利率"""self.S_0=S_0self.X=Xself.r=rdef time_through(self):"""计算期权到期所剩时间,以年为单位"""time1 = datetime.datetime.strptime(self.start_date, '%Y%m%d')time2 = datetime.datetime.strptime(self.end_date, '%Y%m%d')time_ = time2 - time1  # 作差days=time_.daysreturn days/365def cost(self):"""计算期权费用"""d_1 = (math.log(self.S_0 /self.X) + (self.sigma ** 2 / 2 * self.time_)) / (self.sigma * (math.sqrt(self.time_)))d_2 = d_1 - self.sigma * math.sqrt(self.time_)C = math.exp(-1 * self.r * self.time_) * (self.S_0 * norm.cdf(d_1) - self.X * norm.cdf(d_2))return C/1000def stock_miu_sigma(self,start_date,end_date):"""计算股票价格漂移率miu和波动率sigma,,start_date为现在日期(格式'20200305'),end_date为到期日期,sigma为股票价格波动率(标准差)"""#ts_code = '000300.SH'self.start_date = start_dateself.end_date = end_dateself.time_ = self.time_through()data_ = self.data_data_ = pd.DataFrame(data_[['close','trade_date']])  # 获得其中的收盘价data_.sort_values(['trade_date'], ascending=True,inplace=True)data_['ratio'] = [0.0000000000000000000] * len(data_)data_.index = range(data_.shape[0])# 计算股价比率for i in range(data_.shape[0] - 1):data_['ratio'][i + 1] = np.log(data_['close'][i + 1] / data_['close'][i])# 计算基础参数T = self.time_*365  # 使用过去T天的数据计算漂移率和波动率,本处使用期权到期所剩时间data_train = data_.ix[(len(data_['ratio'])-T):len(data_['ratio']), :]  # 选取过去一月的时间作为训练集mean = data_train['ratio'].sum() / T  # 计算样本均值S_2 = ((data_train['ratio'] - mean) ** 2).sum() / (T - 1)  # 计算样本方差miu = (mean + S_2 / 2) / self.time_  # 股价漂移率sigma = np.sqrt(S_2)/np.sqrt(self.time_)  # 股价波动率self.miu=miuself.sigma = sigma#300ETF看涨期权日线行情
if __name__=='__main__':data_300opt=pd.read_excel('300ETF购.xlsx')data_300opt=data_300opt[['最新','行权','到期日']]data_300opt['行权']=data_300opt['行权']*1000data_300opt.columns=['最新价格','行权','到期日']cols=data_300opt.columns# 300指数日线行情ts_code = '000300.SH'close_300=pro.index_daily(ts_code=ts_code)[['trade_date','close']]#沪深300最新收盘价#df = pro.index_daily(ts_code=ts_code)BS=BlackScholes()S_0=close_300['close'][0]#初始股价,不变值X=data_300opt['行权'][0]#行权价格start_date=close_300['trade_date'][0]#今日日期end_date=str(data_300opt['到期日'][0])#行权日期BS.stock_miu_sigma(ts_code,start_date,end_date)#波动率r = 0.05#无风险收益率#print(BS.sigma)BS.init_info(S_0,X,r)BS.cost()if __name__=='__main__':data_300opt=pd.read_excel('300ETF购.xlsx')#从东方财富下载沪深300指数所有看涨期权的日行情数据data_300opt=data_300opt[['最新','行权','到期日']]data_300opt['行权']=data_300opt['行权']*1000data_300opt.columns=['最新价格','行权','到期日']data_300opt['BS价格']=0.0000000cols=data_300opt.columns# 300指数日线行情ts_code = '000300.SH'close_300=pro.index_daily(ts_code=ts_code)[['trade_date','close']]#获得标的资产指数沪深300日行情数据#df = pro.index_daily(ts_code=ts_code)BS=BlackScholes(ts_code)for i in range(len(data_300opt['行权'])):S_0=close_300['close'][0]#初始股价,不变值X=data_300opt['行权'][i]#行权价格start_date=close_300['trade_date'][0]#今日日期end_date=str(data_300opt['到期日'][i])#行权日期BS.stock_miu_sigma(start_date,end_date)#波动率r = 0.05#无风险收益率#print(BS.sigma)BS.init_info(S_0,X,r)data_300opt['BS价格'][i]=BS.cost()#将通过BS模型计算的期权理论价格并入print('已经完成'+str(round(i/len(data_300opt['行权']),2)*100)+'%')data_300opt

利用BS模型计算欧式看涨期权价格——基于中国沪深300ETF看涨期权_20200524_相关推荐

  1. 基于主成分分析 沪深300个股一致性IF股指交易策略

    策略概述 一般而言,趋势策略在市场有趋势的时候盈利丰厚,而在震荡市场,趋势策略容易发生亏损. 我们可以通过对市场的趋势和震荡进行判断,使策略具有更好的收益表现.此前,我们发布了一系列报告,用来衡量市场 ...

  2. 第2节 二叉树计算欧式和美式期权价格

    第2节 二叉树计算欧式和美式期权价格 2.1 简介 2.2 二叉树计算期权价格算法 2.3 计算过程 Python 代码实现 2.4 相关说明 2.4.1 计算例子 2.4.2 树形定价收敛情况 1. ...

  3. 【SWAT水文模型】SWAT水文模型建立及应用第三期:基于中国土壤数据库建立土壤库(待更新)

    SWAT水文模型建立及应用:基于中国土壤数据库建立土壤库 1 简介 2 土壤数据下载 2.1 数据下载方式 2.1.1 世界土壤数据库HWSD数据 2.1.2 中国土壤数据库 2.2 数据下载 3 土 ...

  4. 基于量子计算的无收益标的资产欧式看涨期权定价和delta风险分析

    目录 1. 问题 1.1. 描述 1.2. 解读 2. 原理 2.1. BSM模型 2.2. 经典蒙特卡洛算法 2.3. 量子蒙特卡洛算法 2.4. 量子.量子计算和量子算法 2.5. 量子算法在金融 ...

  5. 如何用MATLAB写欧氏看涨看跌期权(B-S模型)的代码

    如何用MATLAB写欧氏看涨看跌期权(B-S模型)的代码 欧式期权 (European Options) 即是指买入期权的一方必须在期权到期日当天才能行使的期权. 具体的数学模型为: 无收益欧式看涨期 ...

  6. 在隧道内放置多个地感线圈,车辆通过时、对通过的相邻两个线圈的脉冲信号数据进行实时采集,首先利用云模型算法,计算得到车速的估计值

    1.简介与仿真结论 在隧道内放置多个地感线圈(间距相同),车辆通过时.对通过的相邻两个线圈(或单线圈)的脉冲信号数据进行实时采集,首先利用云模型算法(正向云与逆向云算法结合)或其他,计算得到车速的估计 ...

  7. ML之nyoka:基于nyoka库利用LGBMClassifier模型实现对iris数据集训练、保存为pmml模型并重新载入pmml模型进而实现推理

    ML之nyoka:基于nyoka库利用LGBMClassifier模型实现对iris数据集训练.保存为pmml模型并重新载入pmml模型进而实现推理 目录 基于nyoka库利用LGBMClassifi ...

  8. DL之DNN:自定义2层神经网络TwoLayerNet模型(计算梯度两种方法)利用MNIST数据集进行训练、预测

    DL之DNN:自定义2层神经网络TwoLayerNet模型(计算梯度两种方法)利用MNIST数据集进行训练.预测 导读 利用python的numpy计算库,进行自定义搭建2层神经网络TwoLayerN ...

  9. NLP之WE之Skip-Gram:基于TF利用Skip-Gram模型实现词嵌入并进行可视化、过程全记录

    NLP之WE之Skip-Gram:基于TF利用Skip-Gram模型实现词嵌入并进行可视化 目录 输出结果 代码设计思路 代码运行过程全记录 输出结果 代码设计思路 代码运行过程全记录 3081 or ...

最新文章

  1. 客户端代码压缩成zip和服务器开启gzip
  2. 基于java SSM springboot动物检疫信息管理系统设计和实现
  3. CentOS 6.5下Python3.5以及virtualenv、virtualenvwrapper的安装配置
  4. openfire spark用户名问题续
  5. SIR模型和Python实现
  6. mysqll索引实验
  7. Pollard_rho大数质因数分解+拉格朗日四平方和定理(bzoj 2904: 平方和)
  8. Linux进程管理之SMP负载平衡
  9. 辅助功能性代码,研究和记录代码。
  10. 嵌入式linux离线地图,基于gmap.net制作离线地图下载器
  11. SaaSBase:15个最佳免费HTML编辑器
  12. 你不知道的Linux的发展史
  13. 2016年408计网选择题
  14. Ubuntu16.04下xbrowser远程图形化桌面配置(简单几步完成~)
  15. PyCharm控制台Problems提示:Typo: In word ‘___‘
  16. 再也不用手动复制粘贴收集Taptap游戏评论了,还可以制作好看的热词词云图~
  17. 关于模拟京东二维码登录失败的解决方案
  18. 小程序支付微信回调地址问题
  19. python爬虫遇见needs to review the security of your connection before proceeding绕过 Cloudflare
  20. 计算机应届毕业生怎么获得BATJ实习转正机会呢?

热门文章

  1. 查看oracle数据库服务器配置,Oracle数据库监听配置
  2. C++ 语言左值引用 (lvalue reference)
  3. Web加速器:Loder v1.0 发布 ?
  4. 刘欢新歌 赢在中国主题歌
  5. spring(day06)
  6. 更改极光推送通知栏图标
  7. 数字档案馆系统测试前准备工作(“指标表”和“具体要求”可下载)
  8. TMF8801激光测距芯片驱动程序
  9. 37种传感器(十一)之金属触摸模块+Stduino NanoUNO
  10. mysql hint 简书,MySQL深入学习