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
- Email: merwanroudane920@gmail.com
- GitHub: @merwanroudane
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cointhatemij-0.1.2.tar.gz.
File metadata
- Download URL: cointhatemij-0.1.2.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a89f5d3adcdf7b925285cb313f28e87def5f1854380feff4826cb0c83dd8337b
|
|
| MD5 |
3766f4a448fe70bbd34a78974bc88713
|
|
| BLAKE2b-256 |
e7dfb2026aa7e301184cbb424e94bfe91c07663623c5578c0005164662e6ba3c
|
File details
Details for the file cointhatemij-0.1.2-py3-none-any.whl.
File metadata
- Download URL: cointhatemij-0.1.2-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14757c000c19ded2b4a60519be703c4bfdebc90e81df5c49fad78f53b3a63071
|
|
| MD5 |
e3ef39372fb728ddab780abd0759dc5a
|
|
| BLAKE2b-256 |
903c8e6c3c6b2b97a5e6a8f172bf90758520f2242c60a6db68e5eb2ebeb7efa1
|