我本身在做非全日制研究生的作业,于是我把研究过程用到的代码开源了,供更多的金融和经济专业的同学借鉴。

事件研究法(EventStudy)用于评估某一事件的发生或信息的发布,是否会改变投资人的决策,进而影响股票价格或交易量的变化。事件研究法应用于金融领域,借助金融市场数据分析某一特定经济事件对该公司价值或市场产生的影响,即是否产生超常收益(AbnormalReturns)。其理论基础在于,如果市场是有效的,那么此事件的影响会迅速反映到资产的价格上。

在本章节中,采用前文描述的事件分析法分析浑水做空中概股事件发生后的一个月股价的影响。我将估计窗口设定为事件发生前60日,事件的窗口设为报告发布前的10日+事件后20日总共30日。考虑到浑水报告发布前,这些公司的股价就发生了异常波动,极有可能部分消息提前进入了市场,所以我将事件发生日前10日包括当日也纳入到事后检验。

建模采用的是单变量线性回归模型,因变量为个股当日涨跌幅,采用的自变量为市场指数(标普500)的当日涨跌幅。建模考虑的情况较少,建模效果并不尽如人意,姑且暂用这个方法初步模拟事件分析法的分析效果。

考虑到样本量较小,每个事件的校验样本少于100,校验方法采用了T校验,对每次事件发生过程中股价变化的显著性进行检验。

# coded by LY(伊玛目的门徒)
import pandas_datareader as pdr
import datetime# 获取公司
start=datetime.datetime(2021,6,1)
end= datetime.datetime(2022,6,1)
df = pdr.get_data_tiingo('BEKE', start,end,api_key='你的tlingo key')
#轴向转化函数  解决分组索引问题df1=df.stack(0)
df1=df1['BEKE'].unstack()#市场收益率Rm
# 获取标普五百
start=datetime.datetime(2019,1,1)
end= datetime.datetime(2022,4,1)dfzs = pdr.get_data_tiingo('SPY', start,end,api_key='你的tlingo key')#轴向转化函数  解决分组索引问题dfzs1=dfzs.stack(0)
dfzs1=dfzs1['SPY'].unstack()
#计算收益率
dfzs1['pct_chg'] = (dfzs1['adjClose'] - dfzs1['adjClose'].shift(1)) / dfzs1['adjClose'].shift(1)
df_index = dfzs1[['pct_chg']].copy()
df_index['trade_date'] = df_index.index#计算收益率
df1['return'] = (df1['adjClose'] - df1['adjClose'].shift(1)) / df1['adjClose'].shift(1)
#企业收益率Ri
d0 = df1[['return']].copy()
d0['trade_date'] = d0.index# 指数DF和公司DF合并
df_final = d0.merge(df_index, how='left',on='trade_date')# 避免第一天空值Nan影响建模
df_final.ix[0,'return']=0import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression #线性回归
import csv
import numpy as np#计算预期收益率
def get_OLS(X, y, pre_X):linear_m = LinearRegression().fit(X, y)r_2 = linear_m.score(X, y) #值越接近1拟合优度越好pre_y=linear_m.predict(X)Residual = sum((y - pre_y)**2)L_xx = len(X) * np.var(X)sigma = np.sqrt(Residual / (len(X)-2))t = linear_m.coef_ * np.sqrt(L_xx) / sigmat=round(float(t),4)print(f"构建模型,拟合优度为{round(r_2*100, 2)}%")print(f"Ri = {round(linear_m.intercept_,3)} + {round(linear_m.coef_[0],3)}Rm + e")if 1.65<=abs(t)<1.96:print(f'回归模型的t值为{t},回归系数在10%的置信水平下显著')elif 1.96<=abs(t)<2.58:print(f'回归模型的t值为{t},回归系数在5%的置信水平下显著')elif abs(t)>=2.58:print(f'回归模型的t值为{t},回归系数在1%的置信水平下显著')else:print(f'回归模型的t值为{t},回归系数不显著')return linear_m.predict(pre_X)#计算AR,CAR
def get_data(event):print("事件日为: ", event)#q,h = df_final[df_final['trade_date'] == event].index[0]-10, df_final[df_final['trade_date'] == event].index[0]+20 #事件窗口[-15,15]# 30天窗口期q,h = df_final[df_final['trade_date'] == event].index[0]-10, df_final[df_final['trade_date'] == event].index[0]+20 #事件窗口[-10,20]target = df_final.loc[q:h].copy()#estimate = df_final.loc[q-195:q-6].copy() #估计窗口[-210,-21]# 60天估计期estimate = df_final.loc[q-60:q].copy() #估计窗口[-210,-21]#print (estimate)#估计期  指数涨幅X = estimate[['pct_chg']] #估计期企业回报率y = estimate['return'] # 窗口期实际指数市场回报率predict_X = target[['pct_chg']]target['E(Rt)'] = get_OLS(X, y, predict_X) # #窗口期的指数涨幅企业预期收益率#企业异常收益率target['ARt'] = target['return']-target['E(Rt)'] #累计异常收益率 = 异常收益率在窗口期的求和target['CARt'] =  target['ARt'].cumsum() return target#绘制图像
def main(e):a = get_data(e)print(a)a.set_index('trade_date')[['ARt', 'CARt']].plot()#结果
events = ['2021-12-16']
for e in events:main(e)plt.rcParams['font.sans-serif'] = ['SimHei']  # 中文字体设置-黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
plt.title('IQ  CARt累计异常收益率,ARt单日异常收益率 ')
plt.savefig('.\爱奇艺.jpg',bbox_inches='tight')
​​​​​​​事件日为:  2021-12-16
构建模型,拟合优度为0.77%
Ri = -0.002 + 0.564Rm + e
回归模型的t值为0.6749,回归系数不显著

