python统计套利_期货市场内外盘低频统计套利基于Python

首先导入本节需要使用的abupy中的模块:

AQF杂谈丨算法交易之父托马斯•彼得菲最成功的一段经历是利用当时最快的计算机,租赁独享电话线以保证数据传输畅通无阻,甚至超越时代定制平叛电脑,使用统计套利在不同市场进行对冲策略。

这是最有保证的一段量化交易历史,在当时的交易环境下运用高科技在市场中确实可以获利。

但是这个策略放到今天肯定不适用,因为科技在不停的进步,技术的不断透明化,信息社会的高速发展,自动化交易占了美国股票市场60%以上的成交量。在美国很多高频交易为了通信速度能有几毫秒的提升,不惜在太平洋底打洞自己搭建通信网络,也有专门提供暗光纤的独享网络商,他们网络的一年租赁费用就高达几千万美元。在这种环境下,个人量化投资者是不是一点机会都没有呢?

1. 伦敦期货市场和国内期货市场中的金属期货

本节示例适合个人量化交易者的低频统计套利策略,目标市场为伦敦期货市场和国内期货市场中的金属期货。

如下先获取伦敦的金属期货symbol数据:

接下来获取国内的金属期货symbol数据:

如下分别将两两金属期货进行跨市场配对,首先可视化一下走势,可以看到每一个配对期货市场的走势都非常跟随:

如果做跨市场高频交易,需要非常好的设备,盯着盘口的数据,快速进行交易决策,且对资金量也有要求,本节的示例为适合个人量化交易者的跨市场低频统计套利示例。

注意观察上面的每一对趋势曲线,如CAD vs CU0,你可以发现CU0对趋势敏感的速度要明显快于CAD, 而且是非高频的快,即上面的蓝线在趋势下跌时先下跌,趋势上涨时先上涨,那么就可以认为CAD在非高频下跟随CU0,具有低频统计套利机会。

2. 趋势变化的敏感速度

我们不可能真的用肉眼去一个一个观察,而且也无法量化具体趋势敏感的速度,也即无法确定是否真实存在低频统计套利机会。

对于量化交易,优势是通过计算机强大的运算能力,在市场广度的优势下获取概率优势,进行交易,下面示例如何使用abupy中的api计算趋势变化的敏感速度,如下所示:

备注: 具体计算计算趋势速度请阅读tl模块中calc_pair_speed方法

上面的计算结果0.57为CU0对趋势变化敏感速度,0.52为CAD对趋势变化敏感速度,即CU0的对趋势变化的敏感度大于CAD,且大于0.03具备低频统计套利的条件。(大于0.05认为具有安全低频统计套利机会,具体这些阀值将在之后的章节讲解)

在低频统计套利的情况下将会使用CAD做为交易目标,CU0做为趋势风标,因为它的敏感度高,下面初始化一个字典,key为将会使用做为交易目标的CAD,value为做为趋势风标CU0,如下所示:

下面计算沪铝(AL0)和伦敦铝(AHD)对趋势变化的敏感速度,如下:

上面的计算结果0.61为沪铝(AL0)对趋势变化敏感速度,0.57为伦敦铝(AHD)对趋势变化敏感速度,即AL0对趋势变化的敏感度大于AHD,且大于0.03具备低频统计套利的条件。

字典中key为将会使用做为交易目标的低敏感AHD,value为做为趋势风标的高敏感AL0,如下所示:

下面计算国内黄金(AU0)和伦敦黄金(XAU)对趋势变化的敏感速度,如下:

上面的计算结果0.58为国内黄金(AU0)对趋势变化敏感速度,0.61为伦敦黄金(XAU)对趋势变化敏感速度,即外盘敏感速度快于国内期货趋势变化敏感速度,之前的两个都为国内期货趋势变化敏感速度快于外盘敏感速度。

字典中key为将会使用做为交易目标的低敏感国内黄金(AU0),value为做为趋势风标的高敏感伦敦黄金(XAU),如下所示:

