portfolio-optimization

- Citation Author(s):
- Submitted by:
- Antonio-Jose Martinez-Casares
- Last updated:
- DOI:
- 10.21227/z31c-2379
- Data Format:
- Links:
- Categories:
- Keywords:
Abstract
This paper investigates the integration of
deep learning-based volatility forecasting with portfolio
optimization strategies. We develop and evaluate a
framework that combines three neural architectures—
ResNet1D, WaveletCNN, and Temporal Convolutional
Autoencoder—with both classical mean-variance optimization and reinforcement learning approaches. Using
a comprehensive dataset spanning 2012-2025, we systematically analyze how different volatility-sentiment indicators (DIX, GEX, PCR, SKEW, VIX) and rebalancing
frequencies affect portfolio performance across eight
large-cap stocks. Our findings reveal that WaveletCNN
coupled with reinforcement learning achieves superior
raw returns (23.5% annually), while Markowitz optimization delivers more consistent risk-adjusted performance (σSharpe = 0.03 vs. σSharpe = 0.15 for RL). We identify clear temporal dynamics in strategy effectiveness,
with RL performing optimally at weekly rebalancing
intervals versus quarterly for Markowitz. Furthermore,
multi-factor combinations systematically outperform
single-factor approaches, with the DIX+GEX+SKEW
ensemble yielding a 26.6% annual return under semiannual rebalancing. The results demonstrate a fundamental trade-off between return maximization and outcome
consistency, with RL strategies generating positively
skewed return distributions (skewness = 1.43) versus
Markowitz’s more compact, near-normal distribution.
This research contributes to the growing intersection
of machine learning and quantitative finance, offering
practitioners evidence-based guidance for selecting
volatility forecasting architectures and optimization
strategies aligned with specific investment mandates
and risk preferences.
Instructions:
# Portfolio Optimization Framework with Deep Learning and Volatility Features
This project implements a comprehensive framework for optimizing investment portfolios using various deep learning models and market volatility indicators. It combines traditional financial optimization techniques (Markowitz) with modern machine learning approaches including ResNet, Wavelet CNN, and Temporal Convolutional Networks (TCN) Autoencoders.
## Features
- **Multiple Deep Learning Models**:
- ResNet1D for time series analysis
- Wavelet CNN for multi-resolution analysis
- TCN Autoencoder for sequence modeling with compressed representation
- **Portfolio Optimization Strategies**:
- Modern Portfolio Theory (Markowitz optimization)
- Reinforcement Learning with Proximal Policy Optimization (PPO)
- **Flexible Rebalancing Frequencies**:
- Daily, weekly, monthly, quarterly, semi-annual, and annual rebalancing periods
- **Market Volatility Features**:
- Combines stock market data with volatility indicators (DIX, GEX, SKEW, PCR, VIX)
- Tests different combinations of features to find optimal predictors
- **Parallel Processing**:
- Supports multi-core execution for faster feature combination testing
## Requirements
```
numpy>=1.19.0
pandas>=1.0.0
pytorch>=1.7.0
pywavelets>=1.1.0
scikit-learn>=0.23.0
gymnasium>=0.26.0
matplotlib>=3.3.0
seaborn>=0.11.0
joblib>=0.16.0
tqdm>=4.48.0
stable-baselines3>=1.0.0
pypfopt>=1.2.0
```
## Usage
1. **Data Preparation**:
- Place stock price data in CSV format with date column and ticker symbols
- Prepare volatility indicators in a separate CSV file
2. **Configuration**:
- Adjust `TICKERS` list to include desired stocks
- Configure `ALL_VOL_FEATURES` to include available volatility indicators
- Set appropriate `WINDOW` size for lookback period
3. **Execution**:
```python
python portfolio_optimization.py
```
4. **Analysis**:
- Results are saved in CSV format (`portfolio_results_v3.csv`)
- Performance visualizations are generated automatically
- The best performing portfolios are printed to console
## Key Components
### Data Processing
- Flexible data loading with case-insensitive column matching
- Time series alignment between price and volatility data
- Feature standardization and sliding window creation
### Neural Network Models
1. **ResNet1D**:
- 1D convolutional network with residual connections
- Effective for capturing temporal patterns in financial time series
2. **WaveletCNN**:
- Combines wavelet decomposition with CNN architecture
- Captures multi-frequency components in volatility signals
3. **TCNAutoencoder**:
- Encoder-decoder architecture with temporal convolutional blocks
- Compresses and reconstructs time series while extracting predictive features
### Optimization Strategies
1. **Markowitz Optimization**:
- Implements efficient frontier portfolio construction
- Uses robust covariance estimation (Ledoit-Wolf shrinkage)
2. **Reinforcement Learning**:
- Custom Gymnasium environment for portfolio management
- PPO algorithm for learning optimal allocation policies
## Output and Visualization
The framework generates several visualization files:
- `portfolio_values_by_strategy.png`: Comparing Markowitz vs. RL performance
- `portfolio_values_by_model.png`: Performance by model and rebalancing frequency
- `annual_returns.png`: Annual return comparison across models
## Example Results
The code produces comprehensive performance metrics including:
- Portfolio final values
- Sharpe ratios
- Annual returns
- Best feature combinations