Skip to content

hb84ffm/mean-variance-portfolio

Repository files navigation

mean_variance_portfolio

A Python package for simulating stocks & performing mean variance portfolio optimization.

FEATURES

  • Simulates stock prices following a geometric Brownian motion
  • Computes stock returns (daily & yearly), covariance of returns & supports reinvesting or extracting returns during timeframe
  • Searches optimal weights to maximize returns, subject to sigma_target (portfolio risk)
  • Visualizes stock trajectories, performance of optimal weights VS equal weights as well as overall portfolio return & risk

REQUIREMENTS

  • Python 3.11+ (tested with 3.11.9)
  • Required dependencies (see requirements.txt for details): numpy==2.1.3 scipy==1.16.0 matplotlib==3.10.5 seaborn==0.13.2

INSTALLATION

  1. Clone the repository: git clone https://github.com/hb84ffm/mean_variance_portfolio.git cd mean_variance_portfolio

  2. Create & activate your virtual environment: python3 -m venv venv source venv/bin/activate # On Mac/Linux venv\Scripts\activate # On Windows

  3. Install dependencies: pip install -r requirements.txt

USAGE

  1. Import the package (to jupyter or python)

  2. Instantiate the main class with all required parameters

  3. Call run() method on the instantiated class to simulate & optimize

PACKAGE STRUCTURE

mean_variance_portfolio/
├─── __init__.py
├─── main.py                   # Orchestrates the simulation, optimization & plotting of charts
├─── optimizer/
     ├─── __init__.py
     ├─── optimizer.py         # Finds optimal weights to maximize returns s.t. sigma_target
├─── portfolio/         
     ├─── __init__.py
     ├─── portfolio.py         # Calculates portfolio metrics (returns, covariance of returns, etc.)
├─── example/
     ├─── example.ipynb        # Jupyter notebook to describe installation/setup
├── stocks/                  
     ├── __init__.py
     ├─── stocks.py            # Stock simulation
├── visualization/                   
     ├─── __init__.py
     ├─── visualization.py     # Creates charts to see resuts & compare strategies (equal weights VS optimized)

EXAMPLE WORKFLOW

See provided Jupyter notebook example.ipynb for explanation.

AUTHOR

For questions or feedback reach out via: GitHub.

About

A package to maximise portfolio returns given a predefined portfolio risk

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages