期权波动率是什么?怎么计算?

期权波动率

  • 历史波动率:基于历史行情计算出来的历史波动率

我们现在站在现实时点B回顾过去,从A到B这段时间的历史行情我们是知道的,但是基于过去一段时间,标的价格的历史数据计算出来的波动率,就是历史波动率,上面例子中X和Y股票的波动率,就属于历史波动率。

  • 历史波动率用来反映标的价格,在过去一段时间的波动水平
    在这里插入图片描述

  • 隐含波动率:预测的波动率

同样站在现在这个时间点B我们不仅可以回顾过去,还可以展望未来,虽然未来的标的价格我们不得而知,但是我们可以通过期权市场去发现投资者对于标的价格来来一段时间波动水平的普遍预期,这种基于期权市场价格计算出来的,反映市场对于未来标的价格波动预期的指标,这就是隐含波动率

例如X公司股票期权以24%的隐含波动率进行交易,而Y公司股票以8%的隐含波动率进行交易,这就反映了出来市场中的一个观点,那就是市场普遍认为,未来X公司股票比Y公司股票的波动性更强。

在这里插入图片描述

  • 已实现波动率:从未来看,波动率的真实值

表示未来的一段时间内,标的价格波动的真实水平,如果我们站在未来时点C,那么它就是历史波动率,但是我们是出于现在这个时点B,因此我们并不能准确的计算出已实现波动率。

已实现波动率通常用于和隐含波动率进行对比,反映出投资者对未来的预期是否准确,换言之就是投资者交易期权是否会盈利。

在这里插入图片描述

隐含波动率计算

def calculateImpv(price, s, k, r, t, cp):
    """计算隐含波动率"""
    # 检查期权价格必须为正数
    if price <= 0:
        return 0
    # 检查期权价格是否满足最小价值(即到期行权价值)
    meet = False
    if cp == 1 and (price > (s - k) * exp(-r * t)):
        meet = True
    elif cp == -1 and (price > k * exp(-r * t) - s):
        meet = True
    # 若不满足最小价值,则直接返回0
    if not meet:
        return 0
    # 采用Newton Raphson方法计算隐含波动率
    v = 0.29 # 初始波动率猜测
    for i in range(50):
        # 计算当前猜测波动率对应的期权价格和vega值
        p = calculatePrice(s, k, r, t, v, cp)
        vega = calculateOriginalVega(s, k, r, t, v, cp)
        
        # 如果vega过小接近0,则直接返回
        if not vega:
            break
        # 计算误差
        dx = (price - p) / vega
        # 检查误差是否满足要求,若满足则跳出循环
        if abs(dx) < DX_TARGET:
            break
        # 计算新一轮猜测的波动率
        v += dx
    # 检查波动率计算结果非负
    if v <= 0:
        return 0
    # 保留4位小数
    v = round(v, 4)
    return v


def calculateOriginalVega(s, k, r, t, v, cp):
    """计算原始vega值"""    
    price1 = calculatePrice(s, k, r, t, v*STEP_UP, cp)
    price2 = calculatePrice(s, k, r, t, v*STEP_DOWN, cp)
    vega = (price1 - price2) / (v * STEP_DIFF)
    return vega
    
def calculatePrice(s, k, r, t, v, cp):
    """计算期权价格"""
    # 如果波动率为0,则直接返回期权空间价值
    if v <= 0:
        return max(0, cp * (s - k))
    d1 = (log(s / k) + (r + 0.5 * pow(v, 2)) * t) / (v * sqrt(t))
    d2 = d1 - v * sqrt(t)
    price = cp * (s * cdf(cp * d1) - k * cdf(cp * d2) * exp(-r * t))
    return price
  • 这个函数的计算过程结合了Newton-Raphson方法和Black-Scholes公式。Black-Scholes公式是一种用来计算欧式期权价格的公式,而Newton-Raphson method是一种用来求解方程根的迭代方法。

在这个函数中,通过解Black-Scholes方程来计算隐含波动率。

BS公式通俗解答

具体来说,Black-Scholes方程是一个偏微分方程,描述了欧式期权价格C(s,t)与基础标的资产价格St、时间t、波动率、行权价格K和无风险利率r之间的关系。通过解这个方程,我们可以找到一个隐含波动率值,使得期权价格与方程的解相等

在这里插入图片描述
这里一共定义了三个函数:calculateImpv,calculateOriginalVega和calculatePrice,分别用于计算隐含波动率、原始vega值以及期权价格,可以看到该策略使用的正式Black-Scholes公式,首先检查波动率是否为0,如果为0,则直接返回期权的空间价值,即max(0, cp * (s - k))。这是因为当波动率为0时,期权价格只与基础资产价格和行权价格有关。

