前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Copula函数的配对交易

基于Copula函数的配对交易

作者头像
量化投资与机器学习微信公众号
发布2021-05-27 14:38:59
1.8K0
发布2021-05-27 14:38:59
举报
配对交易

配对交易的概念非常直观,主要遵循两个步骤的过程。首先,找到两只历史上价格一起波动(相关性较大)的证券。然后,在随后的交易期内监测两者之间的价差。如果价格偏离,差价扩大,做空其中一只证券,买入另一只证券。两只证券配对交易的概念也可以被扩展到多只证券中:比如可以监测一只证券与另外一个证券组合之间的价差变化,也可以监测两个证券组合之间的价差变化,这就是广义的配对交易,即统计套利。

配对交易的第一步是判断证券之间价格的波动是不是存在相关性,以寻找合适的证券配对。Krauss (2016) 中整理了关于配对交易的相关方法及对应的论文,主要的方法有以下几种:距离(Distance)、协整、时间序列分析、 随机控制、 机器学习及copula。

基于Copula函数的配对交易

大部分寻找配对证券的方法,都会假设证券价格(收益率)服从假定的统计分布。例如,一般的会假设证券价格服从正态分布,两只证券的价格服从二元正态分布。但是,通常这种分布的假设会存在以下问题:

1、即使单只证券的边际分布服从正态分布,也并不意味着两个证券的价格一起会服从二元正态分布。

2、二元正态分布有很多假设条件,其中很大一部分是不切实际的。比如:两只证券之间的相关性是线性的,没有尾部依赖(尾部风险发生的概率极低),分布是对称的(价格上行和下行的可能性是一样的)。

但在真实的市场中,我们会发现很多时候,当价格波动较大,大幅上涨或下跌的时候,股票之间的相关性会比平稳市场中表现的更高,特别是市场恐慌的时候。有些股票,平时表现的相关性不高,一旦出现重大消息导致的大涨大跌时,会表现出更高的相关性。对于这些尾部依赖的问题,Copula函数就可以很好的解决。

直观的理解Copula

SKlar定理

Copula这个概念是Sklar在1959年提出的,理解Copula的前提是弄清楚SKlar定理:

任意两个随机变量分别服从连续边缘随机分布

,若 是 的二元联合分布函数,那么存在唯一的Copula函 ,使得 。反之如果 是一个Copula函数,而 是两个任意的概率分布函数,那么有上式定义的 函数一定是一个联合分布函数,且对应的边缘分布刚好就是 。

Sklar认为,对于N个随机变量的联合分布,可以将其分解为这N个变量各自的边缘分布和一个Copula函数,从而将变量的随机性和耦合性分离开来。其中,随机变量各自的随机性由边缘分布进行描述,随机变量之间的耦合特性由Copula函数进行描述。换句话说,一个联合分布关于相关性的性质,完全由其Copula函数决定。

仔细理解以下等式,等式左边变量是 分别是 的边缘分布函数,值域均为 ,右边 为 的联合分布函数,值域为 ,也就是说copula是两个随机变量边缘分布函数的函数,其结果与两个变量的联合分布函数一致。

C(F_1(s_1),F_2(s_2)) = H(s_1, s_2)

如果用 ,那么上式可以写成:

C(u,v) = H(F_1^{-1}(u), F_2^{-1}(v))

其中, 为反函数,可以看出,一个联合分布关于相关性的性质,完全由它的Copula函数决定,跟边缘分布没有任何关系。

正式定义

对于一个二元的copula函数 : ,只要满足以下条件:

  • 定义域为[0,1]X[0,1],值域为[0,1] , 即C:[0,1]X[0,1] -> [0,1 ]
  • C(u,0)=C(0,v) = 0; C(u,1)=u; C(1,v)=v
  • 0<=C对u的偏导<=1 ; 0<=C对v的偏导<=1
尾部依赖

Copula中有一个重要的概念,也是copula吸引我们最主要的原因:tail dependence(尾部依赖)。比如二元高斯分布中,描述的是两个变量整体的相关性,而真实的情况时,两个股票在大幅下跌时(或上涨时)更有相关性,尾部依赖的定义如下。

\begin{aligned} \lambda_{l}:=& \lim _{q \rightarrow 0^{+}} \mathbb{P}\left(U_{2} \leq q \mid U_{1} \leq q\right), \\ \lambda_{u}:=& \lim _{q \rightarrow 1^{-}} \mathbb{P}\left(U_{2}>q \mid U_{1}>q\right) . \end{aligned}

有哪些常用的Copula函数?

Copula函数主要分为两大类:Elliptical copulas和Archimedean copulas。其中Elliptical copulas是通过已知多元分布反推出来的,比如多元正态分布对应的Copula为高斯Copula,多元t分布对应的Copula为t-Copula。Archimedean copulas是人工构造出来的满足Copula定义的Copula函数。还有一种混合copula(Mixed copulas)结合了Ellipyical copula和Archimedean copulas,比如Clayton-Frank-Gumbel mixed copula:

