协整套利的实现
发布:_wallstreetcat_ | 分类:会计库
关于本站
人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!
经管之家新媒体交易平台
提供"微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯"等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】
论文
- 毕业论文 | 写毕业论文
- 毕业论文 | 为毕业论文找思路
- 毕业论文 | 可以有时间好好写 ...
- 毕业论文 | 毕业论文如何选较 ...
- 毕业论文 | 毕业论文选题通过 ...
- 毕业论文 | 还有三人的毕业论 ...
- 毕业论文 | 毕业论文答辩过程 ...
- 毕业论文 | 本科毕业论文,wi ...
考研考博
- 考博 | 南大考博经济类资 ...
- 考博 | 考博英语10000词汇 ...
- 考博 | 如果复旦、南大这 ...
- 考博 | 有谁知道春招秋季 ...
- 考博 | 工作与考博?到底 ...
- 考博 | 考博应该如何选择 ...
- 考博 | 考博失败了
- 考博 | 考博考研英语作文 ...
留学
- 日本留学 | 在日本留学心得
- 日本留学 | 日本留学生活必需 ...
- 日本留学 | 【留学日本】2015 ...
- 日本留学 | 日本海外留学8年来 ...
- 日本留学 | 日本留学费用_日本 ...
- 日本留学 | 求在日本留学的师 ...
- 日本留学 | 日本留学的有没有 ...
- 日本留学 | 日本留学
TOP热门关键词
PairsTrading,即配对交易策略。其基本原理就是找出两只走势相关的股票。这两只股票的价格差距从长期来看在一个固定的水平内波动,如果价差暂时性的超过或低于这个水平,就买多价格偏低的股票,卖空价格偏高的股票。 ...
扫码加入统计交流群 |
在 Python 的 Statsmodels 包中,有直接用于协整关系检验的函数 coint,该函数包含于 statsmodels.tsa.stattools 中。
- import numpy as np
- import pandas as pd
- import statsmodels.api as sm
- import seaborn as sns
- def find_cointegrated_pairs(dataframe):
- # 得到DataFrame长度
- n = dataframe.shape[1]
- # 初始化p值矩阵
- pvalue_matrix = np.ones((n, n))
- # 抽取列的名称
- keys = dataframe.keys()
- # 初始化强协整组
- pairs = []
- # 对于每一个i
- for i in range(n):
- # 对于大于i的j
- for j in range(i+1, n):
- # 获取相应的两只股票的价格Series
- stock1 = dataframe[keys[i]]
- stock2 = dataframe[keys[j]]
- # 分析它们的协整关系
- result = sm.tsa.stattools.coint(stock1, stock2)
- # 取出并记录p值
- pvalue = result[1]
- pvalue_matrix[i, j] = pvalue
- # 如果p值小于0.05
- if pvalue < 0.05:
- # 记录股票对和相应的p值
- pairs.append((keys[i], keys[j], pvalue))
- # 返回结果
- return pvalue_matrix, pairs
- instruments =D.instruments()[0:20]
- # 确定起始时间
- start_date = '2015-01-01'
- # 确定结束时间
- end_date = '2017-02-18'
- # 获取股票总市值数据,返回DataFrame数据格式
- prices_temp = D.history_data(instruments,start_date,end_date,
- fields=['close'] )
- prices_df=pd.pivot_table(prices_temp, values='close', index=['date'], columns=['instrument'])
- pvalues, pairs = find_cointegrated_pairs(prices_df)
- #画协整检验热度图,输出pvalue < 0.05的股票对
- #sns.heatmap(1-pvalues, xticklabels=instruments, yticklabels=instruments, cmap='RdYlGn_r', mask = (pvalues == 1))
- #print(pairs)
- df = pd.DataFrame(pairs, index=range(0,len(pairs)), columns=list(['Name1','Name2','pvalue']))
- #pvalue越小表示相关性越大,按pvalue升序排名就是获取相关性从大到小的股票对
- df.sort_values(by='pvalue')
我们选择协整关系最强的一组股票对,绘制走势图并进行最小二乘回归,获取回归系数。
- x = prices_df["000012.SZA"]
- y = prices_df["000017.SZA"]
- plt=x.plot();
- plt.plot(y);
- X = sm.add_constant(x)
- result = (sm.OLS(y,X)).fit()
- print(result.summary())
- plt.legend(["000012.SZA", "000017.SZA"],loc='best')
根据获得的回归系数,构造回归方程 y=const+coef*x 也就得到y-coef*x这个价差平稳序列,画出这个平稳序列可以看出,虽然价差上下波动,但都会回归中间的均值。
接着我们构造z-score函数,计算时间序列偏离了其均值多少倍的标准差
- def zscore(series):
- return (series - series.mean()) / np.std(series)
- XZ=zscore(0.2048*x-y)
- plt=XZ.plot()
- plt.axhline(1.0, color="red", linecopycode($('code_jVg'));">复制代码
可以看出此序列基本在-1到1之间波动,当两这个序列的 z-score序列 突破 1 或者 −1 时,说明两支股票的价差脱离了统计概念中的合理区间,如果它们的协整关系能够保持,那么它们的价差应该收敛
结合上图,当 z-score 突破上方红线时,说明y-coef*x高估,推测此差值应在未来降低到合理的波动区间,因此可以卖空1份的y标的,买入coef份的x标的,等待y-coef*x回归到0附近时平仓获利;反之,当 z-score 突破下方绿线时,说明y-coef*x低估,推测此差值应在未来上升加到合理的波动区间,因此可以买入1份的y标的,卖空coef份的x标的,等待y-coef*x回归到0附近时平仓获利。
「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
您可能感兴趣的文章
本站推荐的文章
- 哲学名言 | 【独家发布】经典哲学名言
- 哲学书籍 | 求推荐一本讲人生目标的哲学书籍 ...
- 哲学书籍 | 经济人,开拓你逻辑思维的哲学书 ...
- 哲学书籍 | 哲学书籍
- 哲学书籍 | 哲学书籍
- 哲学书籍 | 哲学书籍
- 哲学书籍 | 经典的哲学书籍
- 哲学书籍 | 发22本经典的经济学及哲学书籍《 ...
人气文章
1.凡人大经济论坛-经管之家转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。