https://github.com/pratycodes/fintrix
Fintrix is a quant-driven portfolio optimization framework that combines market-aware synthetic data generation using Diffusion Models (DDPMs) with reinforcement learning via PPO, seamlessly integrated into a comprehensive benchmark evaluation pipeline.
https://github.com/pratycodes/fintrix
diffusion-models portfolio-optimisation quantitative-research reinforcement-learning
Last synced: 2 months ago
JSON representation
Fintrix is a quant-driven portfolio optimization framework that combines market-aware synthetic data generation using Diffusion Models (DDPMs) with reinforcement learning via PPO, seamlessly integrated into a comprehensive benchmark evaluation pipeline.
- Host: GitHub
- URL: https://github.com/pratycodes/fintrix
- Owner: pratycodes
- License: mit
- Created: 2025-04-14T06:12:56.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-08-22T09:26:29.000Z (10 months ago)
- Last Synced: 2025-08-22T11:39:40.059Z (10 months ago)
- Topics: diffusion-models, portfolio-optimisation, quantitative-research, reinforcement-learning
- Language: Jupyter Notebook
- Homepage:
- Size: 72 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Fintrix: Reinforcement Learning Portfolio Optimization System
**Fintrix** is a modular, research-grade framework for training and evaluating reinforcement learning-based portfolio allocation strategies. It is powered by Proximal Policy Optimization (PPO) and integrates synthetic financial data generation using Denoising Diffusion Probabilistic Models (DDPM). Designed to be interpretable, extensible, and robust, Fintrix is an ideal tool for researchers, quants, and AI engineers looking to build smarter financial agents.
---
## ๐ Core Objectives
* Generate realistic financial data via regime-aware DDPM models
* Learn dynamic portfolio strategies that adapt to changing market regimes
* Optimize allocations using advanced reinforcement learning methods (PPO)
* Incorporate real-world constraints: transaction costs, position limits, diversification
* Provide an explainable pipeline with regime attribution, allocation diagnostics, and benchmarking
---
## ๐ Key Features
### Reinforcement Learning (PPO)
* Actor-critic architecture with clipped objective
* Supports stochastic policies and continuous action spaces (portfolio weights)
### Synthetic Data via DDPM
* Trains on regime-conditioned time series sequences
* Simulates different risk scenarios with volatility control
* Generates training environments that reflect real-world non-stationarity
### Market Regime Detection
* Real-time regime classification (bull, bear, volatile, sideways)
* Driven by rolling returns, volatility, and trend strength metrics
* Used to modulate both reward shaping and asset exposure
### Position Sizing & Timing
* Implements Kelly Criterion (multi-timeframe version)
* Dynamically adjusts exposure using market timing layer
* Enforces risk-aware soft and hard constraints (min/max allocation)
### Feature Engineering
* Momentum, volatility, SMA, RSI, trend score (per asset & market)
* Correlation matrix descriptors
* Regime indicators embedded in observations
### Rebalancing Engine
* Rebalances only when drift exceeds threshold or max holding time reached
* Transaction cost-aware allocation logic
* Penalizes overtrading and unnecessary weight shifts
### Benchmark-Aware Reward Function
* Encourages outperformance relative to index
* Penalizes volatility, drawdowns, and costs
* Promotes steady compounding rather than explosive bets
---
## ๐งฑ Repository Structure
```
Fintrix/
โโโ assets/ # Charts, diagrams, performance outputs
โโโ config/ # Training configs and constants
โโโ data/ # Data loader, feature calculator, DDPM pipeline
โโโ ddpm/ # DDPM model, trainer, denoiser
โโโ env/ # Portfolio environment (Gymnasium-style)
โโโ market/ # Kelly sizing, market regimes, timing layer
โโโ models/ # PPO agent: policy & value nets
โโโ scripts/ # Faster execution script
โโโ utils/ # Plotting, logging, metrics
โโโ tests/ # Unit & integration tests
โโโ main.py # Main entry point
โโโ requirements.txt # Required libraries
โโโ README.md # This file
```
---
## โ
Installation
### Prerequisites:
* Python 3.10+
### Create Environment:
```bash
git clone https://github.com/yourusername/fintrix.git
cd fintrix
conda create -n fintrix python=3.10
conda activate fintrix
pip install -r requirements.txt
```
---
## ๐งช Running an Experiment
```bash
python main.py
```
This will:
* Detect your market region
* Download historical price data
* Train a DDPM to simulate financial time series
* Generate enhanced training sets
* Train a PPO agent using synthetic + real data
* Evaluate final policy on real data only
* Output performance metrics and plots
---
## Sample Output
### Cumulative Returns

### Allocation Pie Chart

---
## ๐ง Configuration Overview
Edit `config/config.py`:
```python
SELECTED_TICKERS = ["AAPL", "MSFT", "AMZN", "GOOGL", "JPM", "XOM"]
BENCHMARK_INDEX = "^GSPC"
START_DATE = "2010-01-01"
END_DATE = "2024-01-01"
DDPM_EPOCHS = 50
RL_EPISODES = 200
MAX_POSITION_SIZE = 0.25
REBALANCE_THRESHOLD = 0.025
```
---
## ๐งช Unit Testing
```bash
pytest tests/
```
Includes:
* `test_env.py` โ environment reset/step validation
* `test_ddpm.py` โ DDPM forward shape check
* `test_ppo.py` โ action, log-prob, value shape integrity
---
## Future Extensions
* Incorporate **financial news and sentiment data** for context-aware allocation
* Add **multi-agent framework** (long-short strategies)
* Integrate **live broker APIs** (e.g. Alpaca, Zerodha Kite)
* Support **multi-objective RL** (risk-adjusted vs. absolute return)
* Add **experiment tracking tools** (W\&B, MLflow)
---
## โ ๏ธ Disclaimer
> Fintrix is developed strictly for **educational and research purposes**.
>
> **Do NOT use Fintrix for live or real-money trading.**
>
> There are no guarantees of future performance, reliability, or correctness. Use entirely at your own risk.
---
## ๐ License
MIT License. See [LICENSE](LICENSE) for full details.
---
## Connect
* GitHub: [github.com/pratycodes](https://github.com/pratycodes)
* LinkedIn: [linkedin.com/in/pratyush-baliarsingh/](https://www.linkedin.com/in/pratyush-baliarsingh/)
* Email: [pratyush.baliarsingh2004@gmail.com](mailto:pratyush.baliarsingh2004@gmail.com)