查看原文
其他

【量化】基于时变对冲比率的商品期货Pairs Trading策略

2017-04-02 刘琉球 R语言中文社区


· 本文的主体完成于15年12月前后,作为实习期间的工作之一,记录了自己从理工科学术到量化投资的一次经历。目前计划将期间所做有意思的内容逐一整理出来。感谢期间给予过帮助的张博士,大黄,峰哥,野哥,婷婷姐,翟哥,宜盛等朋友们。



摘要  All models are wrong but some are useful (E.P. Box). 所有的模型在假定前提下都是有效的,但往往实际情况不满足前提假设,导致模型失效。PairsTrading「配对交易」的最重要的前提之一是「价差平稳性」,而实际配对序列之间的价差不满足这一前提,导致经典配对交易策略效果不佳。对此,提出一种交易框架:基于时变Hedge Ratio「对冲比率」的配对交易策略。该策略通过对配对序列进行滑动线性回归,得到特定时间窗下的时变回归系数,即对冲比率。实际交易中,基于回归残差生成交易信号,并按对冲比率进行动态资金配置。由于滑动回归下的残差显著满足均值平稳条件,故对其进行配对交易原理上优于基于单纯价差的配对策略。基于此策略,对期货市场16对跨品种商品期货的15分钟级数据进行实证研究。


一、策略简介

Pairs Trading「配对交易」,简言之,即对高相关两类交易品种构造其相对价值指标,对该指标进行低买高卖。该策略有效的重要前提是:构造的相对价值指标应当平稳(至少满足均值平稳)。经典的配对交易策略所构造的相对价值指标即价差比价。这两种指标的优势在于:一、构造简单;二、与配对策略下的组合收益率有直接联系。因此对其进行低买高卖操作可以带来持续的预期收益。然而,对于部分高相关品种,如跨品种商品期货,其价差或比价并不满足均值平稳,此情况下经典配对交易策略容易失效。

针对配对品种价差不平稳的问题,提出基于时变对冲比率的配对交易策略,其核心是:构造配对序列之间平稳且有效的相对价值指标。这一核心有两层含义:1、平稳:构造的相对价值指标要平稳;2、有效:构造的相对价值指标要和配对策略下的投资组合收益率产生直接联系,即对该指标进行低买高卖等价于组合有正收益。其中,关于策略核心的第二点应格外关注。(例如,对配对交易品种的价差进行去移动均值的平稳化亦能得到平稳序列,但对该序列进行配对交易无法持续得到正收益,因为该平稳序列和配对收益率没有联系。)

对配对对数序列进行滑动线性回归,回归系数即Hedge Ratio「对冲比率」,得到的回归残差作为相对价值可以近似满足配对策略平稳和有效的前提:首先时变回归系数可以调和回归残差的趋势,得到近似均值平稳的残差;其次,由于对原价格序列做了对数处理,回归残差直接同组合对数收益率相关:残差回归于均值,等价于正的组合对数收益率,反之亦然。此外关于残差的计算方式,还有两点需要注意:1、对原序列做对数处理有助于一定程度上消除异方差性,残差近似满足方差平稳。蒙特卡洛模拟试验验证了对均值方差平稳的残差进行配对交易,能够得到理想的回测结果。2、采用无截距项线性回归,零截距保证了按此回归系数进行资金配置下的组合收益率同残差状态直接相关。

交易信号方面,这里给出了4种基本交易思路:

  • 简单买入卖出;

  • 买入卖出+适时止盈;

  • 买入卖出+及时止损;

  • 买入卖出+及时止损+适时止盈。

对于操作点位的确定,给出2种确定思路:

  • 基于时变标准差; 

  • 基于时变分位数。

标准差的优点是构造简单,但当残差分布不对称时,其参数值往往不对称;分位数的优点是剔除了分布偏态性问题,但缺点是在数据的外延方面能力不够(例如empirical 分布)。最后,通过生成的信号,并结合对冲比率确定的资金配比,计算配对组合收益率。

