matplotlib 均值_一个运用SPY与IWM之间均值回归的日内交易策略

c9bee1556de5045e08a5178bc9fdd98d.png

在本文中,我们将编写一个日内交易策略。它将使用经典的交易理念,即“均值回归交易对”。在这个例子中,我们将利用两只交易型开放式指数基金(ETF),SPY和IWM,它们在纽约证券交易所(NYSE)交易,并试图代表美国股市指数,分别是“S&P500和“Russell 2000"。

该策略通过做多一种ETF和做空另一种ETF来创造一个“利差”。多空比可以用许多方式定义,例如利用统计协整时间序列的方法。在这种场景中,我们将通过滚动线性回归计算SPY和IWM之间的对冲比率。这将允许我们在SPY和IWM之间创建“利差”,其被标准化为z-score。当z-score超过某一阈值时,将产生交易信号,因为我们相信这个“利差”将恢复到均值。

该策略的基本原理是,SPY和IWM都大致代表了同样的市场情况,即一组大型和小型美国公司的股价表现。前提是,如果接受价格的“均值回归”理论,那么它总有回归的时候,因为“事件”可能会在很短的时间内分别影响S&P500和Russell 2000,但他们之间的“利差”总会回归到正常的均值,且两者长期的价格序列总是协整(cointegrated)的。

策略

该策略按以下步骤执行:

数据 - 从2007年4月到2014年2月,分别获得SPY和IWM的1分钟k线图。

处理 - 把数据正确对齐,并且删除相互有缺少的k线。(只要有一边缺少,则两边都删除)

差价 - 两只ETF之间的对冲比率采用滚动线性回归计算。定义为使用回溯窗口的β回归系数,该回溯窗口向前移动1根k线并重新计算回归系数。因此,对冲比例βi,bi根K线是通过计算跨越点从bi-1-k到bi-1,以用来回溯k线。

Z-Score - 标准利差的值是以通常的方式来计算。这意味着减去利差的均值(样本)并除以利差的标准差(样本)。这样做的理由是使阈值参数更容易理解,因为Z-Score是一个无量纲的量(dimensionless quantity)。我有意在计算中引入了“前视偏差”,以显示它会有多么微妙。试试看吧!

交易 - 当负z-score值下降到低于预定(或后优化)阈值时产生做多信号,而做空信号则与此相反。当z-score的绝对值降至额外阈值以下时,将生成平仓信号。对于这个策略,我(有点随意)选择了|z| = 2作为开仓阈值,|z| = 1作为平仓阈值。假设均值回归在利差中发挥作用,以上这些将有望捕捉到这种套利关系并提供不错的利润。

也许深入理解策略的最佳方式是实际实现它。以下部分详细介绍了用于实现此均值回归策略的完整Python代码(单个文件)。我已经添加了详细的代码注释,以帮助你更好的理解。

Python实现

与所有Python/pandas教程一样,必须按照本教程中描述的Python环境来设置。设置完成后,第一项任务是导入必要的Python库。这个对于使用matplotlib和pandas是必需的。

我使用的特定库版本如下:

Python - 2.7.3

NumPy - 1.8.0

pandas - 0.12.0

matplotlib - 1.1.0

让我们继续并导入这些库:

# mr_spy_iwm.pyimport matplotlib.pyplot as pltimport numpy as npimport os, os.pathimport pandas as pd

以下函数create_pairs_dataframe导入两个包含两个symbol的日内k线的CSV文件。在我们的例子中,这将是SPY和IWM。然后它会创建一个单独的“数据帧对”,这个“数据帧对”将使用两个原始文件的索引。由于错过的交易和错误,它们的时间戳可能会有所不同。这是使用像pandas这样的数据分析库的主要好处之一。我们以非常有效的方式处理“样板”代码。

# mr_spy_iwm.pydef create_pairs_dataframe(datadir, symbols): """Creates a pandas DataFrame containing the closing price of a pair of symbols based on CSV files containing a datetime stamp and OHLCV data."""  # 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值