首页 > 编程语言 >拓端数据|Python代写时间序列选择波动率预测指数收益算法分析案例

拓端数据|Python代写时间序列选择波动率预测指数收益算法分析案例

时间:2022-11-11 17:04:36浏览次数:51  
标签:Python Data Selected ii 代写 拓端 Date 期权 Options

背景

在传统的金融理论中,理性和同质的投资者是核心假设之一,表明每个投资者都有相同的信息,从而做出同样的决定。然而,投资者显然是不均衡的,信息的不对称在股市中很普遍。当知情投资者优先考虑某种类型的资产时,该类资产可能包含更多隐含信息。

期权市场是知情投资者可能更积极参与的市场之一,正如布莱克在1975年提出的那样,让投资者倾向于以较高的杠杆率而非股票本身交易股票衍生品以获得更多利益,因此期权市场可以包含更多信息。提取这些额外信息的一种方法是仔细研究波动性假笑。

波动性 是我们都熟悉的,Pan(2002)的一个主流理论指出,假笑的主要原因是投资者厌恶跳跃风险引起的风险溢价,尤其是OTM看跌期权的情况。该文假设知情的交易者认识到跳跃风险,对OTM看跌期权的需求越多,跳跃风险溢价就越高。因此,我们定义

波动率偏差= OTM认沽期权隐含波动率 -  ATM看涨期权隐含波动率,

我们在这里验证指数期权波动率偏差是未来指数收益的一个很好的指标。

美国市场

对于美国市场的实证研究,本文使用SPX期权,这是一种现金结算的欧式期权。从学术数据库OptionMetrics中检索2006-2012的选项数据。

拓端数据|Python代写时间序列选择波动率预测指数收益算法分析案例_方差

我们可能会注意到一些隐含波动率数据被遗漏。这可以通过看涨期权价格的下限来解释。当标的资产具有0波动率时,期权价格达到其下限。当实际价格低于下限时,会出现负的隐含波动率,因此我们将其视为错过。

  

拓端数据|Python代写时间序列选择波动率预测指数收益算法分析案例_h5_02

在确定要考虑哪个ATM认购期权合约时,我们选择期权合约,其中执行价格/底层价格的比率最接近1.要选择OTM认沽期权合约,我们首先筛选出合约0.9 <执行价格/底层证券价格<0.95,然后取其执行价格/基础比率最接近0.92的那个。此外,我的多个合同可能满足条件,我们只选择成熟期为30-60天的合同。期限过短的期权往往会出现更加波动的价格波动,期限过长的期权数量很少,无法反映知情交易。本文使用每周平均隐含波动率来检查,从周三到下周二。这个过程在Python中完成,如下面的代码所做的那样。

1

2

3

4

 

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

三十

31

32

33

34

35

36

37

38

39

40

41

42

43


51

import pandas as pd

import numpy as np

#read H5S data

#pd.read_excel('SPXOption.xlsx').to_hdf('SPXOption.h5s','data')

 

ImpliedV=ImpliedV1.append(ImpliedV2)

del ImpliedV1,ImpliedV2

ImpliedV['Expiration']=todatetime(ImpliedV['Expiration'])

#ImpliedV=pd.read_excel("D:\USData\SPXOption.xlsx")

All_Date=pd.Series(ImpliedV.groupby('Date').groups)

SP500=pd.read_excel('D:\USData\SP500.xlsx').iloc[:,0]

Call_Data=pd.Series(0.0,index=todatetime(All_Date),name='Call_Data')

 

#Select given date

All_Options=ImpliedV[ImpliedV['Date']==All_Date[ii]]

All_Options.loc[:,'Maturity']=(All_Options['Expiration']-Today).dt.days

   #Select maturity

   #Select type & strike price

   Options_Selected_C=Date_Selected_Options[Date_Selected_Options['Type']=="C"]

   Options_Selected_C.sort_values(['StrikePrice'],inplace=True)

   Options_Selected_P=Date_Selected_Options[Date_Selected_Options['Type']=="P"]

   Options_Selected_P.loc[:,'StrikePrice']=abs(Options_Selected_P['StrikePrice']/SP500.iloc[ii]-0.92)

   Put_Data[ii]=Options_Selected_P.iloc[0,4]

 

SP500.index=Put_Data.index

SP500=SP500.resample('W-TUE').first()

SP500=(SP500-SP500.shift(1))/SP500.shift(1)

Final_Data['Skew']=Final_Data['Put_Data']-Final_Data['Call_Data']

Final_Data.to_csv('Final_US.csv')

考虑到人们普遍承认该指数具有动量效应,我们在STATA中运行以下回归:

Index_Return [t + 3] =β_0+β_1* Volatility_skew [t] +β_2* Last6M_Index_Return [t] + e

显然,索引返回数据集具有异方差性和自相关特性。运行Newey-West回归数据来调整异方差性和自相关性。

拓端数据|Python代写时间序列选择波动率预测指数收益算法分析案例_方差_03

从变量Volatility_skew的参数为负的结果,这成功地证明了我们的假设

