test_arima_garch.pyโข5.46 kB
# test_arima_garch.py - Test ARIMA-GARCH availability
def test_imports():
"""Test all imports and dependencies."""
print("๐งช TESTING ARIMA-GARCH DEPENDENCIES")
print("=" * 50)
# Test basic imports
try:
import yfinance as yf
print("โ
yfinance available")
except ImportError:
print("โ yfinance not available")
return False
try:
import pandas as pd
import numpy as np
print("โ
pandas & numpy available")
except ImportError:
print("โ pandas or numpy not available")
return False
# Test ARIMA-GARCH specific dependencies
try:
import arch
print("โ
arch package available")
arch_available = True
except ImportError:
print("โ arch package not available")
print(" Install with: pip install arch")
arch_available = False
try:
import statsmodels
from statsmodels.tsa.arima.model import ARIMA
print("โ
statsmodels available")
statsmodels_available = True
except ImportError:
print("โ statsmodels not available")
print(" Install with: pip install statsmodels")
statsmodels_available = False
# Test module import
try:
from models.arima_garch_model import check_dependencies, ARIMAGARCHForecaster, check_statsmodels_available, check_arch_available
print("โ
arima_garch_model module available")
module_available = True
# Test individual dependency checks
print(f" Individual checks:")
print(f" - check_arch_available(): {check_arch_available()}")
print(f" - check_statsmodels_available(): {check_statsmodels_available()}")
except ImportError as e:
print(f"โ arima_garch_model module not available: {e}")
print(" Create models/arima_garch_model.py")
module_available = False
# Test dependencies function
if module_available:
try:
deps_result = check_dependencies()
print(f"โ
check_dependencies() result: {deps_result}")
# Use the actual dependency check result for overall status
overall_available = deps_result and module_available
except Exception as e:
print(f"โ check_dependencies() failed: {e}")
overall_available = False
else:
overall_available = False
# Overall status
print(f"\n๐ OVERALL STATUS:")
if overall_available:
print("โ
ARIMA-GARCH fully available")
else:
print("โ ARIMA-GARCH not fully available")
print("Missing or failing components:")
if not arch_available:
print(" - arch package")
if not statsmodels_available:
print(" - statsmodels package")
if not module_available:
print(" - arima_garch_model.py file")
if module_available and not deps_result:
print(" - dependency check failing")
return overall_available
def test_simple_forecast():
"""Test a simple ARIMA-GARCH forecast."""
print(f"\n๐ TESTING SIMPLE ARIMA-GARCH FORECAST")
print("=" * 50)
try:
from models.arima_garch_model import ARIMAGARCHForecaster
# Test with COIN (high volatility crypto - better for ARIMA-GARCH testing)
ticker = "COIN"
print(f"Testing with {ticker} (high volatility crypto)...")
forecaster = ARIMAGARCHForecaster(ticker)
data = forecaster.download_data(period="1y") # 1 year for better GARCH fitting
if data is not None and len(data) > 200: # Need more data for GARCH
print(f"โ
Data download successful: {len(data)} points")
# Try to fit model (this might take a moment)
print("Fitting ARIMA-GARCH model...")
model_info = forecaster.fit_hybrid_model()
print(f"โ
Model fitted: ARIMA{model_info['arima_order']}-GARCH{model_info['garch_order']}")
# Try forecast
forecast_result = forecaster.forecast()
print(f"โ
Forecast successful: ${forecast_result['price_forecast']:.2f}")
print(f" Last price: ${forecast_result['last_price']:.2f}")
print(f" Volatility forecast: {forecast_result['volatility_forecast']:.2f}%")
return True
else:
print(f"โ Insufficient data: {len(data) if data is not None else 0} points (need >200)")
return False
except Exception as e:
print(f"โ ARIMA-GARCH test failed: {e}")
import traceback
traceback.print_exc()
return False
def main():
"""Run all tests."""
# Test 1: Dependencies
deps_ok = test_imports()
if deps_ok:
# Test 2: Simple forecast
forecast_ok = test_simple_forecast()
if forecast_ok:
print(f"\n๐ ALL TESTS PASSED!")
print("ARIMA-GARCH is ready to use in enhanced_main.py")
else:
print(f"\nโ ๏ธ Dependencies OK but forecast failed")
print("Check ARIMA-GARCH implementation")
else:
print(f"\nโ DEPENDENCY ISSUES")
print("Fix dependencies before testing forecast")
if __name__ == "__main__":
main()