中国版VIX—基于上证50ETF

中国版VIX—基于上证50ETF

文章目录

  • 中国版VIX—基于上证50ETF
        • 背景
        • VIX与SKEW指数复现方法概要
        • 部分代码:

完整代码及资料可关注gzh “finance褪黑素” 回复关键字 【3003】 获取

背景

VIX指数是芝加哥期权交易所引入的用于衡量股票市场波动率的指标,主要基于标准普尔500指数的期权价格加权计算。它反映了市场对未来30天波动率的整体预期。而SKEW指数则是对市场风险偏好的一种测量,主要衡量了市场对价格尾部风险的担忧程度。这些指数不仅提供了对市场波动性和风险情绪的直观理解,而且作为衍生品的基础,也成为了投资者进行风险管理和交易决策的重要工具。

2015年6月,上海证券交易所与中证指数有限公司开始试运行中国波指(iVX),这是一项用于衡量市场对未来30天上证50ETF波动率预期的指标。该指数基于上证50ETF期权价格构建,为投资者提供了一个了解市场波动性预期的工具。然而,尽管中国波指(000188)于2016年11月正式发布,但由于各种原因,自2018年2月起该指标暂停发布,导致市场上缺乏衡量市场预期波动率的指标。

本文参考东海证券2019.12.10《VIX及SKEW指数的构建、分析和预测》进行中国版VIX的复现。

文章代码参考来源为:
https://www.joinquant.com/view/community/detail/787f5bf7ba5add2d5bc68e154046c10e?type=1

VIX与SKEW指数复现方法概要

当日的 VIX 是根据所选期权价格的波动率来计算的。首先,我们从期权市场中选择近月(近期到期)和次近月(次近期到期)的期权合约。然后,我们计算每个期权合约的价格差异,以确定价格差异最小的期权合约的执行价格(称为 K 0 K_0 K0)。

接下来,我们构建一个期权执行价格与价格差异的表格,并计算每个执行价格的中间价格,其中中间价格是对应于 K 0 K_0 K0 的认购和认沽期权价格的平均值。然后,我们计算每个执行价格的 δ K \delta_K δK,即执行价格差异的变化率。

通过计算 δ K \delta_K δK 和中间价格之间的加权平均值,我们可以得到近月和次近月的波动率 σ near \sigma_{\text{near}} σnear σ next \sigma_{\text{next}} σnext。最后,通过使用这两个波动率和期权合约的期限(近月期限和次近月期限),我们计算出 VIX。

具体步骤如下:

  1. 选择近月和次近月的期权合约,并计算它们的执行价格差异。
  2. 构建期权执行价格与价格差异的表格,并计算每个执行价格的中间价格。
  3. 计算每个执行价格的 δ K \delta_K δK
  4. 计算近月和次近月的波动率 σ near \sigma_{\text{near}} σnear σ next \sigma_{\text{next}} σnext
  5. 使用近月和次近月的波动率以及期权合约的期限,计算 VIX。

公式如下:

  1. K 0 K_0 K0 的计算:
    K 0 = argmin ( ∣ diff ∣ ) K_0 = \text{argmin}(|\text{diff}|) K0=argmin(diff)

  2. 中间价格的计算:
    median = C K 0 + P K 0 2 \text{median} = \frac{C_{K_0} + P_{K_0}}{2} median=2CK0+PK0

  3. δ K \delta_K δK 的计算:
    δ K = 1 2 ( K i + 1 − K i ) \delta_K = \frac{1}{2}(K_{i+1} - K_{i}) δK=21(Ki+1Ki)

  4. 波动率的计算:
    σ = 2 T ∑ i δ K K i 2 e R T Q K − 1 T ( F K 0 − 1 ) 2 \sigma = \frac{2}{T} \sum_{i} \frac{\delta_K}{K_i^2} e^{RT} Q_K - \frac{1}{T} \left( \frac{F}{K_0} - 1 \right)^2 σ=T2iKi2δKeRTQKT1(K0F1)2

  5. VIX 的计算:
    V I X = ( weight ⋅ near_term ⋅ σ near + ( 1 − weight ) ⋅ next_term ⋅ σ next ) × ( YEARS 30 ) VIX = \sqrt{\left( \text{weight} \cdot \text{near\_term} \cdot \sigma_{\text{near}} + (1 - \text{weight}) \cdot \text{next\_term} \cdot \sigma_{\text{next}} \right) \times \left( \frac{\text{YEARS}}{30} \right)} VIX=(weightnear_termσnear+(1weight)next_termσnext)×(30YEARS)