如果波动率不为0,那么会根据Black-Scholes公式计算出两个距离分布函数d1和d2然后根据这些参数计算出期权价格。其中cp代表期权类型(1代表看涨期权,-1代表看跌期权),s代表基础资产价格,k代表行权价格,r代表无风险利率,t代表时间,v代表波动率。

同时在这个情境下,我们可以将期权价格视为一个函数,该函数关于波动率的一阶导数就是vega。因此,通过计算vega并对其进行迭代更新,我们可以更精确地估算出满足某个误差容忍度的波动率值。简单来说,vega在这里起到了一个桥梁的作用,帮助我们将期权价格与波动率联系起来,从而可以通过迭代方法找到合适的波动率值。

在这里插入图片描述

\sigma 就是隐含波动率
r:无风险利率用十年期国债收益率

在这里插入图片描述
在这里插入图片描述

二分法

举一个简单的例子,假定初始猜测某支期权的波动率是 20%,对应该波动率数值估计得到的欧式看涨期权价格是 0.1035 元,显然,比市场价格 0.1566 元更小。

由于期权价格是波动率的增函数,因此合理地估计正确的波动率应该会比 20%更大。然后假定波动率是 30%,对应的期权价格 0.336 元,这个结果又比 0.1566 元高,则可以肯定波动率是介于 20%-30%的区间中。

接下来,取上两次波动率数值的均值,也就是波动率 25%,对应的期权价为 0.1662 元,这个值又比 0.1566 元高,但是合理的波动率所处的区间范围收窄至 20%与 25%之间,然后取均值 22.5%继续计算,

每次迭代都使波动率所处的区间减半,最终就可以计算出满足较高精确度的隐含波动率近似值。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

分布式搜索引擎elasticsearch专栏二

上一篇的传送门&#xff1a; 分布式搜索引擎elasticsearch专栏一-CSDN博客 这一篇博文主要讲解elasticsearch的数据搜索功能。下面会分别使用DSL和RestClient实现搜索。 1.DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1.DSL查询分类 Elasticsea…

Mac nvm install failed python: not found

报错 $>./configure --prefix/Users/xxx/.nvm/versions/node/v12.22.12 < ./configure: line 3: exec: python: not found nvm: install v12.22.12 failed!解决方法 到 App 文件夹&#xff0c;并且打开 cd /System/Applications/Utilities/ open .记得改完 Rosetta 之…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之三 简单卡通漫画风格效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之三 简单卡通漫画风格效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之三 简单卡通漫画风格效果 一、简单介绍 二、简单卡通漫画风格效果实现原理 A、边缘蒙版的处理说明&#xff1…

FPGA控制AD7606_AD7606解读

目录 一、AD7606解读二、引脚说明三、时序图 一、AD7606解读 AD7606特点&#xff1a; 8通道同步采样模拟通道数为8分辨率&#xff1a;16bit&#xff0c;即最小采样的电压为5V/(2^16) 0,00007V&#xff0c;即数字量的1就代表模拟量的0,00007V&#xff0c;2代表0,00014V有效位数…

鸿蒙开发实战:【系统服务管理部件】

简介 samgr组件是OpenHarmony的核心组件&#xff0c;提供OpenHarmony系统服务启动、注册、查询等功能。 系统架构 图 1 系统服务管理系统架构图 目录 /foundation/systemabilitymgr ├── samgr │ ├── bundle.json # 部件描述及编译文件 │ ├── frameworks …

linux之centos7vmware虚拟机的安装

目录 一、下载合适的vmware和操作系统镜像安装文件 来自引用文章的软件下载本片文章使用的软件下载 二、根据教程进行安装 三、网络配置解说 四、配置网络 编辑虚拟机网络 对VMWARE虚拟机网络进行配置 设置虚拟机网络为NAT模式 设置自定义网络为 VMnet8(NAT模式) 编辑li…

[ C++ ] STL---list的使用指南

目录 list简介 list的常用接口 构造函数 赋值运算符重载 迭代器 容量相关接口 元素访问接口 修改相关接口 头插push_front() 头删pop_front() 尾插push_back() 尾删pop_back() insert() erase() list的迭代器失效 list简介 1. list是可以以O(1)的时间复杂度在任意…

机器人现有力控技术检索

文章目录 力控技术1 基本柔顺力控1.1 直接力控1.2 间接力控1.2.1 被动和主动柔顺控制1.2.2 混合力位控制1.2.3 阻抗&导纳力控1.2.3.1 原理1.2.3.2 区别和联系1.2.3.3 工程应用 1.2.4 阻抗力控1.2.5 导纳力控 2 先进力控2.1 自适应力控2.2 鲁棒力控2.3 学习力控 3 智能力控3…

【LabVIEW FPGA入门】使用FPGA实现串行同步接口(SSI)

