期权计算隐含波动率

牛顿迭代法

 

from scipy.stats import norm
import numpy as np
def bscall(S,K,r,sigma,t):d1=(np.log(S/K)+(r+0.5*sigma**2)*t)/(sigma*np.sqrt(t))d2=d1-sigma*np.sqrt(t)return S*norm.cdf(d1)-K*np.exp(-r*t)*norm.cdf(d2)
def bsput(S,K,r,sigma,t):d1=(np.log(S/K)+(r+0.5*sigma**2)*t)/(sigma*np.sqrt(t))d2=d1-sigma*np.sqrt(t)return -S*norm.cdf(-d1)+K*np.exp(-r*t)*norm.cdf(-d2)def newton_call(P,S,K,r,t):#print('call')sigma = 0.2while abs(bscall(S,K,r,sigma,t)-P)>0.0001:if bscall(S,K,r,sigma,t)>P:sigma-=0.001else:sigma+=0.001return sigma
def newton_put(P,S,K,r,t):#print('put')sigma=0.2while abs(bsput(S,K,r,sigma,t)-P)>0.0001:if bsput(S,K,r,sigma,t)>P:sigma-=0.0001else:sigma+=0.0001return sigma

二分法

#二分法
def binary_call(P,S,K,r,t):sigma_up=1sigma_down=0.001sigma_mid=(sigma_up+sigma_down)/2while abs(bscall(S,K,r,sigma_mid,t)-P)>0.0001:if bscall(S,K,r,sigma_down,t)<P<bscall(S,K,r,sigma_mid,t):sigma_up=sigma_midsigma_mid=(sigma_mid+sigma_down)/2elif bscall(S,K,r,sigma_up,t)>P>bscall(S,K,r,sigma_mid,t):sigma_down=sigma_midsigma_mid=(sigma_up+sigma_down)/2else:print('error!')breakreturn sigma_mid
def binary_put(P,S,K,r,t):sigma_up=1sigma_down=0.001sigma_mid=(sigma_up+sigma_down)/2while abs(bsput(S,K,r,sigma_mid,t)-P)>0.0001:if bsput(S,K,r,sigma_down,t)<P<bsput(S,K,r,sigma_mid,t):sigma_up=sigma_midsigma_mid=(sigma_mid+sigma_down)/2elif bsput(S,K,r,sigma_up,t)>P>bsput(S,K,r,sigma_mid,t):sigma_down=sigma_midsigma_mid=(sigma_up+sigma_down)/2else:print('error!')breakreturn sigma_mid

微笑曲线

'''
波动率微笑和波动率偏斜波动率微笑(smile)描述了期权隐含波动率和执行价格之间的关系,即在其他条件相同的情况下,期权的隐含波动率在平值点附近最小,在虚值和实值区域更大;
若隐含波动率在低执行价格区域高于高执行价格区域(即单调递减),那么就称为波动率偏斜(skew),对于股票期权来说这种情况更常见
'''
import numpy as np
from datetime import date
import matplotlib.pyplot as plt
from pylab import mpl
def smile(df1=0,df2=0):t=(date(2018,6,27)-date(2017,12,29)).days/365S=2.859;r=0.032K=np.arange(2.7,3.05,0.05)Pcall=np.array([0.2841,0.2486,0.2139,0.1846,0.1586,0.1369,0.1177])Pput=np.array([0.0464,0.0589,0.0750,0.0947,0.1183,0.1441,0.1756])volcall=np.zeros_like(K)for i in range(len(K)):volcall[i]=(binary_call(Pcall[i],S,K[i],r,t))volput=np.zeros_like(K)for i in range(len(K)):volput[i]=(binary_put(Pput[i],S,K[i],r,t))mpl.rcParams['font.sans-serif']=['SimHei']mpl.rcParams['axes.unicode_minus']=Falseplt.plot(K,volcall,label='50ETF认购期权')plt.plot(K,volput,label='50ETF认沽期权')plt.xlabel('执行价格')plt.ylabel('隐含波动率')plt.title('50ETF期权的波动率微笑(偏斜)')plt.legend()plt.grid()
smile()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449554.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

进击的二维码 | ArcBlock 课堂预告

ArcBlock Technical Learning Series 第十七期进击的二维码本周三&#xff0c;1 月 30 日下午 1:30 时 &#xff08;美国太平洋时间 29日下午 21:30 时&#xff09;&#xff0c;由 ArcBloc 后端工程师孙博山 授课。复制代码二维码源于日本,如今世界各国都在使用。一张简单的二维…

期权数据计算

判断是否为调仓日 ef is_adjust_day(self, dom1):判断是否是每月的调仓日。 :params int dom: 每月第几个交易日进行调仓&#xff0c;缺省是第1个交易日。:return: 如果是调仓日&#xff0c;返回True&#xff0c;否则返回False。ret Falsetoday self.datetime.date()…

由Docker的MySQL官方镜像配置的容器无法启动问题解决办法(修改配置后无法启动)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 为了方便阅读&#xff0c;我在原文基础上加了一些批注&#xff0c;说明我自己的情况&#xff0c;用红色标示。 这篇文章记录了我在使用…

HEVC/H265 主要设计者谈HEVC/H265

Overview of the High Efficiency Video Coding (HEVC) Standard Gary J. Sullivan, Fellow, IEEE, Jens-Rainer Ohm, Member, IEEE, Woo-Jin Han, Member, IEEE, and Thomas Wiegand, Fellow, IEEE Gary J. Sullivan是H263&#xff…

阿里云 Aliplayer高级功能介绍(九):自动播放体验