其中, K 0 K_0 K0 是执行价格差异最小的期权合约的执行价格, C K 0 C_{K_0} CK0 P K 0 P_{K_0} PK0 分别是认购和认沽期权合约的价格, δ K \delta_K δK 是执行价格差异的变化率, K i K_i Ki 是执行价格, Q K Q_K QK 是中间价格, T T T 是期限, R R R 是无风险收益率, F F F 是远期价格水平, σ near \sigma_{\text{near}} σnear σ next \sigma_{\text{next}} σnext 分别是近月和次近月的波动率, weight \text{weight} weight 是权重, near_term \text{near\_term} near_term next_term \text{next\_term} next_term 分别是近月和次近月的期限, YEARS \text{YEARS} YEARS 是一年的天数。

Skew 是衡量期权价格隐含波动率在不同执行价格上的偏差的指标。常见的 Skew 计算方法是计算认沽期权和认购期权的价格差异,然后将其除以认购期权价格,即 P − C C \frac{P - C}{C} CPC,其中 P P P 是认沽期权的价格, C C C 是认购期权的价格。

以下是 Skew 的计算方法的代码示例,假设有一组认购期权价格列表 call_prices 和一组对应的认沽期权价格列表 put_prices

def calculate_skew(call_prices, put_prices):# 计算认购期权和认沽期权的价格差异price_diff = [put_price - call_price for put_price, call_price in zip(put_prices, call_prices)]# 计算 Skewskew = sum(price_diff) / len(call_prices)return skew# 示例数据
call_prices = [10, 12, 15, 18, 20]
put_prices = [8, 10, 12, 14, 16]# 计算 Skew
skew = calculate_skew(call_prices, put_prices)
print("Skew 值为:", skew)

这段代码首先计算了认购期权和认沽期权的价格差异,然后将其除以认购期权的价格,得到 Skew 的值。
在这里插入图片描述
在这里插入图片描述

部分代码:
def calc_vix(near_sigma: float, next_sigma: float, near_term: float,next_term: float) -> float:"""计算VIXArgs:near_sigma (float): 近月sigmanext_sigma (float): 次近月sigmanear_term (float): 近月期限next_term (float): 次近月期限Returns:float: VIX"""weight = calc_weight(near_term, next_term)return np.sqrt((near_term * near_sigma * weight + next_term * next_sigma *(1 - weight)) * (YEARS / 30))class CVIX():def __init__(self, data: pd.DataFrame) -> None:self.data: pd.DataFrame = dataself.variable_dict: defaultdict = defaultdict(list)def vix(self) -> pd.Series:return self.data.groupby('date').apply(lambda x: self._calc_vix(x))def _calc_vix(self, df: pd.DataFrame) -> pd.Series:trade_date = df.name# 获取对应的期权信息# 近月near_df: pd.DataFrame = df.query('maturity == near_maturity')near_sigma_variable: Dict = _get_sigma(near_df, 'near')near_sigma_variable['trade_date'] = trade_dateself._get_variable_dict(near_sigma_variable, 'near')# 次近月next_df: pd.DataFrame = df.query('maturity == next_maturity')next_sigma_variable: Dict = _get_sigma(next_df, 'next')next_sigma_variable['trade_date'] = trade_dateself._get_variable_dict(next_sigma_variable, 'next')# 计算vixvix = calc_vix(near_sigma_variable['sigma'],next_sigma_variable['sigma'],near_sigma_variable['term'],next_sigma_variable['term'])return vixdef skew(self) -> pd.Series:if ('next' in self.variable_dict) and ('near' in self.variable_dict):next_variable = pd.DataFrame(self.variable_dict['next'])near_variable = pd.DataFrame(self.variable_dict['near'])else:self.vix()next_s = _get_s(next_variable)near_s = _get_s(near_variable)df = pd.concat((near_variable['term'], next_variable['term'], near_s, next_s),axis=1)df.columns = ['t1', 't2', 'p1', 'p2']df['w'] = df.apply(lambda x: calc_weight(x['t1'], x['t2']), axis=1)return df.apply(lambda x: calc_skew(x['w'], x['p1'], x['p2']), axis=1)def _get_variable_dict(self, sigma_variable: Dict, name: str) -> None:tmp: Dict = {}for k, v in sigma_variable.items():if k == 'median_table':tmp['Q_K'] = v.valuestmp['K'] = np.array(v.index)elif k == 'delta_k':tmp['delta_k'] = v.valueselif k not in ['strike_matrix']:tmp[k] = vself.variable_dict[name].append(tmp)

