Skip to main content

Hatemi-J Cointegration Test with two unknown regime shifts (Model 3)

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.1.tar.gz (12.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.1-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cointhatemij-0.1.1.tar.gz
  • Upload date:
  • Size: 12.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.1.tar.gz
Algorithm Hash digest
SHA256 44c5c768e62e9083559dd28be74ddada9edfcbe5743f0cf6a542053601804ea5
MD5 9b582e053f5e6408a481eb81df9f68c7
BLAKE2b-256 b6b9da9478003335ca5728779e4aa21dfffc5b819b81f0f43893ff85c2f300ad

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cointhatemij-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 11.5 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e45cc4663ea4a2748c3da15797a6c66d5e853ab9bc75256a8e103e92f492b71d
MD5 1ead39098c2d215a108c8e4e21c7b5dc
BLAKE2b-256 1534bec5a36164b78a624e752d9b1973080cbd20eb18dbdfdb85ca8c1a09a31d

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