"""
Integration Tests
Test the complete trading system workflow.
"""
import pytest
import pandas as pd
from models.arima_model import get_arima_forecast
from models.hybrid_model import train_xgboost_on_residuals
from src.trading.signal_generator import TradingSignalGenerator
class TestTradingSystemIntegration:
"""Test the complete trading system."""
def test_single_stock_analysis(self):
"""Test analysis of a single stock."""
ticker = 'AAPL'
# Test ARIMA forecast
arima_forecast, residuals, df = get_arima_forecast(ticker)
assert isinstance(arima_forecast, (int, float))
assert len(residuals) > 0
assert len(df) > 0
# Test XGBoost training
model, features = train_xgboost_on_residuals(residuals, df)
assert model is not None
assert len(features) > 0
# Test signal generation
generator = TradingSignalGenerator()
result = generator.analyze_stock(ticker)
assert result is not None
assert 'signal' in result
assert result['signal'] in ['BUY', 'SELL', 'HOLD']
def test_portfolio_analysis(self):
"""Test portfolio analysis."""
tickers = ['AAPL', 'MSFT']
generator = TradingSignalGenerator()
results = generator.analyze_portfolio(tickers)
assert len(results) <= len(tickers) # Some might fail
for result in results:
assert 'ticker' in result
assert 'signal' in result
assert 'confidence' in result