必看!股票配对交易统计套利实战终极指南

作者:老余捞鱼

原创不易,转载请标明出处及原作者。

写在前面的话:我曾撰写过两篇有关配对交易统计套利的文章,其中一篇《为你揭开股票配对交易统计套利的实现》发表后,有读者与我交流,表示其相关理论和程序框架都已掌握,但在实际操作方面仍缺乏了解。今天,我在前文的基础上续写了一篇,介绍如何对苹果(AAPL)和微软(MSFT)股票进行配对交易的实操,并通过回测向大家展示该策略的表现。

一、我们要做什么? 

索罗斯(George Soros)说:"重要的不是你是对是错,而是你对的时候赚了多少钱,错的时候亏了多少钱"“It’s not whether you’re right or wrong that’s important, but how much money you make when you’re right and how much you lose when you’re wrong.” 

在股市中,短短几秒就能让资金大幅增减,所以交易者总是在策略里寻找风险与收益的平衡点。配对交易就是其中一种。使用这种市场中性策略,交易者不必关心绝对价格变化,只用关注两种相关工具之间的价格差。

在本文中,我们将以两家稳定增长的全球技术领军企业为例,展示如何运用配对交易:苹果(AAPL)和微软(MSFT)。我将阐述如何实施这样一种统计套利策略,涵盖协整分析、对冲比率确定和价差构建等步骤。此外,我还将介绍如何对该策略进行回溯测试,并依据包括收益、波动率、夏普比率和最大回撤等因素来评估其结果。最终,您将了解配对交易的基本流程,以及这种策略在实际市场环境中的出色表现。

二、导入库和数据准备

首先,我们需要导入几个 Python 库,它们将帮助我们分析数据并运行配对交易策略。

import pandas as pd
import numpy as np
import yfinance as yf
from sklearn.linear_model import LinearRegression
from statsmodels.tsa.stattools import coint
import matplotlib.pyplot as plt
import seaborn as sns

这些库对于处理数据、运行统计测试和绘制结果至关重要。雅虎财经(yfinance)提供了苹果和微软的历史股票数据。Pandas 有助于数据处理,而 NumPy 则支持数值计算。访问干净的历史数据是任何成功交易策略的基础。它使我们能够准确地检查价格走势、执行测试和回测策略。

三、下载目标股票价格数据

现在,我们将下载苹果公司(AAPL)和微软公司(MSFT)从 2015 年 1 月到 2023 年 10 月的历史数据。

ticker1 = 'AAPL'
ticker2 = 'MSFT'
start_date = '2015-01-01'
end_date = '2024-10-01'
data1 = yf.download(ticker1, start=start_date, end=end_date)
data2 = yf.download(ticker2, start=start_date, end=end_date)

该代码能够获取两家公司的调整后收盘价。调整后的收盘价极为重要,因为它涵盖了所有的公司行为,例如分红和股票分割,从而真实地体现了股票的价值。

拥有精确的、经过调整的价格数据,能够确保我们的分析建立在现实的、反映市场的价值基础之上。这对于分析长期趋势以及预测未来走势具有至关重要的意义。

四、价格序列可视化

我们来直观地看到苹果和微软的价格随时间的变化情况。

plt.figure(figsize=(14, 7))
plt.plot(df[ticker1], label=ticker1)
plt.plot(df[ticker2], label=ticker2)
plt.title('Price Series of AAPL and MSFT')
plt.xlabel('Date')
plt.ylabel('Adjusted Close Price')
plt.legend()
plt.show()

下图显示 AAPL 和 MSFT 的价格序列及其调整后的收盘价。

当我们绘制 AAPL 和 MSFT 的调整后收盘价时,就能看出这两只股票自 2015 年以来的走势是多么相近。价格序列的可视化让我们能够迅速判断这两只股票在一段时间内的走势是否相似。这在配对交易中非常关键,因为两种资产之间的强相关性是该策略发挥作用的必要条件。

五、协整检验

这可以帮助我们确定两个股票价格是否具有统计意义上的长期关系。

score, pvalue, _ = coint(df[ticker1], df[ticker2])
print(f'Cointegration test p-value: {pvalue:.4f}')

p 值为 0.1100,表明 AAPL 和 MSFT 之间存在微弱的协整关系。

协整检验检验 AAPL 和 MSFT 之间是否存在长期均衡关系。如果 p 值低于 0.05,则表明存在较强的协整关系,即这两只股票的价格会随着时间的推移而共同变动。虽然 p 值高于标准临界值,但策略仍可继续。即使协整关系不完美,配对交易也能发挥作用,只是需要更仔细地监控价差变动,并可能涉及更高的风险。

六、对冲比率的线性回归

下一步是计算对冲比率,这有助于平衡两个头寸。

X = df[ticker2].values.reshape(-1, 1)
y = df[ticker1].values
model = LinearRegression()
model.fit(X, y)
hedge_ratio = model.coef_[0]
print(f'Hedge Ratio: {hedge_ratio:.4f}')

这个线性回归模型反映了苹果和微软价格之间的关系。由此得出的对冲比率(0.5558)告诉我们,在我们的配对交易中,每只股票我们应该持有多少。

套期保值比率对于建立市场中性的投资组合至关重要。通过正确持有每只股票的数量,我们可以确保我们的策略从它们的相对价格变动中获利,而不是从整个市场的趋势中获利。