中国市场

对于中国市场,我们使用SH50ETF期权,这是唯一的交易所交易期权合约。由于中国市场的动量效应与美国市场不同,我们采用尝试和误差方法 - 我们尝试将过去5,10和15个月的指数返回数据作为自变量之一。结果如下:

拓端数据|Python代写时间序列选择波动率预测指数收益算法分析案例_方差_04

拓端数据|Python代写时间序列选择波动率预测指数收益算法分析案例_数据_05

拓端数据|Python代写时间序列选择波动率预测指数收益算法分析案例_方差_06

但是,在中国市场,期权价格并未包含知情交易者的信息。我个人认为,由于严厉的监管以限制2015年8月股市崩盘后的未平仓合约,这一点很大。SH50ETF刚刚于2015年2月上市,在每周频率的情况下没有足够的数据供研究。

交易策略

我们使用从SPX期权波动率假笑中提取的信息制定了交易策略。当市场周二收盘时,我们计算每周平均波动率偏差,以及过去6个月的指数收益率。什么时候

β_0+β_1* Volatility_skew [t] +β_2* Last6M_Index_Return [t]> 0

我们在第三周看跌S&P500期货。从回归我们知道β_0=0.0016688β_1=-0.0048342β_2= 0.1152003。该策略是用Python编写的:

# -*- coding: utf-8 -*-

Final_Data=pd.read_csv(r'D:\USData\Final_US.csv',index_col=0)
TestData=deepcopy(Final_Data)
Direction=pd.Series(0.0,index=range(0,len(TestData.index)))

TestData.dropna(axis=0,inplace=True)

for ii in range(0,270):
Direction[ii]=-.0048342*TestData.iloc[ii,0]+.1152003*TestData.iloc[ii,2]+.0016688

Total[ii+1]=Total[ii]*(1-TestData.iloc[ii,1])

如果我们使用此策略进行交易,这是一个净值图表

拓端数据|Python代写时间序列选择波动率预测指数收益算法分析案例_方差_07

很明显,这一战略是一个成功的战略,并且在2008年的股市崩盘中也取得了成功。


标签:Python,Data,Selected,ii,代写,拓端,Date,期权,Options
From: https://blog.51cto.com/u_14293657/5845186

相关文章

  • 拓端tecdat|R语言代写马尔可夫链蒙特卡罗MCMC模型
    什么是MCMC,什么时候使用它?MCMC只是一个从分布抽样的算法。这只是众多算法之一。这个术语代表“马尔可夫链蒙特卡洛”,因为它是一种使用“马尔可夫链”(我们将在后面讨论)的“蒙......
  • 拓端数据|R语言代写解决最优化运营研究问题-线性优化(LP)问题
    使用R中的线性编程工具来解决优化问题。优化通常用于运营研究领域,以解决生产计划,运输网络设计,仓库位置分配和调度等问题,我们尝试最大化或最小化具有决策变量和约束数量的线......
  • Python骚操作!实现自动制作各种证件照,这不比PS快多了!
    事情是这样的晚上我正在聚精会神写代码(打游戏~)突然,收到学妹给我发来的消息还有一张自拍照而且是可以放在结婚证上的那种哦就是之前帮过她几次忙......
  • 拓端数据|r语言代写二元期权barrier option实现案例
    Double-no-touch(DNT)选项是二元期权,在到期时支付固定金额的现金。我们将展示两种不同的方式来定价包含两种不同定价方法的DNT。   首先,我们将尝试使用正常参数,看看收敛速......
  • Python中使用中文
    python的中文问题一直是困扰新手的头疼问题,这篇文章将给你详细地讲解一下这方面的知识。当然,几乎可以确定的是,在将来的版本中,python会彻底解决此问题,不用我们这么麻烦了。......
  • python代码批量压缩图片
    python代码批量压缩图片以下代码用于批量压缩png/jpg格式的图片文件,遇到报错就使用pip大法安装一下对应的类库就可以了dynamic_quality.pyimportPIL.Imagefrommathi......
  • python小练习
    目录Excel操作练习1Excel操作练习1新建工作簿新建多个sheet页面写入单元格内容保存工作簿到指定文件夹#!/usr/bin/envpython3importopenpyxldata=op......
  • [oeasy]python0013_ASCII码表_英文字符编码_键盘字符
    ASCII码表回忆上次内容​ord(c)​​和​​chr(i)​这是俩函数这俩函数是一对,相反相成的⚖️​​ord​​通过​​字符​​找到对应的​​数字​​​​chr​​通过​​......
  • 05python字符串
    这一篇文章主要介绍python字符串相关知识。单引号字符串及对单引号的转义字符串(String)就是一段文本,几乎在所有的Python程序中都有字符串的身影。字符串可以用单引号表......
  • Python函数与类
    某农带专业Python实验二公式计算题目描述:编写三个函数fz(n),fm(n),sum_(n)分别计算下列公式的分子和,分母积以及公式总和值。\[s=1+\frac{1+2}{1\times2}+\frac{1+......