配对(套利)交易之一,筛选符合配对规则的股

2024-06-05 10:48

本文主要是介绍配对(套利)交易之一,筛选符合配对规则的股,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在进行配对交易之前,需要寻找高相关性标的,二者符合如下三种模式均可以通过做多/做空组合实现套利(其本质为均值回归,或者是误差回归)

y=x+e

y=ax+e

y=ax+b+e

其中,e是正态随机误差项,a,b都是常数项,其实以上三个等式都可以用第三个等式表示,之所以分别列出,是由于目前所见到的大部分策略,其分析模块是没问题的,使用相关性和协整关系判断,但在策略构造过程中,其实只支持第一种情况(也是只是就做多1份标的,同时做空1份标的),这样会使套利效果大打折扣.

发掘高相关性的股票(期货)对,主要2方法,相关和协整,那个效果好一些,本篇文章会进行比对


# 读取数据
all_data = pd.read_csv('./single/data/rq_getprice_000300.XSHG_200901_201212_data.csv')
all_data = all_data.fillna(method='bfill').fillna(method='ffill')
all_data = all_data.dropna(axis=1)
all_data.rename(columns={'Unnamed: 0': 'date'}, inplace=True)
all_data = all_data.set_index('date')
all_data = all_data[all_data.index > '2011-01-01']
pp.pprint('all_data')
pp.pprint(all_data.head())# 方法1,相关性法
# 计算想关性
corr_df = all_data.corr()
corr_df.loc[:, :] = np.triu(corr_df, 1)
column_list = corr_df.columns.values
corr_pair_list = [(column_list[i], column_list[j], corr_df.values[i, j]) for i in range(0, corr_df.shape[0]) for j inrange(0, corr_df.shape[0]) if abs(corr_df.values[i, j]) > 0.95]
pp.pprint(corr_pair_list)
# 想关性TOP5
top5 = pd.Series([k for i, j, k in corr_pair_list]).apply(abs).sort_values(ascending=False)[:5]
corr_pair_list = [(i, j, k) for i, j, k in corr_pair_list if abs(k) >= top5.iloc[-1]]
pp.pprint(corr_pair_list)

基于相关系数最高top5筛选出的股票对

计算diff,均值,方差和得到上下界,可视化

使用协整关系筛选套利股票对(这部分代码替换上部分代码中相关性计算排序部分即可)

注意:由于协整关系计算非常慢,如果hs300,则需要计算2-2关系300*300/2=45000次计算,太费时,故用相关系数计算top30,在计算协整关系.

# 方法2,pvalue法(相关性协助)
# 获得强协整性股票对(由于协整计算较慢,所以计算前先取得top1/2的相关性关系,在计算协整,减少计算量)
corr_df = all_data.corr()
corr_df.loc[:, :] = np.triu(corr_df, 1)
median = pd.Series(corr_df.values.flatten()).apply(abs).sort_values(ascending=False).values[30]
column_list = corr_df.columns.values
corr_pair_list = [(column_list[i], column_list[j], corr_df.values[i, j]) for i in range(0, corr_df.shape[0]) for j inrange(0, corr_df.shape[0]) if abs(corr_df.values[i, j]) > median]
pp.pprint(corr_pair_list)coint_pvalue_list = list()
for i, j, k in corr_pair_list:coint_pvalue_list.append((i, j, sm.tsa.stattools.coint(all_data[i], all_data[j])[1]))
# 取得p值最小的top5
top5 = pd.Series([k for i, j, k in coint_pvalue_list]).sort_values()[:5]
coint_pvalue_list = [(i, j, k) for i, j, k in coint_pvalue_list if k <= top5.iloc[-1]]
pp.pprint(coint_pvalue_list)
corr_pair_list = coint_pvalue_list

筛选出的股票对

价差diff和上下界

整体看上面结果都很不错,基本上误差都分布在mean+/- 1*std,只要价格有回归趋势,就可以通过价买入组合高价卖出组合进行套利.并且可以屏蔽系统性风险(要求持有期二者协整关系依然保持)

二者比较的化,更倾向于协整关系,留意到协整关系最后得到diff其实更为"杂乱",更符合随机分布,而相关关系得到的残差diff内部依然存在弱的趋势倾向.

 

参考:

统计套利(一)利用相关系数进行配对交易
https://www.ricequant.com/community/topic/2039/
统计套利(二),利用协整关系进行配对交易
https://www.ricequant.com/community/topic/2053/
统计套利(三)自动寻找协整股票对
https://www.ricequant.com/community/topic/2408/#share-source-code_content_13561_1278376

配对交易(Paper Version)
https://www.ricequant.com/community/topic/51
配对交易
https://www.ricequant.com/community/topic/849/%E9%85%8D%E5%AF%B9%E4%BA%A4%E6%98%93/3
统计套利 配对交易 第二集
https://uqer.io/v3/community/share/582b2431228e5b9c85a59585

这篇关于配对(套利)交易之一,筛选符合配对规则的股的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1032845

相关文章

Python之变量命名规则详解

《Python之变量命名规则详解》Python变量命名需遵守语法规范(字母开头、不使用关键字),遵循三要(自解释、明确功能)和三不要(避免缩写、语法错误、滥用下划线)原则,确保代码易读易维护... 目录1. 硬性规则2. “三要” 原则2.1. 要体现变量的 “实际作用”,拒绝 “无意义命名”2.2. 要让

深入浅出Java中的Happens-Before核心规则

《深入浅出Java中的Happens-Before核心规则》本文解析Java内存模型中的Happens-Before原则,解释其定义、核心规则及实际应用,帮助理解多线程可见性与有序性问题,掌握并发编程... 目录前言一、Happens-Before是什么?为什么需要它?1.1 从一个问题说起1.2 Haht

Python Excel 通用筛选函数的实现

《PythonExcel通用筛选函数的实现》本文主要介绍了PythonExcel通用筛选函数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录案例目的示例数据假定数据来源是字典优化:通用CSV数据处理函数使用说明使用示例注意事项案例目的第一

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

C++作用域和标识符查找规则详解

《C++作用域和标识符查找规则详解》在C++中,作用域(Scope)和标识符查找(IdentifierLookup)是理解代码行为的重要概念,本文将详细介绍这些规则,并通过实例来说明它们的工作原理,需... 目录作用域标识符查找规则1. 普通查找(Ordinary Lookup)2. 限定查找(Qualif

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

Nginx路由匹配规则及优先级详解

《Nginx路由匹配规则及优先级详解》Nginx作为一个高性能的Web服务器和反向代理服务器,广泛用于负载均衡、请求转发等场景,在配置Nginx时,路由匹配规则是非常重要的概念,本文将详细介绍Ngin... 目录引言一、 Nginx的路由匹配规则概述二、 Nginx的路由匹配规则类型2.1 精确匹配(=)2

Nginx location匹配模式与规则详解

《Nginxlocation匹配模式与规则详解》:本文主要介绍Nginxlocation匹配模式与规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大

详解nginx 中location和 proxy_pass的匹配规则

《详解nginx中location和proxy_pass的匹配规则》location是Nginx中用来匹配客户端请求URI的指令,决定如何处理特定路径的请求,它定义了请求的路由规则,后续的配置(如... 目录location 的作用语法示例:location /www.chinasem.cntestproxy