【Python】使用tushare完成配对交易策略

article/2025/11/5 1:52:24

tushare ID:495023

 分析对象:茅台&五粮液,获取上述股票2020/1/1到2021/12/31的股票数据,
1.可视化价差spread、z-score
2.产生并可视化交易信号:上升交易信号、下降交易信号
3.计算策略的累计效益,可视化为折线图

代码如下:

1,端口准备

#端口准备
import tushare as ts
pro=ts.pro_api()
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import numpy as np
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

2,使用tushare获取数据,注意:为方便做图要将交易日期设置为index并将index转化为datetime格式

#茅台日线数据
df = pro.daily(ts_code='600519.SH', start_date='20200101', end_date='20211231')
df = df.sort_values(by = 'trade_date')
df['trade_date'] = pd.to_datetime(df['trade_date'])
df.set_index("trade_date", inplace=True)#五粮液日线数据
df2 = pro.daily(ts_code='000858.SZ', start_date='20200101', end_date='20211231')
df2 = df2.sort_values(by = 'trade_date')
df2['trade_date'] = pd.to_datetime(df2['trade_date'])
df2.set_index("trade_date", inplace=True)

3,

#收盘价折线图对比
ax1=df.plot(y='close',label='茅台',figsize=(10,5)) # 茅台收盘价折线
df2.plot(ax=ax1,y='close',label='五粮液') # 五粮液收盘价折线
plt.title('收盘价对比')
plt.xlabel('日期')
plt.ylabel('收盘价')
plt.grid(True)

4,

#价差及其均值
df['spread']=df['close']-df2['close']
df['spread'].plot(figsize=(10,5))
plt.title('茅台与五粮液价差')
plt.xlabel('日期')
plt.ylabel('价差')
plt.axhline(df['spread'].mean())
plt.grid(True)

 

 5,z-score 是对时间序列偏离其均值程度的衡量,表示时间序列偏离了其均值多少倍的标 准差。一个序列在时间 t 的 z-score,是它在时间 t 的值,减去序列的均值,再除以序列的 标准差后得到的值。

#对价差进行标准化
df['zscore']=(df['spread']-np.mean(df['spread']))/np.std(df['spread'])
df['zscore'].plot(figsize=(10,5))
plt.title('茅台与五粮液价差Z值')
plt.xlabel('日期')
plt.ylabel('Z值')
plt.grid(True)

6,

#茅台交易信号
df['position1'] = np.where(df['zscore']>1,-1,np.nan) #大于1,做多
df['position1'] = np.where(df['zscore']<-1,1,df['position1']) #小于-1,做空
df['position1'] = np.where(abs(df['zscore'])<0.5,0,df['position1']) #在0.5范围区间,平仓
df['position1'] = df['position1'].ffill().fillna(0)
df['position1'].plot(ylim=[-1.1,1.1],title='茅台买卖信号',xlabel='日期',figsize=(10,5))

 

#五粮液交易信号
df['position2'] = -np.sign(df['position1']) #与茅台相反操作
df['position2'].plot(ylim=[-1.1,1.1],title='五粮液买卖信号',xlabel='日期',figsize=(10,5))

 

7,

#策略的累计收益率
df['茅台']=(np.log(df['close']/df['close'].shift(1))).fillna(0)
df['五粮液']=(np.log(df2['close']/df2['close'].shift(1))).fillna(0)
df['配对策略']=0.5*(df['position1'].shift(1)*df['茅台'])+0.5*(df['position2'].shift(1)*df['五粮液'])
df[['茅台','五粮液','配对策略']].dropna().cumsum().apply(np.exp).plot(figsize=(10,5))
plt.title('配对策略累计收益率')
plt.xlabel('日期')
plt.ylabel('累计收益率')
plt.grid(True)

 

 


http://chatgpt.dhexx.cn/article/kEevuWwT.shtml

相关文章

