Python package for cointegration analysis.

# CointAnalysis

Python library for cointegration analysis.

## Features

• Carry out cointegration test
• Evaluate spread between cointegrated time-series
• Generate cointegrated time-series artificially
• Based on scikit-learn API

## Installation

\$ pip install cointanalysis

## What is cointegration?

See Hamilton's book.

## How to use

Let us see how the main class CointAnalysis works using two ETFs, HYG and BKLN, as examples. Since they are both connected with liabilities of low-rated companies, these prices behave quite similarly.

### Cointegration test

The method test carries out a cointegration test. The following code gives p-value for null-hypothesis that there is no cointegration.

from cointanalysis import CointAnalysis

hyg = ...   # Fetch historical price of high-yield bond ETF
bkln = ...  # Fetch historical price of bank loan ETF
X = np.array([hyg, bkln]).T

coint = CointAnalysis()
coint.test(X)

coint.pvalue_
# 0.0055

The test have rejected the null-hypothesis by p-value of 0.55%, which implies cointegration.

The method fit finds the cointegration equation.

coint = CointAnalysis().fit(X)

coint.coef_
# np.array([-0.18  1.])
coint.mean_
# 7.00
coint.std_
# 0.15

This means that spread "-0.18 HYG + BKLN" has the mean 7.00 and standard deviation 0.15.

In fact, the prices adjusted with these parameters clarifies the similarities of these ETFs:

The time-series of spread is obtained by applying the method transform subsequently. The mean and the standard deviation are automatically adjusted (unless you pass parameters asking not to).

# returns (-0.18 * hyg + 1. * bkln - 7.00) / 0.15

# returns -0.18 * hyg + 1. * bkln

The method fit_transform carries out fit and transform at once.

The result looks like this: