Skip to main content

Hatemi-J Cointegration Test with Two Unknown Regime Shifts

Project description

cointhatemij

Hatemi-J Cointegration Test with Two Unknown Regime Shifts

A Python implementation of the Hatemi-J (2008) cointegration test that allows for two structural breaks with unknown timing.

Reference

Hatemi-J, A. (2008). Tests for cointegration with two unknown regime shifts with an application to financial market integration. Empirical Economics, 35, 497-505. DOI: 10.1007/s00181-007-0175-9

Features

  • ✅ Three test statistics (ADF, Zt, Za)
  • ✅ Endogenous detection of two structural breaks
  • ✅ Multiple lag selection criteria (AIC, BIC, t-stat)
  • ✅ Various variance estimation methods
  • ✅ Critical values for k ≤ 4 independent variables
  • ✅ Fully validated against original paper

Installation

pip install cointhatemij

Quick Start

import numpy as np
from cointhatemij import coint_hatemi_j

# Your data
y = np.array([...])  # Dependent variable
x = np.array([...])  # Independent variable(s)

# Run test
results = coint_hatemi_j(y, x)

# Check results
print(f"ADF statistic: {results['ADF_min']:.3f}")
print(f"Break dates: {results['TB1_adf']}, {results['TB2_adf']}")

Usage Example

import numpy as np
from cointhatemij import HatemiJTest

# Generate sample data
np.random.seed(123)
n = 100
x = np.random.randn(n, 2)
y = 0.5 + 0.3 * x[:, 0] + 0.2 * x[:, 1] + np.random.randn(n)

# Create test instance
test = HatemiJTest(y, x, 
                   model=3,      # Only model 3 available
                   ic=3,         # t-stat lag selection
                   pmax=8,       # Maximum 8 lags
                   varm=1,       # iid variance
                   trimm=0.10)   # 10% trimming

# Run test
results = test.fit()

# Display results
test.summary()

Parameters

  • y: Dependent variable (n × 1)
  • x: Independent variables (n × k), where k ≤ 4
  • model: Model specification (only 3 available)
  • ic: Information criterion (1=AIC, 2=BIC, 3=t-stat)
  • pmax: Maximum lags for ADF test (default: 8)
  • varm: Variance method (1=iid, 2=Bartlett, 3=QS)
  • trimm: Trimming rate (default: 0.10)

Output

Returns dictionary with:

  • ADF_min, Zt_min, Za_min: Test statistics
  • TB1_adf, TB2_adf: Break dates (ADF)
  • TB1_zt, TB2_zt: Break dates (Zt)
  • TB1_za, TB2_za: Break dates (Za)
  • cv_adf_zt, cv_za: Critical values

Critical Values

From Hatemi-J (2008), Table 1:

k Test 1% 5% 10%
1 ADF/Zt -6.503 -6.015 -5.653
2 ADF/Zt -6.928 -6.458 -6.224
3 ADF/Zt -7.833 -7.352 -7.118
4 ADF/Zt -8.353 -7.903 -7.705

Methodology

The test is based on the model:

y_t = α_0 + α_1*D1_t + α_2*D2_t + β_0'*x_t + β_1'*D1_t*x_t + β_2'*D2_t*x_t + u_t

Where D1_t and D2_t are dummy variables for two structural breaks. Break dates are estimated endogenously, and three test statistics are computed as the minimum values across all possible break combinations.

Null hypothesis: No cointegration

Testing

# Run tests
pytest tests/ -v

# Run validation
python validate.py

Citation

@article{hatemi2008tests,
  title={Tests for cointegration with two unknown regime shifts},
  author={Hatemi-J, Abdulnasser},
  journal={Empirical Economics},
  volume={35},
  pages={497--505},
  year={2008}
}

@software{roudane2024cointhatemij,
  author = {Roudane, Merwan},
  title = {cointhatemij: Python implementation of Hatemi-J test},
  year = {2024},
  url = {https://github.com/merwanroudane/cointhatemij}
}

License

MIT License - see LICENSE file for details.

Author

Dr. Merwan Roudane

Support

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cointhatemij-0.1.0.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cointhatemij-0.1.0-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

File details

Details for the file cointhatemij-0.1.0.tar.gz.

File metadata

  • Download URL: cointhatemij-0.1.0.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for cointhatemij-0.1.0.tar.gz
Algorithm Hash digest
SHA256 fc4511635cc5a830da058bbace416beefcf6dd637ab94581400cd8fd676bd94d
MD5 95ac6ac6eac3ef9451883190ea0bcff1
BLAKE2b-256 21b3100129fbcd25eb75e98bb14c6a92cdbc473b33dde91e8bd4e96226c0b835

See more details on using hashes here.

File details

Details for the file cointhatemij-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: cointhatemij-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 4.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for cointhatemij-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 111a896774b2dd13aaeb573804019b558423fe53a8cf23b41e30a1043c977849
MD5 ef83d923c7674f8ec2ebaecd660e4eb5
BLAKE2b-256 a966ebd1ccc135d0f15499760e62c6ce32f5cdb7924af20fb4bd364deb87953c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page