量化投资实战(二)之配对交易策略---最短距离法

点赞、关注再看&#xff0c;养成良好习惯 Life is short, U need Python 初学量化投资实战&#xff0c;[快来点我吧] 配对交易策略实战—最短距离法 基本流程 配对组合 --> 计算价差 --> 决策标准 --> 确定头寸 --> 平仓获利 一、股票对的选取 读取数据 import p…

配对交易(一):期货品种相关性研究

配对交易定义 配对交易是一种基于数学分析交易策略&#xff0c;其盈利模式是通过两只证券的差价&#xff08;spread&#xff09;来获取&#xff0c;理论上可以做到和大盘走势完全无关。但其本质上是一种统计套利&#xff0c;也具有一定的风险性。 基本原理 配对交易的基本原理…

高频交易——当期货配对交易加入了止损

高频交易——当期货配对交易加入了止损 idea数据介绍配对交易寻找配对标的相关性协整性 策略构建回测结果 总结核心代码示例 idea 目前在配对交易的识别上比较有代表性的是根据二者的相关性来判断&#xff0c;也有根据标的之间协整性来进行选择的&#xff0c;在这里我们结合两…

量化投资实战(三)之配对交易策略---协整法

点赞、关注再看&#xff0c;养成良好习惯 Life is short, U need Python 初学量化投资实战&#xff0c;[快来点我吧] 配对交易策略实战—协整法 基本流程 配对组合 --> 计算价差 --> 决策标准 --> 确定头寸 --> 平仓获利 案例描述 本案例以上证50股票数据为对象、…

原创 | 以ETF为例——配对交易Python源码全公开

配对交易是指八十年代中期华尔街著名投行Morgan Stanley的数量交易员Nunzio Tartaglia成立的一个数量分析团队提出的一种市场中性投资策略。 在实际操作中&#xff0c;其执行过程可以简单地描述为&#xff1a;投资者首先选择相互匹配的两个资产&#xff0c;当配对资产价格差异增…

配对交易之统计套利配对:协整(cointegration)

Engle和Granger观察到了一个相当有趣的现象。尽管两个时间序列是非平稳的&#xff0c;但在某些情况下&#xff0c;两者的特定线性组合实际上是平稳的&#xff1b;也就是说&#xff0c;这两个序列在某种程度上是步调一致的。Engle和Granger创造了“协整”&#xff08;cointegrat…

【量化】相关系数进行配对交易

根据统计数据&#xff0c;对价差进行买卖&#xff0c;而不去做股票本身趋势的预测&#xff0c;是否能做到旱涝保收呢。下面是利用股票对之间的相关系数来进行配对交易的研究。 1&#xff0c;首先想到利用统计套利&#xff0c;可能会想到两只股票的相关系数是否会让两只股票的走…

USDCNY--USDCNH 配对交易___境内及离岸人民币即期的协整关系及配对交易策略分析

由于中国没有实现资本项下的可自由兑换&#xff0c;目前人民币的外汇交易存在境内及境外两个市场。在境内交易的CNY和境外交易的CNH&#xff0c;本质都是人民币&#xff0c;从这个角度上看&#xff0c;两者具有高度相关性。但是由于两者的市场形态、监管细节、参与机构、流动性…

沪深300配对交易

目录 获取数据相关系数三级目录协整检验聚类算法进一步筛选回测 获取数据 通过pandas_datareader来获取沪深300的股票数据&#xff0c;为此&#xff0c;先从网上爬虫得到沪深300的股票名单 import os import pandas as pd import pandas_datareader as web import pickle imp…

配对交易策略设计

可交易的一个关键要求是两个股票的对数价格序列之间存在均衡关系。 而均衡关系由两个值描述&#xff1a;协整系数以及均衡值。一旦确定这两个值&#xff0c;它们就可以用来构建两种股票的对数价格的线性组合&#xff0c;即所谓的价差。配对交易是对价差均值回归特性的押注。当…