最后,基于时变对冲比率的配对交易策略框架大致如下:

1.  对数序列时变线性回归(计算残差);

2.  基于残差状态择时出入场(生成交易信号) ;

3.  按对冲比率计算资金配比,结合信号(方向)、资金配比(量)进行交易;

4.  评价投资策略执行效果(回测)。


二、 实证研究

选取中国商品期货市场16对跨品种商品期货15分钟级序列:

  • 螺纹钢-铁矿石

  • 焦炭-螺纹钢

  • 焦炭-动力煤

  • 焦煤-焦炭

  • 焦煤-动力煤

  • 塑料-PP

  • 塑料-PTA

  • 豆粕-菜粕

  • PTA-PP

  • 豆油-棕榈油

  • 豆油-菜籽油

  • 沪铝-沪锌

  • 黄金-白银、

  • 沪铜-沪铝

  • 沪铜-沪锌

  • TA-甲醛

对其进行基于时变对冲比率的配对交易研究,采用的信号生成策略为简单买入卖出,交易点位基于最大化收益率的标准差确定。

模型的基本参数有:

  • 滑动回归时的时间窗长度n
    n是调和对冲比变化率和残差平稳性强弱的变量,n越大,对冲比率越稳定,但残差变化越不平稳;反之则相反。在配对交易中,对残差平稳性的要求更高,这里暂定n=50。关于n的优化,可做后续研究。

  • 计算时变标准差/分位数时的时间窗长度m
    m需结合残差的异方差性具体对待,这里暂定m等于数据量长度的一半。此外,提出一个构想:可用GRACH模型对残差方差进行模拟,确定出入场点位,以取代计算时变标准差的方式。 

  • 上下点位的确定,即出/入场对应的标准差的倍数。
    按收益率最大化的目标对这两个参数进行优化,见下文。 

  • 交易费率。
    暂定为双边万分之5。

2.1 计算残差

n=50,对16对序列进行时变线性回归,得到的残差如下图(按每行从左至右依次为:螺纹钢-铁矿石、焦炭-螺纹钢、焦炭-动力煤、焦煤-焦炭、焦煤-动力煤、塑料-PP、塑料-PTA、豆粕-菜粕、PTA-PP、豆油-棕榈油、豆油-菜籽油、沪铝-沪锌、黄金-白银、沪铜-沪铝、沪铜-沪锌、TA-甲醛,下同):

由上图,时变回归后的残差基本均值平稳,但方差普遍不平稳,这种异方差性会对基于信号交易的组合收益率产生负影响,但影响的程度是否会覆盖掉正收益,需要回测来说明。

2.2 点位优化

残差计算后,需要依据其高低状态生成买卖交易信号。但究竟选择几倍的标准差作为买卖的点位,不同的配对品种会有不同的取值。这里对所有16种残差的买、卖点位进行优化,买卖点位的优化范围均从0.1倍标准差到4倍标准差(间隔0.1个标准差)。计算各自参数对下的年化收益率,绘制收益率关于两个参数(买卖点对应的标准差倍数)热区图。热区图显示,不同配对品种的收益率随交易点位的分布不尽相同。

2.3 模型回测

从参数组合中选择收益率最高的组合作为参数率定值,带入到模型中进行回测。下图为优化参数后的的累积收益率(交易费率为双边万分之5),以及单独持有的累积收益率。图后附上配对交易策略下的平均年化收益率(mean.return.auual),夏普比率(sharpe.ratio.annual)和最大回撤率(max.drawdown.ratio)。

##                     Performance Stats ## mean.return.auual   0.2484421         ## sharpe.ratio.annual 2.888583         ## max.drawdown.ratio  -2.151147


##                     Performance Stats ## mean.return.auual   0.1402238         ## sharpe.ratio.annual 1.831682         ## max.drawdown.ratio  -9.063367