C_{m i x}\left(u_{1}, u_{2} ; \boldsymbol{\theta}, \mathbf{w}\right):=w_{C} C_{C}\left(u_{1}, u_{2} ; \theta_{C}\right)+w_{F} C_{F}\left(u_{1}, u_{2} ; \theta_{F}\right)+w_{G} C_{G}\left(u_{1}, u_{2} ; \theta_{G}\right)

Archimedean copulas

Archimedean Copula 函数簇的分布函数有着统一的函数表达形式:

C\left(u_{1}, u_{2} ; \theta\right)=\phi^{[-1]}\left(\phi\left(u_{1} ; \theta\right)+\phi\left(u_{2} ; \theta\right)\right)

其中 称为Archimedean Copula函数的生成函数,生成函数需要满足以下条件:

条件1 :

\phi:[0,1] \times \Theta \rightarrow[0, \infty)

是一个连续 , 严格減函数和凸函数 , 且

\phi(1)=0

(

\phi(1 ; \theta)=0

)。

条件2 :

\phi^{-1}(u ; \theta)=\left\{\begin{array}{l} \phi^{-1}(u ; \theta) \text { if } 0 \leq t \leq \phi(0 ; \theta) \\ 0 & \text { if } \phi(0 ; \theta) \leq u \leq \infty \end{array}\right.
并且要求 \phi^{-1} \text { 在 }[0, \infty)是

N

维单调的。

即:

\begin{array}{l} (-1)^{k} \phi^{-1,(k)}(u ; \theta) \geq 0, \text { 对任意的 } 0 \leq u \leq 1, k=0,1, \ldots, d-2 \text { 成立且 }\\ (-1)^{d-2} \phi^{-1,(d-2)}(u ; \theta) \text { 是一个非增凸函数。 } \end{array}

根据不同的生成元函数能够得到不同的阿基米德Copula函数,常见有:Frank Copula、Clayton Copula 及 Gumbel Copula。

  • Gumbel:
  • Frank:
  • Clayton:
  • Joe:
  • N13:
  • N14:

Gumbel Copula函数对上尾部的厚尾特性比较敏感,对下尾部的厚尾特性不敏感,因此适合于对上尾部厚尾特性明显而下尾部厚尾特性不明显的耦合结构建模;Clayton Copula 函数适合于对下尾部厚尾特性明显而上尾部厚尾特性不明显的耦合结构建模;FrankCopula 的密度分布呈“U”字形,适合于描述具有对称厚尾结构变量的耦合关系。

我们可以看到,以上所有的copula都只有一个参数 ,它决定了两个变量之间的紧密程度。我们在拟合数据时,也就是在拟合这个参数 。

如何选择Copula函数?

实际应用场景中,我们要根据具体的需求,结合各copula函数的性质,选取合适的copula函数,以下是几个需要注意的地方:

  • 上尾依赖(Upper tail dependence) 意味着两个随机变量可能同时出现非常大(分布的右侧)的值。例如,当处理收益序列时,上尾依赖意味着这两只股票很可能同时获得较大收益。
  • 下尾依赖(Lower tail dependence) 意味着两个随机变量可能同时出现非常小的值(分布的左侧)。这比上尾依赖更强,因为股票更有可能一起下跌而不是一起上涨。
  • Frank copula和Gaussian copula 根本没有尾部依赖关系。正是基于Gaussian copula为CDO定价,导致了2008年的金融危机。
  • 与Gaussian copula相比,Frank copula具有更强的中心依赖性。
  • 对于VaR的计算, Gaussian copula过于乐观,而Gumbel copula过于谨慎。
  • 具有上尾依赖性质的copula: Gumbel, Joe, N13, N14, Student-t.
  • 具有下尾依赖性质的copula: Clayton, N14 (weaker than upper tail), Student-t.
  • 没有尾部依赖性质的copula: Gaussian, Frank.

数据拟合

基于已知的数据拟合copula函数主要分为两个步骤:将数据转换为对应的分位数或概率值(0-1区间),对概率值进行拟合。常用的方法主要基于极大似然估计和经验分布,Python中有现成的工具包可以方便的完成这些工作:

Python Copula工具包:https://github.com/sdv-dev/Copulas

主要支持以下copula的拟合:

基于Copula的交易策略

接下来,我们基于过去的文献对于Copula应用在配对交易的实际策略做一个汇总。

核心逻辑:条件概率

基于copula的配对交易策略,条件概率一直是核心逻辑,如果两个证券 的copula函数为 ,则其条件概率的可以如下表示:

P\left(U_{1} \leq u_{1} \mid U_{2}=u_{2}\right):=\frac{\partial C\left(u_{1}, u_{2}\right)}{\partial u_{2}}, P\left(U_{2} \leq u_{2} \mid U_{1}= u_{1}\right):=\frac{\partial C\left(u_{1}, u_{2}\right)}{\partial u_{1}}

条件概率怎么应用到策略中呢?比如:

  • 当 ,就意味着 被低估(Undervalued),就可以做多 做空 。
  • 当 ,就意味着 被低估(Undervalued),就可以做多 做空 。

以上只是一个简单的示例。真实策略开发的流程涉及到模型训练测试等,可以参考以下流程:

策略1:基于一定阈值的价格条件

具体可参考:[Liew et al. 2013] [Botha et al. 2013]

  • 进场规则:
    • 就意味着 被低估(Undervalued)且 高估(Undervalued),就可以做多 做空 。
    • 就意味着 被低估(Undervalued)且 高估(Undervalued),就可以做多 做空 。

出场规则:只要任何一种情况的概率突破0.5,就离场。比如进场规则1中,某个时刻 超过了0.5,就触发了出场规则。

策略2:基于一定阈值的价格条件

策略1是基于价格触发的进出场规则,其实基于收益率的交易规则在copula的应用中更为常见,很多多品种的统计套利多基于收益率。具体可参考:[Xie et al. 2014] [Stübinger et al. 2016] [Rad et al. 2016] [da Silva et al. 2017].

错误定价指数(Mispricing Index, MPI)

以下是基于条件概率,对于证券数学公式: 的错误定价指数的定义:

其中 分别为 在t期间的收益率。

累积错误定价指数(Cumulative Mispricing Index, CMPI)

把过去一段时间的MPI(减去0.5)相加,就是累积错误定价指数:

进场规则

  • 大于等于 时,做 且做多
  • 小于等于 时,做空 且做多
  • 大于等于 时,做空 且做多
  • 小于等于 时,做空 且做多

出场规则

  • 如果进场规则是 ,那么当 回到0或者触发止损后出场
  • 如果进场规则是 ,那么当 回到0或者触发止损后出场
  • 出场后, 均重置为0

总结

当然以上的逻辑都是基于已经选好的配对,那在配对确定的逻辑上,我们可以根据相关系数Kendall's tau系数等指标,也可以根据基本面的业务逻辑,比如根据公司的细分行业分类,主营业务是否一致等逻辑。Copula本身只是用来对两个或多个变量之间的依赖关系进行建模的数学工具,当我们把它应用在交易策略的逻辑中时,还有很多现实的问题需要细化,本文从copula的理解,数据的拟合到策略的逻辑,给大家做了一个比较完整的介绍,希望能给大家带来一些启发。

参考文献

1、Krauss, Christopher. “Statistical Arbitrage Pairs Trading Strategies: Review And Outlook.” Journal of Economic Surveys, vol. 31, no. 2, 2016, pp. 513–545., doi:10.1111/joes.12153.

2、Pei, Hansen. “Copula for Pairs Trading: A Detailed, But Practical Introduction.” Hudson & Thames, 20 Jan. 2021, hudsonthames.org/copula-for-pairs-trading-introduction/.

3、Pei, Hansen. “Copula for Pairs Trading: Sampling and Fitting to Data.” Hudson & Thames, 4 Feb. 2021, hudsonthames.org/copula-for-pairs-trading-sampling-and-fitting/.

4、Pei, Hansen. “Copula for Pairs Trading: A Unified Overview of Common Strategies.” Hudson & Thames, 17 Feb. 2021, hudsonthames.org/copula-for-pairs-trading-overview-of-common-strategies/.

5、B Sabino da Silva, F., Ziegelman, F. and Caldeira, J., 2017. Mixed Copula Pairs Trading Strategy on the S&P 500. Flávio and Caldeira, João, Mixed Copula Pairs Trading Strategy on the S&P, 500.

6、Liew, R.Q. and Wu, Y., 2013. Pairs trading: A copula approach. Journal of Derivatives & Hedge Funds, 19(1), pp.12-30.

7、Patton, A.J., 2012. A review of copula models for economic time series. Journal of Multivariate Analysis, 110, pp.4-18.

8、Patton, A.J., 2009. Copula–based models for financial time series. In Handbook of financial time series (pp. 767-785). Springer, Berlin, Heidelberg.

9、Rad, H., Low, R.K.Y. and Faff, R., 2016. The profitability of pairs trading strategies: distance, cointegration and copula methods. Quantitative Finance, 16(10), pp.1541-1558.

10、Stander, Y., Marais, D. and Botha, I., 2013. Trading strategies with copulas. Journal of Economic and Financial Sciences, 6(1), pp.83-107.

11、Stübinger, J., Mangold, B. and Krauss, C., 2018. Statistical arbitrage with vine copulas. Quantitative Finance, 18(11), pp.1831-1849.

12、Vidyamurthy, G., 2004. Pairs Trading: quantitative methods and analysis (Vol. 217). John Wiley & Sons.

13、Xie, W., Liew, R.Q., Wu, Y. and Zou, X., 2016. Pairs trading with copulas. The Journal of Trading, 11(3), pp.41-52.

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量化投资与机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 尾部依赖
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档