test_working_system.py•4.99 kB
# test_working_system.py - Test your working models
def test_working_models():
"""Test the working models without pmdarima."""
print("🚀 Testing Working Trading Models")
print("=" * 50)
try:
# Test imports
from models.arima_model import get_arima_forecast, get_enhanced_arima_forecast
from models.hybrid_model import train_xgboost_on_residuals
print("✅ Model imports successful")
# Test basic functionality
ticker = 'AAPL'
print(f"\n📊 Testing with {ticker}...")
# Get ARIMA forecast
arima_forecast, residuals, df = get_arima_forecast(ticker)
print(f"✅ ARIMA forecast: ${arima_forecast:.2f}")
# Train XGBoost on residuals
xgb_model, latest_features = train_xgboost_on_residuals(residuals, df)
# Make hybrid prediction
residual_correction = xgb_model.predict(latest_features)[0]
hybrid_forecast = arima_forecast + residual_correction
last_price = df['Close'].iloc[-1]
change = (hybrid_forecast - last_price) / last_price
print(f"\n📈 RESULTS:")
print(f"✅ Last price: ${last_price:.2f}")
print(f"✅ ARIMA forecast: ${arima_forecast:.2f}")
print(f"✅ Residual correction: {residual_correction:.4f}")
print(f"✅ Hybrid forecast: ${hybrid_forecast:.2f}")
print(f"✅ Expected change: {change:+.2%}")
# Generate signal
if change > 0.02:
signal = "🟢 BUY"
elif change < -0.02:
signal = "🔴 SELL"
else:
signal = "🟡 HOLD"
print(f"✅ Trading Signal: {signal}")
# Test enhanced version
print(f"\n🔬 Testing Enhanced ARIMA...")
enhanced_results = get_enhanced_arima_forecast(ticker, n_periods=1)
if enhanced_results:
enhanced_forecast = enhanced_results['forecast_results']['forecasts'].iloc[0]
print(f"✅ Enhanced ARIMA forecast: ${enhanced_forecast:.2f}")
print(f"✅ Model diagnostics: RMSE={enhanced_results['diagnostics']['rmse']:.4f}")
print(f"\n🎉 ALL TESTS PASSED! Your trading system is ready.")
return True
except Exception as e:
print(f"❌ Test failed: {e}")
import traceback
traceback.print_exc()
return False
def test_multiple_tickers():
"""Test with multiple tickers."""
print("\n🔄 Testing Multiple Tickers...")
print("-" * 40)
tickers = ['AAPL', 'MSFT', 'GOOGL']
results = []
for ticker in tickers:
try:
from models.arima_model import get_arima_forecast
from models.hybrid_model import train_xgboost_on_residuals
print(f"\n📊 Analyzing {ticker}...")
arima_forecast, residuals, df = get_arima_forecast(ticker)
xgb_model, latest_features = train_xgboost_on_residuals(residuals, df)
residual_correction = xgb_model.predict(latest_features)[0]
hybrid_forecast = arima_forecast + residual_correction
last_price = df['Close'].iloc[-1]
change = (hybrid_forecast - last_price) / last_price
if change > 0.02:
signal = "BUY"
elif change < -0.02:
signal = "SELL"
else:
signal = "HOLD"
results.append({
'ticker': ticker,
'last_price': last_price,
'forecast': hybrid_forecast,
'change': change,
'signal': signal
})
print(f"✅ {ticker}: {signal} ({change:+.2%})")
except Exception as e:
print(f"❌ {ticker} failed: {e}")
print(f"\n📋 SUMMARY:")
print("-" * 40)
for result in results:
emoji = "🟢" if result['signal'] == "BUY" else "🔴" if result['signal'] == "SELL" else "🟡"
print(f"{emoji} {result['ticker']}: ${result['last_price']:.2f} → ${result['forecast']:.2f} ({result['change']:+.2%})")
return len(results) == len(tickers)
if __name__ == "__main__":
print("🚀 WORKING TRADING SYSTEM TEST")
print("=" * 60)
# Test single ticker
success1 = test_working_models()
if success1:
# Test multiple tickers
success2 = test_multiple_tickers()
if success2:
print(f"\n🎉 COMPLETE SUCCESS!")
print("Your trading system is fully operational.")
print("\nNext: Run the full enhanced main.py for comprehensive analysis!")
else:
print(f"\n⚠️ Basic functionality works, some tickers had issues.")
else:
print(f"\n❌ System needs debugging.")
print("Check that you've copied the model files correctly.")