##                     Performance Stats ## mean.return.auual   0.1385737         ## sharpe.ratio.annual 1.380983         ## max.drawdown.ratio  -4.370739

##                     Performance Stats ## mean.return.auual   0.1415822         ## sharpe.ratio.annual 1.69594           ## max.drawdown.ratio  -4.55652


##                     Performance Stats ## mean.return.auual   0.389784         ## sharpe.ratio.annual 3.561083         ## max.drawdown.ratio  -3.37819

##                     Performance Stats ## mean.return.auual   0.09757302       ## sharpe.ratio.annual 1.804907         ## max.drawdown.ratio  -3.230498

##                     Performance Stats ## mean.return.auual   0.1407356         ## sharpe.ratio.annual 1.657381         ## max.drawdown.ratio  -11.32664

##                     Performance Stats ## mean.return.auual   0.3405279         ## sharpe.ratio.annual 3.360235         ## max.drawdown.ratio  -9.873105

##                     Performance Stats ## mean.return.auual   0.415171         ## sharpe.ratio.annual 3.844562         ## max.drawdown.ratio  -5.674689

##                     Performance Stats ## mean.return.auual   0.03990692       ## sharpe.ratio.annual 0.9007962         ## max.drawdown.ratio  -9.002051

##                     Performance Stats ## mean.return.auual   0.008162152       ## sharpe.ratio.annual 0.1623537         ## max.drawdown.ratio  -13.19136

##                     Performance Stats ## mean.return.auual   0.04151384       ## sharpe.ratio.annual 0.7991898         ## max.drawdown.ratio  -7.121921


##                     Performance Stats ## mean.return.auual   0.1133573         ## sharpe.ratio.annual 1.884051         ## max.drawdown.ratio  -4.407823


##                     Performance Stats ## mean.return.auual   0.03099891       ## sharpe.ratio.annual 0.410037         ## max.drawdown.ratio  -16.54226


##                     Performance Stats ## mean.return.auual   0.07607663       ## sharpe.ratio.annual 1.358077         ## max.drawdown.ratio  -4.947832


##                     Performance Stats ## mean.return.auual   0.1178833         ## sharpe.ratio.annual 0.9843           ## max.drawdown.ratio  -12.13925

三、小结

  • 16个实证结果中年化收益超10%且夏普比率大于1.2的有9个,其中年化率超过30%的有3个:焦煤-动力煤(39%)、豆粕-菜粕(34%)、PTA-PP(42%);表现最差的3个分别为:塑料-PP(收益长期为负)、 豆油-菜籽油(收益长期为负)、沪铜-沪铝(出现大回撤),但也都表现为正收益。

  • 从配对交易累积收益率的形态来分析,出现大回撤的时间是A、B两只配对品种在价格形态上出现较大偏差的时点。分析认为,此时的回归模型下产生的残差较长期均值产生了较大偏差,使得残差自身的有效性失效(使残差-组合收益率公式推求中的某一近似项偏差较大)。这种残差的异常值给配对组合收益率产生的负面影响需要更精细的模型剔除。

  • 关于模型参数(如标准差倍数)的优化,采用的是最大化收益率形式。后续可采用最大化夏普比率进行优化,并和最大化收益率下的参数值进行对比,看是否存在趋同性。

  • 也可以将点位的计算改为基于分位数方式,再使用最大化收益率(或夏普比率)优化,再与基于标准差的结果进行同类对比。

  • 该模型要求实际操作中,需要在数据精度的尺度下,可以随时按照对冲比率计算的资金配比对买卖盘进行调仓。该操作在实际中的可行性存疑。

  • 其他想到的再说。

作者:刘琉球,南京大学工学学士、应用统计博士,教育部高校科技进步一等奖联合完成人,欧盟FP7 Marie Curie Actions访问学者,R语言爱好者。个人微信:terenceliu2015,欢迎广大同仁交流。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存