事件分析法python实现分析事件对股价的冲击相关推荐

  1. 数学建模——层次分析法Python代码

    数学建模--层次分析法Python代码 import numpy as np class AHP: """ 相关信息的传入和准备 """ d ...

  2. 【编译原理笔记05】语法分析:FIRST集和FOLLOW集的计算,[非]递归的预测分析法,预测分析中的错误处理

    本次笔记内容: 4-4 FIRST集和FOLLOW集 4-5 递归的预测分析法 4-6 非递归的预测分析法 4-7 预测分析法中的错误处理 本节课幻灯片,见于我的 GitHub 仓库:第5讲 语法分析 ...

  3. 4.2.5 预测分析法与预测分析表的构造

    4.2.5 预测分析法与预测分析表的构造 预测分析法也称为 LL ( 1 )分析法.这种分析法是确定的自上而下分析的另一种方法,采用这种方法进行语法分析要求描述语言的文法是 LL ( 1 )文法. 一 ...

  4. 编译原理 实验四 LR(0)分析法(LR0分析表的自动生成)

    写在前面 由于代码较长,csdn对文章总长度有字数限制,想只看完整代码的请移步另一篇博客. https://blog.csdn.net/qq_46640863/article/details/1257 ...

  5. 杜邦分析法、漏斗分析法和矩阵关联分析法

    数据分析工作涉及到很多的分析方法,比如说杜邦分析法.漏斗分析法以及矩阵关联分析法,这些方法都是能够帮助我们更好地进行数据分析工作.在这篇文章中我们就给大家介绍一下关于杜邦分析法.漏斗分析法和矩阵关联分 ...

  6. 编译原理 | 语法分析(LL(1)分析法/算符优先分析法OPG)学习笔记及例子详解

    语法分析(自顶向下 / 自底向上) 自顶向下 递归下降分析法 这种带回溯的自顶向下的分析方法实际上是一种穷举的不断试探的过程,分析效率极低,在实际的编译程序中极少使用. LL(1)分析法 又称预测分析 ...

  7. 编译原理学习笔记·语法分析(LL(1)分析法/算符优先分析法OPG)及例子详解

    语法分析(自顶向下/自底向上) 自顶向下 递归下降分析法 这种带回溯的自顶向下的分析方法实际上是一种穷举的不断试探的过程,分析效率极低,在实际的编译程序中极少使用. LL(1)分析法 又称预测分析法, ...

  8. 【AHP层次分析法python部分实现】

    提示:仅用到AHP层次分析法的部分功能因此只完成了python的部分实现 目录 前言 一.AHP是什么? 层次分析法的特点: 层次分析法的原理: 二.使用步骤 参考视频 前言 提示:这里可以添加本文要 ...

  9. python灰色关联度分析_灰色关联分析法 python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文2290字,预计阅读需10分钟: 关联分析(association anal ...

最新文章

  1. 深度学习原理与TensorFlow实践
  2. Windows下利用TortoiseSVN搭建本地SVN服务器
  3. 有关 Nintendo GameCube
  4. idea右键项目没有git 【解决方法】
  5. 在日常生活中,经常会遇到某些需求对文件名称进行修改,借助刚学过的文件操作,编写一个可以批量修改文件名的小程序。
  6. gstat | 空间插值(二)——克里金插值之普通克里金
  7. vb简单控制音量大小及静音的方法
  8. 联想服务器虚拟化解决方案,联想虚拟化解决方案
  9. 依次将10个数输入,要求打印出其中最大的数
  10. 2019 The Preliminary Contest for ICPC China Nanchang National Invitational
  11. 关于SQL时间类型的模糊查询
  12. 学生党蓝牙耳机避雷指南,五款比漫步者还实惠的蓝牙耳机推荐
  13. JDK官网下载历史版本
  14. 戴尔t系列服务器拆机,拆解:规整扎实条理清晰的戴尔T7600_联想ThinkCentre台式电脑_台式电脑评测-中关村在线...
  15. Flash游戏开发技术分析(下)
  16. Sublime 快捷键整理
  17. Python 之 PyCharm + selenium 163邮箱登录详解
  18. CG标准函数库——数学函数(GPU编程与CG语言之阳春白雪下里巴人)
  19. mysql乘法_mysql乘法
  20. 灿谷集团荣获“公益践行奖”

热门文章

  1. pycharm HfArgumentParser ArgumentParser 参数设置 以及Debug
  2. 熟练背诵的Babel7知识(新手建议熟练背诵)
  3. 京东天猫数据查询与分析:2023年厨电细分市场数据分析
  4. 【沃顿商学院学习笔记】商业基础——Financing:12 决策标准 Decision Criteria
  5. Android 接入小度在飞 iFLYOS sdk 编译出错 Supplied String module notation 'libs/iflyos-app-sdk.aar' isinvalid
  6. 二级指针在子函数中申请内存的两种方式
  7. 2023年全国最新会计专业技术资格精选真题及答案4
  8. 月入10k的软件测试学习之路
  9. Android10定位服务的开启状态判断和申请
  10. winfrom窗体, C#开源第三方控件库推荐~