Skip to main content

Professional portfolio analysis tools for DIY investors

Project description

Portfolio-Analysis

Open-source portfolio analysis tools for DIY investors and finance enthusiasts. This repository aims to provide a comprehensive suite of tools to analyze and optimize investment portfolios, with an emphasis on transparency, flexibility, and extensibility.

Quick Start

Try Online (No Installation)

Google Colab Notebooks:

Install as Python Package

pip install portfolio-analysis

Or install from source with all features:

git clone https://github.com/engineerinvestor/Portfolio-Analysis.git
cd Portfolio-Analysis
pip install -e ".[all]"

Run the Streamlit Web App

pip install -r requirements-streamlit.txt
streamlit run streamlit_app/app.py

Features

Core Analysis

  • Performance Metrics: Annual return, volatility, Sharpe ratio, Sortino ratio, max drawdown, VaR
  • Portfolio Analysis: Weighted returns, covariance-based volatility, cumulative returns
  • Monte Carlo Simulation: Project future portfolio values with confidence intervals
  • Benchmark Comparison: Alpha, beta, tracking error, information ratio, capture ratios

Optimization

  • Maximum Sharpe Ratio portfolio
  • Minimum Volatility portfolio
  • Risk Parity (equal risk contribution)
  • Target Return optimization
  • Efficient Frontier visualization

Interactive Tools

  • Jupyter widgets for Colab/notebook analysis
  • Streamlit web application
  • Preset portfolios (60/40, Three-Fund, All-Weather, etc.)

Usage Examples

Python Package

from portfolio_analysis import DataLoader, PortfolioAnalysis, MonteCarloSimulation

# Load data
loader = DataLoader(['VTI', 'VXUS', 'BND'], '2018-01-01', '2024-01-01')
data = loader.fetch_data()

# Analyze portfolio
portfolio = PortfolioAnalysis(data, weights=[0.4, 0.2, 0.4])
portfolio.print_summary()

# Run Monte Carlo simulation
mc = MonteCarloSimulation(data, weights=[0.4, 0.2, 0.4], num_simulations=1000)
mc.print_summary()
mc.plot_simulation()

Optimization

from portfolio_analysis import PortfolioOptimizer

optimizer = PortfolioOptimizer(data, risk_free_rate=0.04)
optimal = optimizer.optimize_max_sharpe()
print(f"Optimal weights: {optimal['weights']}")

# Visualize efficient frontier
optimizer.plot_efficient_frontier()

Repository Structure

Portfolio-Analysis/
├── portfolio_analysis/          # Python package
│   ├── data/                    # Data loading
│   ├── metrics/                 # Performance & benchmark metrics
│   ├── analysis/                # Portfolio & Monte Carlo analysis
│   ├── visualization/           # Plotting & interactive widgets
│   └── utils/                   # Helper functions
├── streamlit_app/               # Web application
│   └── app.py                   # Main Streamlit app
├── tests/                       # pytest test suite
├── Tutorials/                   # Additional notebooks
├── Visualization/               # Visualization notebooks
├── Basic_Portfolio_Analysis.ipynb
├── Interactive_Portfolio_Analysis.ipynb
├── pyproject.toml               # Package configuration
└── requirements*.txt            # Dependencies

Installation Options

Minimal (Core Analysis)

pip install portfolio-analysis

With Optimization

pip install "portfolio-analysis[optimization]"

With Interactive Widgets

pip install "portfolio-analysis[interactive]"

For Streamlit App

pip install "portfolio-analysis[streamlit]"

Full Development

pip install "portfolio-analysis[all]"

Contributing

We welcome contributions from the community. Please read the following guidelines:

  1. Fork the repository
  2. Create a new branch (git checkout -b feature-name)
  3. Commit your changes (git commit -m 'Add feature')
  4. Push to the branch (git push origin feature-name)
  5. Create a Pull Request

See also: Beginner's Guide to Contributing

Roadmap

  • Core portfolio analysis classes
  • Monte Carlo simulation (fixed)
  • Benchmark comparison
  • Interactive widgets for Colab
  • Python package (PyPI-ready)
  • Portfolio optimization
  • Streamlit web application
  • Factor regression analysis
  • Time-varying risk-free rate (T-bill data)
  • Tax-loss harvesting tools
  • Comprehensive test coverage

Related Resources

License

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

Disclaimer

This is not investment advice. These tools are for educational purposes only. Past performance does not guarantee future results. Always do your own research and consider consulting a qualified financial advisor.

Contact

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

engineer_investor_portfolio-0.1.0.tar.gz (22.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

engineer_investor_portfolio-0.1.0-py3-none-any.whl (26.0 kB view details)

Uploaded Python 3

File details

Details for the file engineer_investor_portfolio-0.1.0.tar.gz.

File metadata

File hashes

Hashes for engineer_investor_portfolio-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9a48e887069ae151a5aabc85d51ffe012807dadb54cd00d748af0c59dedec051
MD5 070b6f50d0b32b9cc8f6fb0e410a0cc0
BLAKE2b-256 9261b29bdfb33bbf588775e53eaff40dcd3a7f9e5feb7ec4a6d217d9a41ac2b4

See more details on using hashes here.

File details

Details for the file engineer_investor_portfolio-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for engineer_investor_portfolio-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b7bf7333d0ca1e1e0668dc17245e8ae4853b8dc2e2dd747e68f0eef324d4fdd0
MD5 be0e4fecb63dd3348f9560b4ee5af691
BLAKE2b-256 f4f0fd7974b90842aad2f35d243024b580d9af3ff6202aa23bfaadfd56af39da

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page