基本介绍经常会碰到客户询问&#xff0c;为什么我设置了autoplay为true&#xff0c;但是没有自动播放&#xff0c;每次都要向客户解释这个是浏览器从用户体验角度考虑做的限制&#xff0c;客户会继续询问那我要怎么做&#xff1f; 针对这个问题Aliplayer也专们做过优化&#xf…

指数定投(行不行学习)

import tushare as ts import pandas as pd import numpy as np from scipy import stats import tushare as ts import matplotlib.pyplot as plt %matplotlib inline #正常显示画图时出现的中文和负号 from pylab import mpl mpl.rcParams[font.sans-serif][SimHei] mpl…

centOS安装python3.7.2

1.查看centos中自带的Python地址&#xff1a;which python&#xff08;一般在 /usr/bin/python&#xff09; 2.切换到python安装目录&#xff1a;cd /usr/bin 3.查看对应的Python版本指向&#xff1a;ls -l python* 4.创建一个空目录&#xff1a;mkdir /usr/local/python3 5.…

有进度条圆周率Π计算

圆周率π的计算 一、圆周率π的简介 圆周率的介绍圆周率用希腊字母 π&#xff08;读作pi&#xff09;表示&#xff0c;是一个常数&#xff08;约等于3.141592654&#xff09;&#xff0c;是代表圆周长和直径的比值。它是一个即无限不循环小数&#xff0c;在日常生活中&#xf…

期权制作回测数据

将指定的档位的期权&#xff0c;指定阶段剩余到期日的期权数据合并&#xff0c;用于回测 import pandas as pd import numpy as np import akshare as ak pd.set_option("display.max_rows",None) pd.set_option("display.max_columns",None)nh_price ak…

HEVC/H265 HM10.0 分析(一)NALread.cpp

下面分析 NALread.cpp 函数和代码。 void read(InputNALUnit& nalu, vector<uint8_t>& nalUnitBuf) {/* perform anti-emulation prevention */TComInputBitstream *pcBitstream new TComInputBitstream(NULL);convertPayloadToRBSP(nalUnitBuf, (nalUnitBuf[0]…

Docker run 命令 参数说明

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 docker run &#xff1a;创建一个新的容器并运行一个命令 语法 docker run [OPTIONS] IMAGE [COMMAND] [ARG...][OPTIONS] IMAGE [COM…

【云周刊】第205期:阿里云重磅开源实时计算平台Blink,挑战计算领域的“珠峰”...

本期头条 阿里云重磅开源实时计算平台Blink&#xff0c;挑战计算领域的“珠峰” 信息爆炸的时代&#xff0c;智能推荐已经被应用到各类互联网产品中&#xff0c;但为千万级甚至亿级规模的用户实时做精准的推荐难度极高。这一难题已经被阿里攻克了&#xff1a;双11的第1分钟&…

凯特勒通道(backtrader)

import backtrader as bt import datetime import pandas as pd import matplotlib.pyplot as plt import backtrader.analyzers as btanalyzers#定义指标 class Ketler(bt.Indicator):params dict(ema20,atr 17)lines (expo,atr,upper,lower)plotinfo dict(subplot False)p…

MYSQL安装报错 -- 出现Failed to find valid data directory.

运行环境&#xff1a;windows10数据库版本&#xff1a;mysql.8.0.12安装方式&#xff1a;rpm包直接安装 问题描述&#xff1a;mysql初始化的时候找不到对应的数据库存储目录 报错代码&#xff1a; 2018-10-13T03:29:24.179826Z 0 [System] [MY-010116] [Server] D:\Program Fil…

Mysql 取用逗号分隔的字串的子串的方法:SUBSTRING_INDEX

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 有一张部门表&#xff1a;appbricks_department &#xff0c;有 id 字段和 rank_tree 字段。 rank_tree&#xff1a;记录的是当前部门的…

UCloud首尔机房整体热迁移是这样炼成的

2019独角兽企业重金招聘Python工程师标准>>> 2018年下半年&#xff0c;UCloud首尔数据中心因外部原因无法继续使用&#xff0c;需要在很短时间内将机房全部迁走。为了不影响用户现网业务&#xff0c;我们放弃了离线迁移方案&#xff0c;选择了非常有挑战的机房整体热…

akshare双均线backtrader

# -*- coding: utf-8 -*- """ Created on Tue Aug 4 16:52:23 2020author: 四屏 """from datetime import datetime %matplotlib inline import backtrader as bt import matplotlib.pyplot as plt import akshare as akplt.rcParams["fon…

与python相关计算机基础知识

一、编程与编程的目的1、什么是语言&#xff1f;什么是编程语言&#xff1f; 语言是一种事物与另外一个事物沟通的介质 编程语言是程序员与计算机沟通的介质 2、什么是编程&#xff1f; 程序员把自己想让计算机做的事用编程语言表达出来 编程的结果就是一系…

HEVC/H265 HM10.0 分析(二)TComDataCU.cpp

以下分析TComDataCU.cpp。这个cpp是很重要的&#xff0c;要分几次分析完&#xff0c;这是分析TComDataCU.cpp&#xff08;一&#xff09;。 Void TComDataCU::getPartPosition( UInt partIdx, Int& xP, Int& yP, Int& nPSW, Int& nPSH) {UInt col m_uiCUPelX;…

定制化你的ReactNative底部导航栏

前言 ​ 接触过ReactNative(以下简称RN)的大概都知道,react-navigation提供了两种开箱即用的导航栏组件 createBottomTabNavigatorcreateMaterialBottomTabNavigator分别是这样的 尽管官方提供了导航栏的开箱即用方案,但是实际开发里面,我们会遇到各种各样的导航栏,各种各样的动…