Edwin Salguero
Enhanced FRED ML with improved Reports & Insights page, fixed alignment analysis, and comprehensive analytics improvements
2469150
| #!/usr/bin/env python3 | |
| """ | |
| Test script to debug FRED API frequency parameter issue | |
| """ | |
| import os | |
| import sys | |
| import pandas as pd | |
| from datetime import datetime | |
| # Add src to path | |
| sys.path.append(os.path.join(os.path.dirname(__file__), 'src')) | |
| def test_enhanced_fred_client(): | |
| """Test the enhanced FRED client to identify frequency parameter issue""" | |
| print("=== TESTING ENHANCED FRED CLIENT ===") | |
| # Get API key | |
| api_key = os.getenv('FRED_API_KEY') | |
| if not api_key: | |
| print("β FRED_API_KEY not set") | |
| return | |
| try: | |
| from src.core.enhanced_fred_client import EnhancedFREDClient | |
| # Initialize client | |
| client = EnhancedFREDClient(api_key) | |
| # Test problematic indicators | |
| problematic_indicators = ['GDPC1', 'INDPRO', 'RSAFS'] | |
| print(f"\nTesting indicators: {problematic_indicators}") | |
| for indicator in problematic_indicators: | |
| print(f"\n--- Testing {indicator} ---") | |
| try: | |
| # Test direct series fetch | |
| series = client._fetch_series( | |
| indicator, | |
| '2020-01-01', | |
| '2024-12-31', | |
| 'auto' | |
| ) | |
| if series is not None and not series.empty: | |
| print(f"β {indicator}: Successfully fetched {len(series)} observations") | |
| print(f" Latest value: {series.iloc[-1]:.2f}") | |
| print(f" Date range: {series.index.min()} to {series.index.max()}") | |
| else: | |
| print(f"β {indicator}: No data returned") | |
| except Exception as e: | |
| print(f"β {indicator}: Error - {e}") | |
| # Test full data fetch | |
| print(f"\n--- Testing full data fetch ---") | |
| try: | |
| data = client.fetch_economic_data( | |
| indicators=problematic_indicators, | |
| start_date='2020-01-01', | |
| end_date='2024-12-31', | |
| frequency='auto' | |
| ) | |
| print(f"β Full data fetch successful") | |
| print(f" Shape: {data.shape}") | |
| print(f" Columns: {list(data.columns)}") | |
| print(f" Date range: {data.index.min()} to {data.index.max()}") | |
| # Show sample data | |
| print(f"\nSample data (last 3 observations):") | |
| print(data.tail(3)) | |
| except Exception as e: | |
| print(f"β Full data fetch failed: {e}") | |
| except Exception as e: | |
| print(f"β Failed to import or initialize EnhancedFREDClient: {e}") | |
| def test_fredapi_direct(): | |
| """Test fredapi library directly""" | |
| print("\n=== TESTING FREDAPI LIBRARY DIRECTLY ===") | |
| try: | |
| from fredapi import Fred | |
| api_key = os.getenv('FRED_API_KEY') | |
| if not api_key: | |
| print("β FRED_API_KEY not set") | |
| return | |
| fred = Fred(api_key=api_key) | |
| # Test problematic indicators | |
| problematic_indicators = ['GDPC1', 'INDPRO', 'RSAFS'] | |
| for indicator in problematic_indicators: | |
| print(f"\n--- Testing {indicator} with fredapi ---") | |
| try: | |
| # Test without any frequency parameter | |
| series = fred.get_series( | |
| indicator, | |
| observation_start='2020-01-01', | |
| observation_end='2024-12-31' | |
| ) | |
| if not series.empty: | |
| print(f"β {indicator}: Successfully fetched {len(series)} observations") | |
| print(f" Latest value: {series.iloc[-1]:.2f}") | |
| print(f" Date range: {series.index.min()} to {series.index.max()}") | |
| else: | |
| print(f"β {indicator}: No data returned") | |
| except Exception as e: | |
| print(f"β {indicator}: Error - {e}") | |
| except Exception as e: | |
| print(f"β Failed to test fredapi directly: {e}") | |
| if __name__ == "__main__": | |
| test_enhanced_fred_client() | |
| test_fredapi_direct() |