下面计算国内白银(AG0)和伦敦白银(XAG)对趋势变化的敏感速度,如下:

上面的计算结果0.55为国内白银(AG0)对趋势变化敏感速度,0.60为伦敦白银(XAG)对趋势变化敏感速度,即白银的外盘敏感速度也快于国内期货趋势变化敏感速度。

字典中key为将会使用做为交易目标的低敏感国内白银(AG0),value为做为趋势风标的高敏感伦敦白银(XAG),如下所示:

下面计算沪锌(ZN0)和伦敦锌(SND)对趋势变化的敏感速度,如下:

字典中key为将会使用做为交易目标的低敏感伦敦锌(SND),value为做为趋势风标的高敏感沪锌(ZN0),如下所示:

下面计算沪铅(PB0)和伦敦铅(PBD)对趋势变化的敏感速度,如下:

上面的计算结果0.50为沪铅(PB0)对趋势变化敏感速度,0.59为伦敦铅(PBD)对趋势变化敏感速度,差值达到0.09远大于0.03,是非常好的低频统计套利配对。

字典中key为将会使用做为交易目标的低敏感沪铅(PB0),value为做为趋势风标的高敏感伦敦铅(PBD),如下所示:

上面即选定了跨市场低频统计套利的交易配对字典,key为为交易目标的低敏感,value为做为趋势风标的高敏感,如下:

3. 基于跨市场低频统计套利的突破策略

下面编写择时交易策略实现这个跨市场低频统计套利的交易配对,如下所示:

策略编写如上AbuFactorBuyPairBreak所示和之前章节一直使用的周期突破策略AbuFactorBuyBreak唯一不同的只有突破信号发出者为趋势风标的高敏感目标,一旦高敏感目标今天突破了,则买入的是低敏感的交易目标。

下面使用这个买入策略进行回测,卖出策略依然延用之前的策略,如下所示:

回测结果如上所示,对比未基于内外盘统计套利的普通突破策略回测可以看到回测效果提升很多,如下所示:

而且即使再次降低交易频度,不使用跨市场套利的时间优势,选择再隔一天买入交易目标,即下面的构造因子参数buy_today=False,可以看到回测的结果依然好于未基于内外盘统计套利的普通突破策略回测结果。

完善下表,48小时内查收全套AQF备考资料

声明▎更多内容请关注微信号量化金融分析师。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
统计套利是一种利用不同市场或不同证券之间的价格差异进行交易的策略。在实践中,统计套利经常涉及到多个证券之间的关系,并且需要进行复杂的计算和统计分析。Python是一种强大的编程语言,可以用于实现这种策略。 以下是一个简单的使用Python实现统计套利的步骤: 1. 选择需要进行统计套利的证券。这些证券通常具有相关性,例如同一行业的股票、跨国公司的股票等。 2. 收集所选证券的历史价格数据。这可以通过从金融数据提供商如雅虎财经或谷歌财经获取数据,或者使用Python库(如pandas-datareader)来获取数据。 3. 计算每个证券的收益率。根据所选证券的历史价格数据,计算每个证券的收益率。这可以通过计算每个证券的价格变化率来实现。 4. 计算每对证券之间的协方差。使用pandas库中的corr()函数计算每对证券之间的协方差。这可以帮助确定证券之间的相关性。 5. 构建线性回归模型。使用StatsModels库中的OLS()函数构建线性回归模型。该模型可以帮助确定每个证券的权重。 6. 计算每个证券的标准化收益率。根据每个证券的收益率和其权重,计算每个证券的标准化收益率。 7. 计算套利指数。根据每个证券的标准化收益率,计算套利指数。套利指数表示所有选定证券的加权平均值。 8. 制定交易策略。根据套利指数和选定证券的价格变化,制定交易策略。 虽然以上步骤是一个简单的指南,但实际实现统计套利需要更多的计算和分析。但是,使用Python可以让这个过程更加高效和自动化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值