Skip to content

Repository files navigation

๐Ÿš€ Project Alpha-RL: Regime-Aware Portfolio Optimization

An Informed RL Agent for Portfolio Optimization

Western AI โ€“ 2025-2026 Project

Dataset: https://drive.google.com/drive/folders/1DzsK6fLDA-q-fbjGWCoMtdj4BDn_JrkO?usp=sharing

Python 3.10+ License: MIT PRs Welcome

Western AI โ€“ 2025-2026 Research Project


Overview

This project develops a state-of-the-art AI trading agent that makes portfolio allocation decisions using:

Module Technology Purpose
๐Ÿ”ฎ DeepAR Probabilistic LSTM Forecasts returns with uncertainty estimates
๐ŸŒ FRED API Federal Reserve Data Tracks macro-economic regimes (VIX, yield curve, Fed rate)
๐Ÿ“ฐ FinBERT Transformer NLP Extracts sentiment from financial news (planned)
๐Ÿง  PPO Agent Reinforcement Learning Makes portfolio allocation decisions

The agent observes a 64-dimensional "Super-State" combining forecasts, macro data, and sentiment to make regime-aware investment decisions.


Key Features

  • Probabilistic Forecasting: Not just "price will be $150" but "90% chance between $145-$155"
  • Regime Awareness: Agent adapts strategy based on economic conditions (bull/bear/crisis)
  • Uncertainty-Aware: Takes smaller positions when forecasts are uncertain
  • ReST Training: Novel "Grow/Improve" methodology adapted from language modeling

Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                         PPO AGENT (Brain)                           โ”‚
โ”‚                     Outputs: Portfolio Weights                      โ”‚
โ”‚                   [AAPL: 0.3, MSFT: 0.5, CASH: 0.2]                โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                    โ–ฒ
                    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                    โ”‚               โ”‚               โ”‚
            โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
            โ”‚   DeepAR      โ”‚ โ”‚  FinBERT  โ”‚ โ”‚  FRED API     โ”‚
            โ”‚  (Forecaster) โ”‚ โ”‚   (NLP)   โ”‚ โ”‚ (Macro Data)  โ”‚
            โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                    โ”‚               โ”‚               โ”‚
            โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
            โ”‚ Price History โ”‚ โ”‚   News    โ”‚ โ”‚ VIX, Yields,  โ”‚
            โ”‚ OHLCV Data    โ”‚ โ”‚ Articles  โ”‚ โ”‚ Fed Rates     โ”‚
            โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€๏ฟฝ๏ฟฝ๏ฟฝโ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Project Status

Component Status Description
DeepAR Model โœ… Complete Trained on 9 securities, 60-day context
FRED Data โœ… Complete VIX, Yield Curve, Fed Funds Rate
SuperStateBuilder โœ… Complete 64-dim observation vector
PortfolioEnv โœ… Complete Gymnasium-compliant trading environment
PPO Training ๐Ÿ”„ In Progress ReST training methodology
FinBERT Sentiment ๐Ÿ“‹ Planned NLP module
Dashboard ๐Ÿ“‹ Planned React/Streamlit visualization

Quick Start

Prerequisites

  • Python 3.10+
  • UV (recommended) or pip

Installation

# Clone the repository
git clone https://github.com/Western-Artificial-Intelligence/rl-portfolio-optimization.git
cd rl-portfolio-optimization

# Create virtual environment with UV
uv venv
.venv\Scripts\activate  # Windows
source .venv/bin/activate  # macOS/Linux

# Install dependencies
uv sync

Run DeepAR Training

# Train the forecasting model
uv run python deepAR/train_deepar.py --epochs 30

Test the Environment

# Test SuperStateBuilder
python -m ppo.super_state

# Test PortfolioEnv
python -c "
import pandas as pd
from backtesting.core.PortfolioEnv import PortfolioEnv

