今天给各位分享股票中的情侣——配对交易的知识,其中也会对股票中的情侣——配对交易进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
股票中的情侣——配对交易的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于股票中的情侣——配对交易、股票中的情侣——配对交易的信息别忘了在本站进行查找喔。
本文导读目录:
3、【python量化】统计套利之配对交易策略实现(基于python)
作者:chen_h 微信号 & QQ:862251340 微信公众号:coderpai 配对交易是一个纯基于数学分析的一个非常好的例子。接下里的文章,我们将演示如何去利用数据来创建一个自动化配对交易策略。 基本原则 我们假设你有一对股票 X 和 Y,它们之间有一些基本的经济联系,例如这是两家生产百事可乐和可口可乐的,它们拥有相同产品的公司。你预计这两个公司的比率或者价格差异(也称为价差)随时间而保持不变。然而,由于某些愿意,比如市场变化,两个公司暂时的供求变化,一个正确机构的大量买单或者卖单,一个公司的重要消息面等等原因。这两个股票之间的价差可能会存在暂时的分歧。在这种情况下,一只股票上涨,另一只股票可能会相对下跌。如果你预计这种分歧会随着时间的推移恢复正常,那么你就可以进行配对交易。 当出现暂时的分歧时,配对交易将会出售表现优异的股票(上涨的股票),并且购买表现不佳的股票(下跌的股票)。因为你跟自己打赌,两只股票之间的差价最终会通过表现优异的股票回落或表现不佳的股票回升或者两者都进行同时进行,来达到原来的价差。不管是采用哪种行为,我们的配对交易都会从这些场景中赚钱。如果两只股票一起上涨或者下跌而不改变他们之间的价差,那么你将不会从这次交易中赚到钱,相反你可能会因此而造成亏损。 因此,配对交易是一种市场中性的交易策略,使得交易者能够从几乎任何市场环境中获得收益:上述趋势,下跌趋势或者震荡市。 概念解释:我们先来生成两个假股票数据 接下里,让我们生成一个伪造的数据 X ,并且通过从正太分布中绘制出它的每日收益。然后我们执行一个累积和来得到每天的 X 值。 现在我们生成与 X 有着经济关联的数据 Y ,所以 Y 的价格走势应该是与 X 相似的。我们通过对数据 X 进行建模并且添加一些从正态分布中抽取的随机噪声来建模。 协整 协整性跟相关性非常相似,意味着两个系列之间的比值将以平均值为中心变化。我们可以将序列 X 和 Y 的关系描述如下: Y = ⍺ X + e 其中,⍺ 是一个常数比率,e 是白噪声。 对于在两个时间序列之间交易的配对,期望比值随时间的推移必须收敛于平均值,即它们应该是协整的。我们上面构建的时间序列是协整的。我们现在讲绘制两者之间的比率,一边我们更加直观的看到结果。 协整测试 我们可以使用 包来进行方便测试。我们应该可以看到一个特别低的 p 值,因为这是我们人为构建的两个序列,他们在物理上可能是协整的。 输出值为:1.81864477307e-17 注:相关性和协整性 相关性和协整性虽然在理论上很相似,但是并不一样。我们来看看一个相关性的例子,它不是协整性的,反之亦然。首先让我们来检查一下我们刚刚生成的系列的相关性。 输出结果为:0.951 正如我们所期望的那样,这个值是非常高的。但是两个相关但不协整的序列怎么办呢?一个简单的例子是如下的两个序列: Correlation: 0.998 Cointegration test p-value: 0.258 相关度:0.998 协整检验 p 值:0.258 一个没有相关性,但是协整的例子是一个正态分布数据和一个方形波数据。如下: Correlation: 0.007546 Cointegration test p-value: 0.0 相关度:0.007546 协整检验 p 值:0.0 这两个序列的相关性非常低,但 p 值却显示出完美的协整性! 如何进行配对交易? 因为两个协整时间序列是彼此偏离和分开的(比如上面的 X 和 Y),所以有时候价差会很高,而有时候价差会很低。我们可以通过购买一种证券并且卖出另一种证券来进行配对交易。这样,如果正确一起下跌或者一起上涨,我们既不赚钱也不赔钱,因为我们的策略是市场中立的。 回到上面的 X 和 Y,以及它们的线 Y = ⍺ X + e,我们可以看到它们的比率(Y/X)是围绕它的平均值 ⍺ 来进行移动的,而我们赚取的钱就是从这个平均值 ⍺ 来的。为了做到这一点,我们会格外注意 X 和 Y 的比率,即 ⍺ 太高或者太低的时候: 延长比率:这是当 ⍺ 比平常小的时候,我们预计它的值会增加。在上面的例子中,我们通过购买 Y 并且出售 X 来对此进行投资。缩小比率:这是当 ⍺ 比平常大的时候,我们预计它的值会减小。在上面的例子中,我们通过出售 Y 并且购买 X 来对此进行投资。 请注意,我们总是有这样一个 “对冲仓位”:如果卖出的证券亏损了,那么空头就会赚钱;如果证券的价值升高了,那么多头仓位就会赚钱,所以我们不受整体市场波动的影响。如果证券 X 和 Y 彼此相对移动,那么我们只会赚钱或者亏钱。 使用数据分析的方法来找到拥有如此规律的证券 做到这一点的最佳方式是从我们怀疑可能是拥有协整关系的证券开始,并进行统计测试。如果你只是对所有对进行统计测试,那么你将会受到多重比较偏差的影响。 多重比较偏差只是一个事实,即在运行多次测试时,错误的生成重要 p 值的机会增加了,因为我们正在进行大量测试。如果对随机数据运行 100 词测试,我们应该看到 5 个 p 值低于 0.05 的值。如果你将 n 只证券进行协整比较,你将执行 n(n-1)/2 次比较,并且你应该会看到很多不正确的 p 值,随着你测试次数的增加,这个数量也会增加。为了避免出现这种情况,我们可以选择一小部分,我们认为可能是协整的然后进行单独测试。这将帮助我们减少暴露在多重比较偏差风险之中。 所以我们试着找一些具有协整关系的证券。让我们从标普 500 指数中 —— 一篮子的美国大盘科技股中找一些具有协整关系的股票吧。这些股票运行在类似的细分市场,并可能具有协整价格。我们通过扫描这些股票,然后计算两两之间的协整,最后我们可以得到一个协整检验得分矩阵,一个 p 值得分矩阵,以及可以计算出 p 值小于 0.05 的任何配对。这种方法容易出现多重比较偏差,实际上证券应该经过第二次验证。但是在这里,为了这个例子,我们先忽略这个。 注意:我们的数据中包含市场基准(SPX)—— 市场会推动许多证券的流动,通常你可能会发现两个似乎是协整的证券;但实际上它们并不是彼此协整的,只是与当时的市场保持了一致而已。这被称为混杂变量,重要的是要检查你可能找到的任何关系中的市场参与情况,比如上证指数,深证指数,创业板指数等等。 现在让我们尝试使用我们的方法找到协整对。 输出结果是:[(‘ADBE’, ‘MSFT’)] 从图中我们可以看出股票 ‘ADBE’ 和 ‘MSFT’ 是最具有协整的。为了更加放心,我们来看看它们的价格变化,以确保它确实是具有意义的。 这个比例看起来好像是为让着一个稳定的平均值移动的。绝对比率在统计学上并不是很有用,我们通过 z-score 来标准化我们的数据,会对我们的数据处理更有帮助。z-score 的定义如下: Z Score (Value) = (Value — Mean) / Standard Deviation 警告 在实际过程中,通常这样做是为了将数据控制在一定的比例内,但是这样就将数据假设在一个基本分布里面了,比如正态分布等等。通常这样做事不会出现问题的,但是,我们都知道财务数据,或者说是股票数据不是正态分布的,所有我们必须非常小心,不要简单的进行数据假设。数据比例的真实分布可能会非常粗糙,并且容易出现各种极端的情况,从而搞乱了我们的模型并且导致了交易时的巨大损失。 从图中我们可以看出,现在更容易观察这个比率就是围绕平均值移动的,但有时会倾向于与平均数有较大的一边,这也就是我们的交易机会。 现在我们已经介绍完了对配对交易的基础知识,并且基于历史价格确定了协整股票,接下来我们就可以尝试来开发一些交易信号了。首席那,让我们回顾一下使用数据技术来开发交易信号的步骤: 收集可靠的数据并且进行数据清洗从数据中来选择一些数据特征来识别交易信号特征可以选择移动平均值活价格数据,相关性或更加复杂信号 —— 或者结合一些新创建的特征来生成特征使用这些特征来生成交易信号,即哪些指令是买入的,哪些指令是卖出的,哪些指令是中性的。 第一步:定义我们的问题 在这里,我们试图创建一个信号,告诉我们下一个时间点的比值是买入还是卖出,即我们的预测变量 Y 值: Y = Ratio is buy (1) or sell (-1) Y(t)= Sign( Ratio(t+1) — Ratio(t) ) 注意:我们不需要预测时间的股票价格,甚至我们不需要知道真实的比率(尽管我们可以得到这个值),我们只需要知道下一步的操作方向就可以了。 第二步:收集可靠和准确的数据 我们可以使用雅虎的 API 来使用过去 10 年的交易日内(大约 2500 个数据点):开盘价,收盘价,最高价,最低价和交易量。 第三步:分割数据 不要忘记这个超级重要的步骤来测试模型的准确性。我们正在使用以下的方式来分割训练集和测试集: 采用 7 年的数据作为训练集,也就是 70% 的数据;采用 3 年的数据作为测试集,也就是 30% 的数据; 理想情况下,我们还可以制定验证集,但现在我们将跳过这个步骤。 第四步:特征工程 相关的特征可能是什么?我们想要预测比率移动的方向。我们已经看到,我们的两个股票时协整的,所以这个比率往往会左右摇晃并且回到平均水平。看起来我们的特征应该是确定比率的均值,从均值的当前价值与均值的差异能够产生我们的交易信号。 让我们使用以下功能: 60天移动平均比率:滚动平均值的测量5天移动平均比率:平均值的当前值的测量60天标准差z-score:(5d MA - 60d MA)/ 60d SD Z-score 确实带来了比率的平均恢复性质。 第五步:模型选择 让我们从一个非常简单的模型开始。查看 z-score 图标,我们可以看到,无论 z-score 特征变得太高还是太低,它都趋于恢复。让我们使用 +1 和 -1 来作为我们的阈值太高或者太低,然后我们可以使用以下模型来生成交易信号: 当 z-score 低于 -1.0 时,比率就是购买的信号(+1),因为我们预计 z-score 会回升到 0 ,因此比率会增加;当 z-score 高于 1.0 时,比率就是卖出的信号(-1),因为我们预计 z-score 会回落到 0,因此比率会下降; 第六步:训练,验证和优化 最后,让我们看看我们的模型实际上对真实数据做了什么?让我们来看看这个信号在实际比率上的样子。 交易信号似乎是合理的,我们似乎在高价或者更高价时得到了出售比率(红点),并在低价格(绿点)下降时买回。这对我们交易的实际股票意味着什么呢?让我们来仔细看看: 注意,我们有时在做空上面赚钱,有时又在做多上面赚钱,有时两者都赚钱。 我们对训练数据的信号反馈还是很满意的。我们来看看这个信号那个可以产生怎么样的利润。当比率较低时,我们可以制作一个购买 1 比率(购买 1 个 ADBE 股票和卖出比率 x 个 MSFT股票)的简单策略。当卖出 1 比率(卖出 1 个 ADBE 股票和买入比率 x 个 MSFT 比率)时,计算这些比率的 PnL 交易。 输出结果为:751783.375 所以这个策略似乎是有利可图的!!现在我们可以通过改变我们的移动平均窗口,通过改变买入(卖出)和退出头寸等门槛来进一步优化,并检查验证数据的性能改进。 我们也可以尝试更加复杂的模型,如 Logistics 回归,支持向量机等来做出我们的 +1(-1)预测。 现在,让我们假设我们决定推出这个模型。 第七步:对测试数据进行回测 回测是非常简单的,我们可以使用我们上面的函数来查看测试数据上的 PnL(profit and loss)。 输出结果为:545262.868 该模型做的非常好!这使得我们的第一个简单的配对交易完成了。 构建盈亏序列(PNL,Profit and Loss)。盈亏序列是指当前的头寸映射到对应的历史数据序列上,即此金融产品的历史收益率序列上,获得历史上的各个时间点的盈亏值。由此可知,盈亏序列的建立必须满足两个条件,1.已经处理好的历史数据2.当前的头寸。经过处理的历史数据已经经过讨论,当前头寸可以作为参数直接输入获得,当然为了更好的结构性和扩展性的考虑我们可以把头寸写入配置文件中。用数学公式PnL=Position(头寸)*()。 避免过拟合 在结束讨论之前,我们要特别提一下过拟合。数据模型过拟合是交易策略中最危险的陷阱。过度拟合算法可能在回测中表现出色,但对新的数据可能处理能力就比较差了 —— 这也就意味着模型没有真正揭示出数据的任何趋势特征,也没有真正的预测能力。我们举一个简单的例子。 在我们的模型中,我们使用滚动参数估计,并可能希望优化窗口长度。我们可能决定简单的迭代所有的可能,合理的窗口长度,并根据我们的模型的最佳表现来选择长度。下面我们编写一个简单的循环来根据 PnL 值选择一个最佳的长度。 输出结果为:(‘Best window length:’, 40) 现在,我们检查我们的模型在测试数据上面的性能,我们发现这个窗口长度远不是最优的!这是因为我们最初的选择显然是过度拟合了训练样本。 输出结果为: 明显在训练样本上面取得好结果的并不总是在未来会取得良好的结果。为了更加直观好玩,让我们绘制从两个数据集计算出来的长度分数。 我们可以看到 20 - 50 之间的任何长度都是一个不错的选择。 为了避免过拟合,我们可以使用经济推理或者算法的性质来选择我们的窗口长度。当软我们也可以使用一些不用指定窗口长度的方法,比如,卡尔曼滤波。 来源:Medium 什么是配对交易? 配对交易(Pairs Trading)是指八十年代中期华尔街著名投行Morgan Stanley的数量交易员Nunzio Tartaglia成立的一个数量分析团队提出的一种市场中性投资策略,,其成员主要是物理学家、数学家、以及计算机学家。 Ganapathy Vidyamurthy在《Pairs Trading: Quantitative Methods and Analysis》一书中定义配对交易为两种类型:一类是基于统计套利的配对交易,一类是基于风险套利的配对交易。 配对交易的原理 该策略监控两个历史相关证券的表现。 当两种证券之间的相关性暂时减弱时,即一只股票向上移动而另一只股票向下移动,对货币交易将做空缩短表现优异的股票并做多表现不佳的股票,并认为两者之间的“差价”最终趋同。 一对股票的价格的分歧可能是由于临时供需变化,一个股票的大单交易,一家公司出现重要新闻等等。 由于配对交易利用配对间的短期错误定价,通过持有相对低估,卖空相对高估,因此其本质上是一个反转投资策略,其核心是学术文献中的股票价格均值回复。尽管配对交易策略非常简单,但却被广泛应用,其之所以能被广泛应用的主要原因是:首先,配对交易的收益与市场相独立,即市场中性,也就是说它与市场的上涨或者下跌无关;其次,其收益的波动性相对较小;第三,其收益相对稳定。 配对交易特点 第一,配对交易利用了两个资产的短暂价格偏离的对称性,进行对冲以获取两个资产的Alpha收益,其核心假设是配对资产的价差具有均值回复性。而这种均值回复是以交易者的非理性行为相关的。因为当市场中存在大量这类想法的交易者时,股票价格会产生上升的惯性,但这种上升惯性仅仅由于这一个非理性因素所驱动,并没有具体实际的基本面因素支撑,因而股价很快会跌落。相反,股价下跌的股票也会产生下跌的惯性,当市场的理性因素占据主导时,价格又回复到原先的水平。而如果交易者能够采用配对交易策略,就可以获得这两项资产价格偏离的收益了。在实际操作中,其执行过程可以简单地描述为:投资者首先选择相互匹配的两个资产,当配对资产价格差异增加的时候,做多价格偏低的资产,同时做空价格偏高的资产,而当价格差异减小的时候,则结束头寸,完成交易;同时,为了控制风险,当价差进一步扩大时,需要在适当的止损点结束头寸。 第二,配对交易是一种市场中性的交易策略。当观察到配对的资产价格差异增大到一定程度时,对价格上升的资产建立空头,对价格下跌的资产建立多头。在一价定律的作用下,配对资产的价格差异将很快减小。这时,再买入价格下跌的资产对冲之前建立的空头头寸,同时卖出价格上涨的资产,获取两项资产的收益。就整个过程来看,配对交易在单一资产上都有系统风险和个别风险,但由于头寸始终是相反的,因此系统风险完全对冲,配对交易整体上只承担了配对资产的个别风险。而在一价定律下,价格对于价值的回复使得配对的资产的个别风险直接转换为个别收益。这种收益是于市场无关的。 配对交易策略需要良好的头寸规模,市场时机和决策技巧。 虽然该策略没有太大的下行风险,但交易机会很少,而且,为了获利,交易者必须是“最先下手的人”,这就需要强大的编程和硬件能力。 配对交易实证 我们来看A股市场上一对被比较常见的配对股票:美的集团(000333),格力电器(000651) 时间为2014-01-01至2018-01-01,中间有一段时间格力电器停牌,数据缺失。 经计算,两者相关性系数为98.73%,可以说相关性相当高,这也就是为什么两者经常被用来做配对交易。 二者在大趋势上都是上涨的,时间段拉长反而会造成两者相关性提高,我们再来看最近一年两者的相关性。 从短期来看,两者相关性依然很高,相关性系数达到94.18% 另外,我们在找一对反例:上汽集团(600104),广汽集团(601238) 长周期来看,两只股票虽然都为汽车板块,但相关系数只有76.52% 短期来看,两者的相关性更低,相关性系数只有56.76% 接下来,我们来看一下配对交易的一般策略思想是怎样的。 以下回测参数均设置为: 时间:2015-01-01至2018-08-01调仓频率:1天基准指数:沪深三百指数(SHSE.000300)标的:美的集团(000333)格力电器(000651)滑点:0.0001手续费:0.0001 策略思想: 1、获取两支股票交易情况,如果停牌,则跳过。2、计算前四日,两者收盘价差值,并计算差值的方差及平均值。3、依据以上数据,构造差值的布林通道。4、当价差上破布林上轨,做空价差(半仓)。5、当价差下破布林下轨,做多价差(半仓)。 我们看到策略取得了较好的收益及稳定性,由于A股做空较难,这里仅仅做多股票,没有做空股票的操作。策略算是个半成品吧,可以看出,在追求稳定的同时,我们牺牲了较多的收益,例如,在牛市中,我们没有超越大盘。配对交易还有很多策略思想,这里仅供参考,各位读者见笑。 点击文末索取:股票中的情侣——配对交易 来源:掘金量化社区 作者:经纬量化 宋瑞笛 ———————————————————————————————————— 配对交易策略是一种非常流行的交易策略,它通过挑选两只或多只相关性比较高的股票,对它们进行交易,从而获得更高的收益率。在这个策略中,我们通过观察两只股票之间的相对价格走势,以及利用一些统计学的模型来发现它们之间的价差,并且根据价差来进行交易。 在Python中实现配对交易策略的方法是很简单的。我们首先需要使用一些Python量化交易框架,如PyAlgoTrade、Zipline等来提供股市实时报价的API接口。接着,我们需要在Python中写一些脚本来筛选出相关性较高的股票对。这个步骤可以使用Python中的统计模块Scipy和Pandas,以及python的机器学习框架Scikit Learn来实现。 接着我们需要对所筛选出来的股票对进行回归分析。通过分析这些股票价格之间的线性回归模型,以及协整模型,可以将它们之间的关系量化,并计算出差价收益。接着我们就可以在Python中使用一些交易策略来利用这些差价信息来实现交易。我们可以使用事件驱动型交易策略或者基于托马斯-布鲁克斯模型(TB-model)的交易策略来实现。 总的来说,在Python中实现配对交易策略是非常实用的。虽然需要对现有市场进行深入的研究和对金融学知识有一定的前提知识,但是Python提供了非常便利的工具和库,可以大大提高策略的效率,提供更好的收益率。股票中的情侣——配对交易的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于股票中的情侣——配对交易、股票中的情侣——配对交易的信息别忘了在本站进行查找喔。
未经允许不得转载! 作者:谁是谁的谁,转载或复制请以超链接形式并注明出处。
原文地址:http://www.bbwdc.cn/post/19094.html发布于:2026-02-26