完整代码及资料可关注gzh “finance褪黑素” 回复关键字 【3003】 获取

资料目录如下:

在这里插入图片描述

更多数据也可从下面的链接获取:
包含上证50ETF期权2015.2.9-2023.12.31(上交所)、沪深300股指期权2022.7.22-2023.12.31(中金所)、上证50股指期权2022.12.29-2023.12.31(中金所)、中证1000股指期权2019.12.23-2023.12.31(中金所)的VIX和SKEW计算结果。
均为成立至今。

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

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

相关文章

比亚迪24届春招Offer面经

本文介绍2024届春招中,比亚迪的高级底盘工程师岗位1场面试的基本情况、提问问题等。 2024年04月投递了比亚迪的系统开发类、 技术研发类、 技术研究类岗位,面试结束后分配至高级底盘工程师岗位;面试前未确定部门,面试结束后分配至…

区块链技术与应用学习笔记(1-4节)——北大肖臻课程

目录 1. 区块链初识(课程简介) 被过度炒作,落地应用有限? 下一代的价值互联网?世界上最慢的数据库? 2. BTC-密码学原理(比特币) 1)哈希 哈希函数特点 个人学习所得 2)签名 个人对于…

利用Spring Boot后端与Vue前端技术构建现代化电商平台

作者介绍:✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅获取源码联系方式请查看文末🍅 推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目…

竞赛课第九周(埃式筛法,矩阵乘法)

1.埃式筛法:求区间[2, n]内所有的素数对 【参考代码】 #include <bits/stdc.h> using namespace std;const int N 1e5; vector<int> prime; bool visit[N];int main() {int n;cin>>n;memset(visit, false, sizeof(visit));for(int i2; i<sqrt(n); i){i…

成都百洲文化传媒有限公司电商服务如何?

在当今数字化快速发展的时代&#xff0c;电商行业日益繁荣&#xff0c;成都百洲文化传媒有限公司作为专注电商服务的领先者&#xff0c;以其独特的服务理念和创新能力&#xff0c;赢得了市场的广泛认可。本文将从公司的背景、服务特点、市场优势以及未来展望等方面&#xff0c;…

深入理解GTK、Qt、AWTK:跨平台GUI框架对比

目录标题 GTK特性&#xff1a;优点&#xff1a;缺点&#xff1a; Qt特性&#xff1a;优点&#xff1a;缺点&#xff1a; AWTK特性&#xff1a;优点&#xff1a;缺点&#xff1a; 适用场景 在当今的软件开发领域&#xff0c;图形用户界面&#xff08;GUI&#xff09;的开发是不可…

炫云云渲染:免费体验与高性价比的首选,设计师们的渲染利器

使用云渲染是要收费的&#xff0c;如果你是第一次使用&#xff0c;是可以白嫖一波云渲染的&#xff0c;所有的云渲染都会或多或少送一些渲染券&#xff0c;你可以用它们送的渲染券免费渲一波图。但是不能一直白嫖&#xff0c;再次注册账号人家就不会送体验券了&#xff0c;有些…

搭建AI知识库的终极指南

今天我们来聊聊一个挺火的话题——搭建AI知识库。你可能在想&#xff0c;这AI知识库到底是什么&#xff1f;为什么现在这么多企业都要搭建它呢&#xff1f;下面我们就一起逐步了解对AI知识库从认识到搭建的全过程。 一、什么是AI知识库 AI知识库就是一个利用人工智能技术&#…

基于Python实现的推箱子小游戏

Python贪吃蛇小游戏实现: 推箱子曾经在我们的童年给我们带来了很多乐趣。推箱子这款游戏现在基本上没人玩了&#xff0c;甚至在新一代人的印象中都已毫无记忆了。。。但是&#xff0c;这款游戏可以在一定程度上锻炼自己的编程能力。 运行效果如图所示&#xff1a; 游戏关卡有点…

