| # FRED ML - Federal Reserve Economic Data Machine Learning System | |
| A comprehensive Machine Learning system for analyzing Federal Reserve Economic Data (FRED) with automated data processing, advanced analytics, and interactive visualizations. | |
| ## ๐ Features | |
| ### Core Capabilities | |
| - **๐ Real-time Data Processing**: Automated FRED API integration with enhanced client | |
| - **๐ Data Quality Assessment**: Comprehensive data validation and quality metrics | |
| - **๐ Automated Workflows**: CI/CD pipeline with quality gates | |
| - **โ๏ธ Cloud-Native**: AWS Lambda and S3 integration | |
| - **๐งช Comprehensive Testing**: Unit, integration, and E2E tests | |
| ### Advanced Analytics | |
| - **๐ค Statistical Modeling**: | |
| - Linear regression with lagged variables | |
| - Correlation analysis (Pearson, Spearman, Kendall) | |
| - Granger causality testing | |
| - Comprehensive diagnostic testing (normality, homoscedasticity, autocorrelation, multicollinearity) | |
| - Principal Component Analysis (PCA) | |
| - **๐ฎ Time Series Forecasting**: | |
| - ARIMA models with automatic order selection | |
| - Exponential Smoothing (ETS) models | |
| - Stationarity testing (ADF, KPSS) | |
| - Time series decomposition (trend, seasonal, residual) | |
| - Backtesting with performance metrics (MAE, RMSE, MAPE) | |
| - Confidence intervals and uncertainty quantification | |
| - **๐ฏ Economic Segmentation**: | |
| - Time period clustering (economic regimes) | |
| - Series clustering (behavioral patterns) | |
| - K-means and hierarchical clustering | |
| - Optimal cluster detection (elbow method, silhouette analysis) | |
| - Dimensionality reduction (PCA, t-SNE) | |
| - **๐ Interactive Visualizations**: Dynamic charts and dashboards | |
| - **๐ก Comprehensive Insights**: Automated insights extraction and key findings identification | |
| ## ๐ Project Structure | |
| ``` | |
| FRED_ML/ | |
| โโโ ๐ src/ # Core application code | |
| โ โโโ ๐ core/ # Core pipeline components | |
| โ โโโ ๐ analysis/ # Economic analysis modules | |
| โ โโโ ๐ visualization/ # Data visualization components | |
| โ โโโ ๐ lambda/ # AWS Lambda functions | |
| โโโ ๐ scripts/ # Utility and demo scripts | |
| โ โโโ ๐ streamlit_demo.py # Interactive Streamlit demo | |
| โ โโโ ๐ run_tests.py # Test runner | |
| โ โโโ ๐ simple_demo.py # Command-line demo | |
| โโโ ๐ tests/ # Comprehensive test suite | |
| โ โโโ ๐ unit/ # Unit tests | |
| โ โโโ ๐ integration/ # Integration tests | |
| โ โโโ ๐ e2e/ # End-to-end tests | |
| โโโ ๐ docs/ # Documentation | |
| โ โโโ ๐ api/ # API documentation | |
| โ โโโ ๐ architecture/ # System architecture docs | |
| โ โโโ ๐ CONVERSATION_SUMMARY.md | |
| โโโ ๐ config/ # Configuration files | |
| โโโ ๐ data/ # Data storage | |
| โ โโโ ๐ raw/ # Raw data files | |
| โ โโโ ๐ processed/ # Processed data | |
| โ โโโ ๐ exports/ # Generated exports | |
| โโโ ๐ deploy/ # Deployment configurations | |
| โ โโโ ๐ docker/ # Docker configurations | |
| โ โโโ ๐ kubernetes/ # Kubernetes manifests | |
| โ โโโ ๐ helm/ # Helm charts | |
| โโโ ๐ infrastructure/ # Infrastructure as code | |
| โ โโโ ๐ ci-cd/ # CI/CD configurations | |
| โ โโโ ๐ monitoring/ # Monitoring setup | |
| โ โโโ ๐ alerts/ # Alert configurations | |
| โโโ ๐ .github/workflows/ # GitHub Actions workflows | |
| โโโ ๐ requirements.txt # Python dependencies | |
| โโโ ๐ pyproject.toml # Project configuration | |
| โโโ ๐ Dockerfile # Container configuration | |
| โโโ ๐ Makefile # Build automation | |
| โโโ ๐ README.md # This file | |
| ``` | |
| ## ๐ ๏ธ Quick Start | |
| ### Prerequisites | |
| - Python 3.8+ | |
| - AWS Account (for cloud features) | |
| - FRED API Key | |
| ### Installation | |
| 1. **Clone the repository** | |
| You can clone from any of the following remotes: | |
| ```bash | |
| # ParallelLLC Hugging Face | |
| git clone https://huggingface.co/ParallelLLC/FREDML | |
| ``` | |
| cd FRED_ML | |
| ``` | |
| 2. **Install dependencies** | |
| ```bash | |
| pip install -r requirements.txt | |
| ``` | |
| 3. **Set up environment variables** | |
| ```bash | |
| export AWS_ACCESS_KEY_ID="your_access_key" | |
| export AWS_SECRET_ACCESS_KEY="your_secret_key" | |
| export AWS_DEFAULT_REGION="us-east-1" | |
| export FRED_API_KEY="your_fred_api_key" | |
| ``` | |
| 4. **Set up FRED API (Optional but Recommended)** | |
| ```bash | |
| # Run setup wizard | |
| python frontend/setup_fred.py | |
| # Test your FRED API key | |
| python frontend/test_fred_api.py | |
| ``` | |
| 5. **Run the interactive demo** | |
| ```bash | |
| streamlit run scripts/streamlit_demo.py | |
| ``` | |
| ## ๐งช Testing | |
| ### Run all tests | |
| ```bash | |
| python scripts/run_tests.py | |
| ``` | |
| ### Run specific test types | |
| ```bash | |
| # Unit tests | |
| python -m pytest tests/unit/ | |
| # Integration tests | |
| python -m pytest tests/integration/ | |
| # End-to-end tests | |
| python -m pytest tests/e2e/ | |
| ``` | |
| ### Development testing | |
| ```bash | |
| python scripts/test_dev.py | |
| ``` | |
| ## ๐ Deployment | |
| ### Local Development | |
| ```bash | |
| # Start development environment | |
| python scripts/dev_setup.py | |
| # Run development tests | |
| python scripts/run_dev_tests.py | |
| ``` | |
| ### Streamlit Cloud Deployment (Free) | |
| ```bash | |
| # 1. Push to GitHub | |
| git add . | |
| git commit -m "Prepare for Streamlit Cloud deployment" | |
| git push origin main | |
| # 2. Deploy to Streamlit Cloud | |
| # Go to https://share.streamlit.io/ | |
| # Connect your GitHub repository | |
| # Set main file path to: streamlit_app.py | |
| # Add environment variables for FRED_API_KEY and AWS credentials | |
| ``` | |
| ### Production Deployment | |
| ```bash | |
| # Deploy to AWS | |
| python scripts/deploy_aws.py | |
| # Deploy complete system | |
| python scripts/deploy_complete.py | |
| ``` | |
| ## ๐ Demo Applications | |
| ### Interactive Streamlit Demo | |
| ```bash | |
| streamlit run scripts/streamlit_demo.py | |
| ``` | |
| Access at: http://localhost:8501 | |
| ### Command-line Demo | |
| ```bash | |
| python scripts/simple_demo.py | |
| ``` | |
| ### Advanced Analytics Demo | |
| ```bash | |
| # Run comprehensive analytics demo | |
| python scripts/comprehensive_demo.py | |
| # Run advanced analytics pipeline | |
| python scripts/run_advanced_analytics.py --indicators GDPC1 INDPRO RSAFS --forecast-periods 4 | |
| # Run with custom parameters | |
| python scripts/run_advanced_analytics.py \ | |
| --indicators GDPC1 INDPRO RSAFS CPIAUCSL FEDFUNDS DGS10 \ | |
| --start-date 2010-01-01 \ | |
| --end-date 2024-01-01 \ | |
| --forecast-periods 8 \ | |
| --output-dir data/exports/advanced_analysis | |
| ``` | |
| ## ๐ง Configuration | |
| ### Real vs Demo Data | |
| The application supports two modes: | |
| #### ๐ฏ Real FRED Data (Recommended) | |
| - **Requires**: Free FRED API key from https://fred.stlouisfed.org/docs/api/api_key.html | |
| - **Features**: Live economic data, real-time insights, actual forecasts | |
| - **Setup**: | |
| ```bash | |
| export FRED_API_KEY="your-actual-api-key" | |
| python frontend/test_fred_api.py # Test your key | |
| ``` | |
| #### ๐ Demo Data (Fallback) | |
| - **Features**: Realistic economic data for demonstration | |
| - **Use case**: When API key is not available or for testing | |
| - **Data**: Generated based on historical patterns and economic principles | |
| ### Environment Variables | |
| - `AWS_ACCESS_KEY_ID`: AWS access key | |
| - `AWS_SECRET_ACCESS_KEY`: AWS secret key | |
| - `AWS_DEFAULT_REGION`: AWS region (default: us-east-1) | |
| - `FRED_API_KEY`: FRED API key (get free key from FRED website) | |
| ### Configuration Files | |
| - `config/pipeline.yaml`: Pipeline configuration | |
| - `config/settings.py`: Application settings | |
| ## ๐ System Architecture | |
| ### Components | |
| - **Frontend**: Streamlit interactive dashboard | |
| - **Backend**: AWS Lambda serverless functions | |
| - **Storage**: AWS S3 for data persistence | |
| - **Scheduling**: EventBridge for automated triggers | |
| - **Data Source**: FRED API for economic indicators | |
| ### Data Flow | |
| ``` | |
| FRED API โ AWS Lambda โ S3 Storage โ Streamlit Dashboard | |
| โ | |
| EventBridge (Scheduling) | |
| โ | |
| CloudWatch (Monitoring) | |
| ``` | |
| ## ๐งช Testing Strategy | |
| ### Test Types | |
| - **Unit Tests**: Individual component testing | |
| - **Integration Tests**: API and data flow testing | |
| - **End-to-End Tests**: Complete system workflow testing | |
| ### Coverage | |
| - Core pipeline components: 100% | |
| - API integrations: 100% | |
| - Data processing: 100% | |
| - Visualization components: 100% | |
| ## ๐ CI/CD Pipeline | |
| ### GitHub Actions Workflows | |
| - **Main Pipeline**: Production deployments | |
| - **Pull Request Checks**: Code quality validation | |
| - **Scheduled Maintenance**: Automated updates | |
| - **Release Management**: Version control | |
| ### Quality Gates | |
| - Automated testing | |
| - Code linting and formatting | |
| - Security vulnerability scanning | |
| - Documentation generation | |
| ## ๐ Documentation | |
| - [API Documentation](docs/api/) | |
| - [Architecture Guide](docs/architecture/) | |
| - [Deployment Guide](docs/deployment/) | |
| - [User Guide](docs/user-guide/) | |
| - [Conversation Summary](docs/CONVERSATION_SUMMARY.md) | |
| ## ๐ค Contributing | |
| 1. Fork the repository | |
| 2. Create a feature branch | |
| 3. Make your changes | |
| 4. Run tests: `python scripts/run_tests.py` | |
| 5. Submit a pull request | |
| ## ๐ License | |
| This project is licensed under the Apache 2.0 License. | |
| ## ๐ Support | |
| For support and questions: | |
| - Create an issue on GitHub | |
| - Check the [documentation](docs/) | |
| - Review the [conversation summary](docs/CONVERSATION_SUMMARY.md) | |
| --- | |
| **FRED ML** - Transforming economic data analysis with machine learning and automation. | |