七、计算和绘制价差图

价差是 AAPL 和 MSFT 价格之间的差额,按对冲比率进行调整。

df['Spread'] = df[ticker1] - hedge_ratio * df[ticker2]

价差显示了两只股票价格相对移动的距离。这是我们进行交易的关键值。配对交易策略依赖于均值回归,这意味着我们预期价差最终会回归到历史平均水平。确定价差过宽或过窄时,我们就可以进行交易。

八、Z 值计算与买卖信号生成

为了量化差值与平均值之间的距离,我们计算 Z 值。

df['Z_Score'] = (df['Spread'] - df['Spread_Mean']) / df['Spread_STD']

Z 值衡量当前价差与其平均值的标准差。这有助于我们识别极端偏差,因为极端偏差预示着潜在的交易机会。

使用 Z 值时,我们可以设置阈值来触发买入和卖出信号。较大的正 Z 值或负 Z 值表明价差远离平均值,表明价差可能会回调。接下来我们利用 Z 值生成做多或做空的信号。

df['Long_Signal'] = np.where(df['Z_Score'] <= -entry_threshold, 1, 0)
df['Short_Signal'] = np.where(df['Z_Score'] >= entry_threshold, -1, 0)
df['Positions'] = df['Long_Signal'] + df['Short_Signal']

当 Z 值低于某一阈值时,就会发出买入(做多)信号,而当 Z 值超过正阈值时,就会发出卖出(做空)信号。这些信号构成了该策略的支柱。它允许我们在价差严重偏离均值时进入交易,并假定价差最终会回调。

九、策略回溯测试

下一步让我们计算下策略的累计回报。

df['Strategy_Return'] = df['Positions'] * (df['Return_AAPL'] - hedge_ratio * df['Return_MSFT'])
df['Cumulative_Strategy_Return'] = (1 + df['Strategy_Return'].fillna(0)).cumprod() - 1

我们通过应用我们的交易信号对策略进行回溯测试,并计算随着时间的推移交易的盈利情况。

通过回溯测试计算的 2015-2024 年 AAPL 和 MSFT 股票累计策略回报率(未扣除交易成本),上图向我们展示了该策略的历史表现,让我们深入了解其潜在盈利能力和稳健性。

十、交易成本与净战略回报

计入交易成本后,我们对收益进行调整。

df['Strategy_Return_Net'] = df['Strategy_Return'] - df['Transaction_Costs']
df['Cumulative_Strategy_Return_Net'] = (1 + df['Strategy_Return_Net'].fillna(0)).cumprod() - 1

这一步扣除了交易成本,以便更真实地反映战略的盈利能力。交易成本会大大降低利润,尤其是在高频交易策略中。将这些成本计算在内,可以确保我们清楚地了解策略的可行性。


十一、绩效指标

最后,我们计算关键性能指标。

print(f'Annualized Return: {annualized_return:.2%}')
print(f'Annualized Volatility: {annualized_volatility:.2%}')
print(f'Sharpe Ratio: {sharpe_ratio:.2f}')
print(f'Maximum Drawdown: {max_drawdown:.2%}')

计算关键绩效指标,包括年化回报率、波动率、夏普比率和最大缩水率,以评估战略的有效性。

结果如图:

  • 年回报率:3.94%
  • 年波动率:15.70
  • 夏普比率: 0.19
  • 最大提款:50.17%

这些指标有助于我们评估该战略的风险和回报情况。0.19 的夏普比率表明风险调整后的回报率较低,而 50.17% 的最大缩水率则表明风险敞口较大。

了解夏普比率(Sharpe Ratio)等业绩指标有助于评估该策略的回报是否证明了所涉及的风险是合理的。高缩水率表明需要改进风险管理。

十二、观点回顾

苹果公司(AAPL)与微软公司(MSFT)之间的配对交易虽可盈利,但也存在风险,如高回撤和低夏普比率。这种统计套利策略的关键在于协整、对冲比率和 Z 值。要提升其表现,优化进出场时机和管理交易成本至关重要。配对交易提供了一种市场中性的途径,只要谨慎操作,就能从这些科技巨头的动态关系中获取利润。

  • 配对交易是一种市场中性策略,依赖于两只相关股票价格差异的均值回归。
  • 协整测试是评估两只股票长期关系的关键,p值小于0.05通常表示强协整。
  • 对冲比率的计算确保了策略的市场中性,通过调整两只股票的持仓比例来平衡市场风险。
  • 价格差(Spread)和Z值的监控是发出交易信号的基础,帮助交易者确定何时进入和退出市场。
  • 回溯测试是评估交易策略有效性的重要工具,它展示了策略在历史数据上的表现。
  • 交易成本对策略的实际盈利能力有显著影响,需要在评估策略时加以考虑。
  • 性能指标如夏普比率和最大回撤提供了风险调整后的回报评估,有助于交易者理解和优化策略。
  • 策略的结果表明,尽管存在一定的回报,但高回撤和低夏普比率表明了较高的风险敞口,这意味着需要进一步的风险管理和策略优化。

本文代码下载https://github.com/alexyu2013/Linear-Arbitrage

感谢您阅读到最后,希望本文能给您带来新的收获。祝您投资顺利!如果对文中的内容有任何疑问,请给我留言,必复。


文内容仅仅是技术探讨和学习,并不构成任何投资建议。

转发请注明原作者和出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老余捞鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值