- Chen Jin Leonardo
- Stefan Oshchypok
- Lara Gerlach
- Raquel Diaz Chavez
Use the project management script to set up and execute algorithms. Walkthrough:
- Setup the Project
python3 manager --setupOther script's commands in help:
python3 manager -h- Optimize portfolio
python3 -m pop -t ga -n 25- To see optimization options:
python3 -m pop --helpPortfolio optimization is a fundamental challenge in investment management, focusing on allocating capital among assets to maximize returns while minimizing risk. This problem is crucial for both institutional investors managing billions of dollars and individuals growing their savings.
Traditional approaches like Markowitz's mean-variance optimization rely on restrictive assumptions, such as normally distributed asset returns. Evolutionary Algorithms provide a compelling alternative, offering several advantages:
- Ability to handle non-linear, non-convex, and multi-modal optimization landscapes
- Relaxation of strict assumptions required by classical methods
- Incorporation of real-world constraints (transaction costs, portfolio turnover, market dynamics)
Portfolio optimization involves numerous variables, but our implementation focuses on a simplified yet effective approach.
- Budget Constraint: Portfolio weights must sum to 1 (Σ weights = 1), ensuring the budget cannot be exceeded
- No Short Selling: All weights must be non-negative (weights ≥ 0), eliminating the complexity of selling assets before purchase
- Position Limits: Individual asset weights cannot exceed maximum allocation thresholds [0.05, 0.10], promoting portfolio diversity and preventing single-asset dominance
- Maximize Risk-Adjusted Returns: Measured through the Sharpe ratio, which quantifies the relationship between returns and volatility
- Dataset: Stock Market Dataset (Kaggle)
- Reference Implementation: Portfolio Optimization using Genetic Algorithm (GitHub)
- Examples: Teacher repo