您现在的位置是:首页 > 正文

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

2024-01-30 22:11:15阅读 0

策略

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

一种可能的操作方式是,当股票配对价差正向偏离时,因预计价差在未来会恢复,做空价格走势强势的股票同时做多价格走势较弱的股票。当价差收敛到长期正常水平时,即走势较强的股票价格回落,或者走势较弱的股票价格转强,平仓赚取价差收敛时的收益;当股票配对价差负向偏离时反向建仓,在价差增冋复至正常范围时再平仓,同样也可赚取收益。


股票对的选择

1.行业内匹配,选取同行业规模相近的股票进行配对,比如将银行业的上市公司股票进行两

两配对。

2.产业链配对,根据产业链,将同一条产业链內的上市公司股票进行配对,例如将某一手机

生产公司与其上游于机摄像头生产公司进行配对。

3.财务管理配对,从基本面分析的角度切入,挑选上市公司市盈率、负债率、产品种类等相

近的股票进行配对,进而减少一些不必要的搜索成本。

4、指数配对:沪深 300 指数、上证 50 指数、创业板指数的成分股票也常常被业界和学者作为配对

5、股票池配对:同一公司发行的不同种类股票或者不同市场发行的股票进行配对也是一种配对选择。

最小距离法配对

原理

配对交易的一个选择标准在于寻找历史价差稳定的股票对。为了客观衡量两只股票价格的距离,首先需要对股票价格进行标准化处理。

假设有股票X和股票Y,则我们可以计算二者之间的标准化价格偏差之平方和 SSDx,y:

e68584254d17f27178430600035f3ac8.png

而其中的 p^Xt,是t天内的累积收益率,计算公式为(当天收益率+1).cumprod() ,其中cumprod是累乘函数。

代码

#最小距离法股票配对交易

def SSD(priceX,priceY):
    if priceX is None or priceY is None:
        print('缺少价格序列.')
        
    returnX=(priceX-priceX.shift(1))/priceX.shift(1)[1:] # 计算 X 收益率
    returnY=(priceY-priceY.shift(1))/priceY.shift(1)[1:] # 计算 Y 收益率
    
    standardX=(returnX+1).cumprod() # 使用cumprod()函数累计求乘
    standardY=(returnY+1).cumprod()
    
    SSD=np.sum((standardX-standardY)**2) # 计算累计收益率偏差
    return(SSD) 
 
dis=SSD(df_s1['close'],df_s2['close'])  注:df_s1['close']是股票1的收盘价序列;df_s2同理。
print(dis)

协整模型原理

选择配对交易股票对另一种常用的方法是选择两只股票价格序列存在协整关系的股票对。要

判断两只股票的历史价格是否具有协整关系,需要先检验两只股票的对数价格序列是否是一

阶单整序列,或者说先检验两只股票的收益率序列{r}是否是平稳性时间序列。

arch 包的 ADF()函数可以使用 ADF 单位根方法对序列的平稳性进行检验,ADF 单位根检验的原假设是“序列存在单位根”,如果我们不能拒绝原假设,则说明我们检查的序列可能存在单位根,序列是非平稳的;如果我们拒绝原假设,则序列不存在单位根,即序列是平稳性时间序列。

配对交易策略实现步骤

Python 实现配对交易策略大致有如下 4 个步骤。

(1) 在形成期内,将 A 和 B 两只股票的对数价格进行协整检验

(2) 找出配对比例 beta 和配对价羞,计算价差的平均值和标准差。

(3) 在交易期內,设定 u±1.5σ和 u±0.2σ为开仓与平仓的阈值,将 u±2σ视为协整关系可

能破裂强制平仓的阈值,具体交易规则如下:

● 当价差上穿 u+1.5σ时,做空配对股票,反向建仓(卖出 B 股票,同时买入 A 股票,A 与 B

股票资金比值为 beta;

● 当价差下穿 u+0.2σ之间时,做多配对股票,反向平仓;

配对交易策略思考

风险低:采用统计学原理进行套利,和大盘涨跌无关,在外部环境没有变化时基本上没有风

险,因此又称无风险套利。

交易机会少:配对股票的股票偏离情况往往很少,并且机会稍纵即逝,在量化投资越来越普

及的情况下靠人工难以捕捉到。

消息面影响大:重大新闻事件发生后配对关系往往发生反转或者解除,此时必须立即根据情况调整配对交易策略,否则产生严重亏损。

网站文章

  • 创建型设计模式(6种)学习

    创建型设计模式(6种)学习

    Linux服务器开发/后台架构师知识体系整理 创建型设计模式有: 共6种 简单工厂模式(Simple Factory) 工厂方法模式(Factory Method) 抽象工厂模式(Abstract F...

    2024-01-30 22:10:46
  • JS中的遍历循环

    JS中的遍历循环

    Object.keys(obj):参数:要返回其枚举自身属性的对象。返回值:一个表示给定对象的所有可枚举属性的数组。对象:返回可枚举的属性数组。var obj = { 'name' : 'zhangsan', 'age' : '18', 'language' : [1,[2,3],[4,5]], "fun":function(str){ ...

    2024-01-30 22:10:38
  • Dubbo 远程调用过程

    Dubbo 远程调用过程

    Dubbo远程调用过程。

    2024-01-30 22:10:32
  • Ubuntu中apache2(httpd)安装、httpd实现网页图片的挂载

    Ubuntu中apache2(httpd)安装、httpd实现网页图片的挂载

    一、apache2软件包安装和开启 (1)apache2安装 sudo apt-get update sudo apt-get install apache2 (2)apache2的开启 命令:sud...

    2024-01-30 22:10:25
  • Window.open()方法参数详解

    1, 最基本的弹出窗口代码 window.open('page.html');2, 经过设置后的弹出窗口 window.open('page.html', 'n...

    2024-01-30 22:09:56
  • vsinoplayer statemachine

    vsinoplayer statemachine

    2024-01-30 22:09:49
  • 数据业务建立流程之发起网络连接过程(原)

    数据业务建立流程之发起网络连接过程(原)

    经过前面这些过程,网络连接所需要的条件就全部准备就绪,接下来就是等待网络接入。 我们把网络接入过程简单分为三个阶段: 触发阶段 ----该阶段是由各种不同事件触发的,比如SIM载入完毕、PS域Attach成功、通话结束、APN改变等,该阶段的最终都是要调用setupDataOnConnectableApns()方法;

    2024-01-30 22:09:44
  • Spark RDD的分区规则详解

    Spark RDD的分区规则详解

    Spark RDD的分区规则

    2024-01-30 22:09:14
  • cocos2dx 之CCHttpRequest

    这里主要做的是cocos2dx里面的http联网类,主要是介绍get和post,我们主要是通过点击按钮来实现,话不多说,因为代码注释很详细,直接上代码: init里面: get方法: CCLabelT...

    2024-01-30 22:09:07
  • 批量插入数据之nologging

    批量插入数据之nologging

    Oracle nologging tips The nologging option is a great way to speed-up inserts and index creation. It bypasses the writing of the redo log, significantly improving performance. However, this ap

    2024-01-30 22:09:00