配对交易之统计套利配对:介绍

现在让我们来解释一下配对交易背后的想法。从估值角度来看&#xff0c;投资关心的问题是卖出高估值的证券&#xff0c;买入低估值的证券。然而&#xff0c;只有当我们也知道证券的真正价值时&#xff0c;才有可能确定证券被高估或低估。但是&#xff0c;这很难做到。配对交易试…

股票配对交易策略-最小距离法

策略 配对交易( Pairs Trading)为这种困境提供了一种既能避险又盈利的策略&#xff0c;其又被称之为价差交易或者统计套利交易&#xff0c;是一种风险小、收益较稳定的市场中性策略。一般的做法&#xff0c;是在市场中寻找两只历史价格走势有对冲效果的股票组成配对&#xff0c…

配对交易方法_COVID下的自适应配对交易,一种强化学习方法

配对交易方法 Abstract 抽象 This is one of the articles of A.I. Capital Management’s Research Article Series, with the intro article here. This one is about applying RL on market neutral strategies, specifically, optimizing a simple pair trading strategy …

一种拉风的交易策略——配对交易

在量化投资领域&#xff0c;既然严格的无风险套利机会少、收益率微薄&#xff0c;实际的执行过程中也不能完全消除风险。那么如果有一种选择&#xff0c;能够稍微放松100%无风险的要求&#xff0c;比如允许有5%的风险&#xff0c;但同时却能够让套利机会增加100%以上&#xff0…

基于协整理论的配对交易

基于协整理论的配对交易 前导知识协整协整与相关 配对交易策略思想策略实现 前导知识 协整 在实际生活中&#xff0c;大多数经济金融时间序列通常是非平稳的&#xff0c;如果用这些非平稳时间序列来建立回归模型&#xff0c;那么就会产生虚假回归&#xff0c;即所谓的“伪回归…

matlab配对交易回测,精品案例 | 经典投资策略之配对交易策略

原标题&#xff1a;精品案例 | 经典投资策略之配对交易策略 人不恋爱枉少年&#xff0c;在“全城热恋”的氛围下&#xff0c;股市也来凑热闹&#xff0c;配对交易策略油然而生。所谓“男女搭配&#xff0c;干活不累”&#xff0c;成双成对真的能虐死单身狗吗&#xff1f;配对交…

金融量化 — 配对交易策略 (Pair Trading)

1. 配对交易策略 1.1、引言 在量化投资领域&#xff0c;既然严格的无风险套利机会少、收益率微薄&#xff0c;实际的执行过程中也不能完全消除风险。那么如果有一种选择&#xff0c;能够稍微放松100%无风险的要求&#xff0c;比如允许有5%的风险&#xff0c;但同时却能够让套…

【量化笔记】配对交易

配对交易的步骤 1. 如何挑选进行配对的股票 2. 挑选好股票对以后&#xff0c;如何制定交易策略&#xff0c;开仓点如何设计 3. 开仓是&#xff0c;两只股票如何进行多空仓对比 股票对的选择 1. 行业内匹配 2. 产业链配对 3. 财务管理配对 最小距离法 配对交易需要对股…

配对交易——初识统计套利

配对交易是统计套利中的非常经典的策略。众所周知,A股市场无法卖空个股,所以中性化的配对交易策略并不能直接“拿来主义”。但这并不妨碍我们学习配对交易的思想,将卖空改成卖出,构造适合A股市场的策略。下面我们就开始学习吧~ 一、配对交易:统计套利的基石 配对交易是基…

配对交易策略

一、引言 在量化投资领域&#xff0c;既然严格的无风险套利机会少、收益率微薄&#xff0c;实际的执行过程中也不能完全消除风险。那么如果有一种选择&#xff0c;能够稍微放松100%无风险的要求&#xff0c;比如允许有5%的风险&#xff0c;但同时却能够让套利机会增加100%以上…