SSI&#xff08;串行同步接口&#xff09;是连接绝对位置传感器和控制器的广泛应用的串行接口。SSI利用控制器发出一个时钟脉冲序列&#xff0c;初始化传感器的门限输出。 传感器不断更新位置数据&#xff0c;并传送到移位寄存器中。在每一个时钟脉冲序列之间&#xff…

HTML_CSS学习:超链接、列表、表格、表格常用属性

一、超链接_唤起指定应用 1.相关代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>超链接_唤起指定应用</title> </head> <body><a href"tel:10010">电话联…

JavaScript初学心得

JavaScript JavaScript原名是livescript&#xff0c;是由美国网景开发的一种用于对网页操作的脚本语言 网页操作&#xff08;图片切换&#xff09; 脚本语言&#xff08;不需要编译 sql,html,css,javascript,由某种解释器直接可以运行&#xff09; livescript也是面向对象的…

基于Go的开源全栈测试工具RunnerGo使用详解

前言 测试人员目前广泛使用的测试工具如Postman、JMeter等&#xff0c;如Postman缺少对API的性能测试部分、JMeter则缺少测试报告和测试脚本的统一管理系统及UI测试功能&#xff0c;而RunnerGo的出现填补了传统测试工具的空缺&#xff0c;为测试人员提供了一个可以满足测试全流…

计算机毕业设计-基于Python的“哔哩哔哩视频网”视频热度分析

概要 在21世纪的今天&#xff0c;网络发展越来越快&#xff0c;网上的娱乐方式也越来越多样化&#xff0c;而如今在网上观看视频消遣时间越来越受到大众的青睐。Bilibili视频网站是现当下年轻人最受欢迎的一个视频网站。有调查显示&#xff0c;直到2019年的10月份&#xff0c;B…

基于python车辆故障管理系统的设计与实现flask-django-nodejs-php

网络发展前景无限&#xff0c;及早与网络结合&#xff0c;与信息时代同步&#xff0c;与高科技汇合&#xff0c;定会给社会各行各业的发展注入新鲜的活力。站在网络时代的前夜&#xff0c;我们清晰地听到了网络时代的宣言&#xff1a;谁掌握了网络&#xff0c;谁就掌握了未来。…

视觉信息处理和FPGA实现第5次作业-Matlab实现图像逆时针旋转90度

一、Matlab2022a安装 链接&#xff1a;https://pan.quark.cn/s/6e177bc7c11d 提取码&#xff1a;dKNN 二、Matlab使用 2.1 新建一个脚本文件&#xff08;.m文件&#xff09; 2.2 另存为到便于归档的地方 考虑到.m文件如果不是全英文路径&#xff0c;也有可能会出问题&#…

51单片机学习笔记7 串转并操作方法

51单片机学习笔记7 串转并操作方法 一、串转并操作简介二、74HC595介绍1. **功能**&#xff1a;2. **引脚**&#xff1a;3. **工作原理**&#xff1a;4. 开发板原理图&#xff08;1&#xff09;8*8 LED点阵&#xff1a;&#xff08;2&#xff09;74HC595 串转并&#xff1a; 三…

qt-pdf-viewer-library 编译过程记录

1.qtpdfviewerinitializer.h 中 类模板问题需要修改为下面代码: https://github.com/develtar/qt-pdf-viewer-library 下载代码&#xff1a; 编译出现错误 修改代码&#xff0c;如下: 2.无法触发onViewerLoaded 事件&#xff0c;就是界面无法显示PDF文件 修改下面代码&#…

在线播放视频网站源码系统 带完整的安装代码包以及搭建教程

在线播放视频网站源码系统的开发&#xff0c;源于对当前视频市场的深入洞察和用户需求的精准把握。随着视频内容的爆炸式增长&#xff0c;用户对视频播放的需求也日益多样化。他们希望能够随时随地观看自己感兴趣的视频内容&#xff0c;同时还希望能够在观看过程中享受到流畅、…

vue2 vue3 diff算法比较

目录 1&#xff1a;没key 补充1&#xff1a;为什么不建议用index作为key值&#xff1f; 2&#xff1a;有key 2.1&#xff1a;vue2diff 2.2&#xff1a;vue3diff 补充2&#xff1a;vue3的最长递增子序列 补充3&#xff1a;vue2diff和vue3diff的比较 补充4&#xff1a;虚…

Linux 服务升级:MySQL 主从(半同步复制) 平滑升级

目录 一、实验 1.环境 2.Mysql-shell 检查工具兼容性 3.逻辑备份MySQL数据 4.备份MySQL 数据目录、安装目录、配置文件 5.MySQL 升级 6.master节点 使用systemd管理mysql8 7. slave1 节点升级 8. slave2 节点升级 9.半同步设置 二、问题 1.mysqldump备份报错 2.Inn…
最新文章