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

news2025/1/22 15:45:44

期权波动率

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

我们现在站在现实时点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.coloradmin.cn/o/1529322.html

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

相关文章

c++类和对象(中)类的6个默认成员函数及const成员函数

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 今日主菜&#xff1a;类和对象 主厨&#xff1a;邪王真眼 所属专栏&#xff1a;c专栏 主厨的主页&#xff1a;Chef‘s blog 前言&#xff1a; 咱们之前也是…

字符分类函数

字符分类函数 文章目录 前言1. 字符分类函数1.2.使用例子 2.2.字符操作函数 前言 在编程的过程中&#xff0c;我们经常要处理字符和字符串&#xff0c;为了⽅便操作字符和字符串&#xff0c;C语⾔标准库中提供了⼀系列库函数&#xff0c;接下来我们就学习⼀下这些函数。 1. 字…

搭建项目后台系统基础架构

任务描述 1、了解搭建民航后端框架 2、使用IDEA创建基于SpringBoot、MyBatis、MySQL、Redis的Java项目 3、以原项目为参照搭建项目所涉及到的各个业务和底层服务 4、以原项目为例&#xff0c;具体介绍各个目录情况并参照创建相关文件夹 1、创建项目后端 BigData-KongGuan …

Linux发布项目(包括前端和后端)到OpenEuler虚拟机上

后端&#xff1a;SpringBoot 前端&#xff1a;VUE3 操作系统&#xff1a;Linux 虚拟机&#xff1a;OpenEuler 发布项目是需要关闭虚拟机上的防火墙 systemctl stop firewalld 一、发布后端项目到虚拟机 1打包后端项目为jar包 2将打包后的jar包放到虚拟机 /opt 目录下 3 运行项…

接口自动化测试流程、工具及实践(完整版)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、接口自动化测试简介 接口自动化测试是指通过编写脚本或使用自动化工具&#xff0c;对软件系…

小朋友排队(蓝桥杯,acwing,归并)

题目描述&#xff1a; n 个小朋友站成一排。 现在要把他们按身高从低到高的顺序排列&#xff0c;但是每次只能交换位置相邻的两个小朋友。 每个小朋友都有一个不高兴的程度。 开始的时候&#xff0c;所有小朋友的不高兴程度都是 0。 如果某个小朋友第一次被要求交换&#…

算法之前缀和

题目1: 【模板】一维前缀和&#xff08;easy&#xff09; 方法一: 暴力解法, 时间复杂度O(n*q), 当n10^5, q 10^5, 时间复杂度为O(10^10), 会超时. 方法二: 前缀和: 快速求出数组中某一段连续区间的和. 第一步: 预处理出来一个前缀和数组dp: 1. dp[i]表示区间[1,i]里所有元…

“币安悬赏500万美元”,调查BOME内幕!创始人:谁控制了Meme,谁就控制了宇宙!

自去年11月开始&#xff0c;背靠美帝资本力量的Solana在FTX交易所暴雷后重新崛起。目前Sol价格已经从熊市的8美刀上涨至200刀附近。除了Sol本币上涨外&#xff0c;Solana生态也是快速发展。 这其中又以Meme币最为突出&#xff01;西方玩家正把所有的梗都搬进链上制成Meme币&am…

echarts geo地图加投影两种方法

方法1&#xff0c;geo中加多个地图图形&#xff0c;叠加。缩放时 可能会不一致&#xff0c;需要捕捉georoam事件&#xff0c;使下层的geo随着上层的geo一起缩放拖曳 geo: [{zlevel: 3,//geo显示级别&#xff0c;默认是0 【最顶层图形】map: BJ,//地图名roam: true,scaleLimit: …

[AIGC] MySQL与PostgreSQL:两种流行的数据库系统的对比

数据库是存储和查询数据的重要工具。在选择数据库时&#xff0c;两个经常被考虑的选项都是开源的&#xff1a;MySQL和PostgreSQL。这两个数据库都与许多应用程序一起使用&#xff0c;但它们在某些方面存在显著的不同。在本文中&#xff0c;我们将比较MySQL和PostgreSQL的一些关…

基金分析之与行业间的相关系数计算

这几年买了非常多的基金&#xff0c;一直很好奇基金在非业绩披露期都持有了什么东西&#xff1f;所以写了一个基金净值和各申万一级行业相关系数&#xff08;以及和市场主流指数&#xff09;的代码看看能否分析出点东西。 这里依然用了wind API&#xff0c;复现前记得安装。 …

超快速排序(蓝桥杯,归并排序,acwing)

题目描述&#xff1a; 在这个问题中&#xff0c;您必须分析特定的排序算法----超快速排序。 该算法通过交换两个相邻的序列元素来处理 n 个不同整数的序列&#xff0c;直到序列按升序排序。 对于输入序列 9 1 0 5 4&#xff0c;超快速排序生成输出 0 1 4 5 9。 您的任务是确…

JavaScript基础知识2

求数组的最大值案例 let arr[2,6,1,7,400,55,88,100]let maxarr[0]let minarr[0]for(let i1;i<arr.length;i){max<arr[i]?maxarr[i]:maxmin>arr[i]?minarr[i]:min}console.log(最大值是&#xff1a;${max})console.log(最小值是&#xff1a;${min}) 操作数组 修改…

企业专业化管理金字塔:技能进阶与案例分析

在纷繁复杂的企业管理领域中&#xff0c;一套行之有效的管理技能体系对于企业的稳健发展至关重要。本文将深入探讨企业专业化管理金字塔的五个层次&#xff1a;基本的管理技能、业务操作管理技能、组织管理技能、组织开发技能以及管理转变技能&#xff0c;并结合实际案例&#…

Java后端八股------设计模式

Coffee可以设计成接口。 b

代码随想录算法训练营第27天|93.复原IP地址、78.子集、90.子集二

目录 一、力扣93.复原IP地址1.1 题目1.2 思路1.3 代码1.4 总结 二、力扣78.子集2.1 题目2.2 思路2.3 代码2.4 总结 三、力扣90.子集二3.1 题目3.2 思路3.3 代码3.4 总结 一、力扣93.复原IP地址 &#xff08;比较困难&#xff0c;做起来很吃力&#xff09; 1.1 题目 1.2 思路 …

30.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-数据搜索功能

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果 内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;29.数据推测功能…

解决MySQL “Lock wait timeout exceeded; try restarting transaction“ 错误

在处理MySQL数据库时&#xff0c;我们偶尔会遇到一个棘手的错误消息&#xff1a;“Lock wait timeout exceeded; try restarting transaction”。这通常表明我们的一个事务在尝试获取资源时被阻塞了太长时间。在并发环境中&#xff0c;多个事务同时竞争相同的资源可能会导致这种…

前端 - 基础 表单标签 -- 表单元素( input - type属性) 文本框和密码框

表单元素 &#xff1a; 在表单域中可以定义各种表单元素&#xff0c;这些表单元素就是允许用户在表单中输入或选择 的内容控件。 表单元素的外观也各不一样&#xff0c;有小圆圈&#xff0c;有正方形&#xff0c;也有方框&#xff0c;乱七八糟的&#xff0c;各种各样&#xf…

关系数据库:关系数据结构基础与概念解析

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…