一文读懂海外站建设平台选择,HubSpot为何独占鳌头?

说起海外站建设平台&#xff0c;就像咱们挑餐馆一样&#xff0c;得看菜色合不合胃口&#xff0c;环境舒不舒服&#xff0c;还有价格能不能接受。市面上那些平台&#xff0c;各有各的招牌菜&#xff0c;但哪道最适合你&#xff0c;还真得好好琢磨琢磨。如果你想要的是那种既实用…

【产品经理修炼之道】- 从需求到功能的转化过程

产品经理的最大作用是将需求转化为产品或者功能&#xff0c;从需求到功能&#xff0c;会经历哪些过程&#xff1f;本文总结了从需求到功能的转化过程&#xff0c;希望对你进一步了解有所帮助。 “大部分的产品经理特别是数字化产品经理其核心价值就是如何去解决如何把需求转化为…

Azure AKS集群监控告警表达式配置

背景需求 Azure AKS集群中&#xff0c;需要对部署的服务进行监控和告警&#xff0c;需要创建并启用预警规则&#xff0c;而这里怎么去监控每个pod级别的CPU和内存&#xff0c;需要自己写搜索查询 解决方法 搜索和查询的语句如下&#xff0c;需要自己替换其中的部分信息,其中…

汽车驾驶3D模拟仿真展示系统更立体直观

随着新能源汽车的普及&#xff0c;它已成为现代生活中不可或缺的交通工具。并且国产车的崛起&#xff0c;其设计与零部件制造水平已能与合资车相媲美&#xff0c;因此汽车维修技能的学习变得尤为重要。汽车维修3D仿真教学软件应运而生&#xff0c;为广大学员提供了一个直观、高…

vLLM-prefix浅析(System Prompt,大模型推理加速)

原文&#xff1a;vLLM-prefix浅析&#xff08;System Prompt&#xff0c;大模型推理加速&#xff09; 简介 本文浅析了在大模型推理加速方面一个非常优秀的项目 vLLM 的一个新特性 Prefix。在 Prompt 中有相同前缀时可以提高吞吐量降低延迟&#xff0c;换句话说可以省去这部分…

解线性方程组——上三角、下三角,回代算法 | 北太天元

1. 解上三角(回代) a i i ≠ 0 a_{ii\neq0} aii0​ , i 1 , 2 , … , n i1,2,\ldots,n i1,2,…,n a 11 x 1 a 12 x 2 ⋯ a 1 n x n b 1 a 22 x 2 ⋯ a 2 n x n b 2 ⋯ a n n x n b n \begin{aligned} a_{11}x_1a_{12}x_2\cdotsa_{1n}x_n&b_1 \\ a_{22}x_2\cdot…

解决idea不识别${pageContext.request.contextPath}的方法

文章目录 一、产生原因二、解决方法——直接修改web.xml文件三、修改模板——找到web.xml模板&#xff0c;修改替换 一、产生原因 由于web.xml 使用的web-app版本号过低。导致无法识别"{pageContext.request.contextPath}"。 IDEA在创建javaweb项目的时候&#xff0…

synchronized 之谜

序言 本文给大家介绍一下 synchronized 关键字的部分原理。 一、内存中的 Java 对象 class A {private String attr; }先引入一个问题&#xff1a;上面类 A 有一个属性 attr。当类 A 实例化之后的对象在内存中是如何表示的呢&#xff1f; 在内存中&#xff0c;Java 对象由三…

2024年03月CCF-GESP编程能力等级认证Python编程二级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(共15题,共30分) 第1题 小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是? A.小程序 B.计时器 C.操作系统 D.神话人物 答案…

【Linux驱动层】iTOP-RK3568学习之路(三):字符设备驱动框架

一、总体框架图 二、字符设备相关函数 静态申请设备号 register_chrdev_region 函数原型&#xff1a;register_chrdev_region(dev_t from, unsigned count, const char *name) 函数作用&#xff1a;静态申请设备号&#xff0c;可以一次性申请多个连续的号&#xff0c;count指定…

电阻理论基础

电流的形成是电荷运动&#xff0c;电子方向相反&#xff0c;标量 电压&#xff1a;电势有参考点&#xff0c;是一个相对量 电阻的值不取决于电压和电流的&#xff0c; Ra表示标准电阻 R表示任意温度的电阻