df = pd.read_csv('data/deepar_dataset.csv')
env = PortfolioEnv(df=df, use_super_state=True)
obs, info = env.reset()
print(f'Observation shape: {obs.shape}')  # (64,)
print('โœ“ Environment ready!')
"

Project Structure

Portfolio-Optimizer/
โ”œโ”€โ”€ ๐Ÿ“ data/                     # Market data
โ”‚   โ”œโ”€โ”€ FRED/                    # Macro-economic data
โ”‚   โ”‚   โ”œโ”€โ”€ VIXCLS.csv          # VIX volatility index
โ”‚   โ”‚   โ”œโ”€โ”€ T10Y2Y.csv          # Yield curve spread
โ”‚   โ”‚   โ””โ”€โ”€ FEDFUNDS.csv        # Federal funds rate
โ”‚   โ”œโ”€โ”€ deepar_dataset.csv      # Processed training data
โ”‚   โ””โ”€โ”€ *.csv                   # Price data files
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ deepAR/                   # Forecasting module
โ”‚   โ”œโ”€โ”€ model.py                # DeepARModel + DeepARForecaster
โ”‚   โ”œโ”€โ”€ train_deepar.py         # Training pipeline
โ”‚   โ””โ”€โ”€ preprocessing.py        # Data utilities
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ ppo/                      # RL Agent module
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ””โ”€โ”€ super_state.py          # SuperStateBuilder class
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ backtesting/              # Trading environment
โ”‚   โ””โ”€โ”€ core/
โ”‚       โ””โ”€โ”€ PortfolioEnv.py     # Gymnasium environment
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ checkpoints/              # Saved models
โ”‚   โ””โ”€โ”€ deepar/
โ”‚       โ”œโ”€โ”€ deepar_best.pt      # Best validation model
โ”‚       โ””โ”€โ”€ training_summary.json
โ”‚
โ”œโ”€โ”€ ๐Ÿ“ tests/                    # Unit tests
โ”‚   โ”œโ”€โ”€ test_super_state.py
โ”‚   โ””โ”€โ”€ test_portfolio_env.py
โ”‚
โ””โ”€โ”€ ๐Ÿ“ docs/                     # Documentation
    โ””โ”€โ”€ ARCHITECTURE.md

Super-State Vector

The agent observes a 64-dimensional vector at each step:

Index Features Count Source
0-53 Per-stock forecasts (mean, std, skew, confidence, q10, q90) 54 DeepAR
54-59 Macro indicators (VIX, yield curve, fed rate) 6 FRED
60-63 Sentiment placeholders 4 FinBERT (TBD)

All values are normalized to [-1, 1] range for stable training.


Securities Tracked

The DeepAR model is trained on 9 securities:

Symbol Name Type
AAPL Apple Inc. Stock
AMZN Amazon.com Inc. Stock
META Meta Platforms Inc. Stock
MSFT Microsoft Corp. Stock
NVDA NVIDIA Corp. Stock
TSLA Tesla Inc. Stock
NDX NASDAQ-100 Index Index
SPX S&P 500 Index Index
PSQ ProShares Short QQQ Inverse ETF

Tech Stack

Category Technologies
ML/RL PyTorch, Stable-Baselines3, Gymnasium
Data Pandas, NumPy, SciPy
Finance Bloomberg API, FRED API
NLP FinBERT, Transformers
DevOps UV, pytest, Git

References

  1. DeepAR: Salinas et al., "DeepAR: Probabilistic Forecasting with Autoregressive Recurrent Networks"
  2. PPO: Schulman et al., "Proximal Policy Optimization Algorithms"
  3. ReST: Gulcehre et al., "Reinforced Self-Training (ReST) for Language Modeling"
  4. FinBERT: Araci, "FinBERT: Financial Sentiment Analysis with Pre-trained Language Models"

Team

Western AI Research Group โ€“ 2025-2026


License

This project is licensed under the MIT License - see the LICENSE file for details.


About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages