Skip to main content

AI-powered portfolio analytics and optimization tools

Project description

Portfolio Analytics AI ๐Ÿ“ˆ

A comprehensive Python package for portfolio analytics, optimization, and risk management using modern portfolio theory and advanced statistical methods.

๐Ÿš€ Features

  • Portfolio Construction & Management: Create and manage multi-asset portfolios with flexible weighting schemes
  • Modern Portfolio Theory: Implement mean-variance optimization with efficient frontier calculation
  • Risk Analysis: Value at Risk (VaR), Expected Shortfall, Maximum Drawdown, and more
  • Performance Analytics: Comprehensive performance metrics with benchmark comparison
  • Data Integration: Seamless integration with Yahoo Finance and extensible data provider architecture
  • Visualization: Interactive and static charts for portfolio analysis
  • Risk Models: Multiple VaR calculation methods (historical, parametric, Monte Carlo)

๐Ÿ“ฆ Installation

Prerequisites

  • Python 3.8 or higher
  • pip package manager

Setup Virtual Environment

# Clone or navigate to the project directory
cd PortfolioAnalyticsAI

# Create virtual environment
python -m venv .venv

# Activate virtual environment
# On macOS/Linux:
source .venv/bin/activate
# On Windows:
.venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Install the package in development mode
pip install -e .

๐ŸŽฏ Quick Start

Basic Usage

from portfolio_analytics import Portfolio, DataProvider

# Create a data provider
data_provider = DataProvider()

# Define your portfolio
symbols = ['AAPL', 'GOOGL', 'MSFT', 'AMZN', 'TSLA']
weights = {'AAPL': 0.3, 'GOOGL': 0.2, 'MSFT': 0.2, 'AMZN': 0.15, 'TSLA': 0.15}

# Create portfolio
portfolio = Portfolio(
    name="Tech Portfolio",
    symbols=symbols,
    weights=weights,
    data_provider=data_provider
)

# Load historical data
portfolio.load_data(start_date='2020-01-01', end_date='2023-01-01')

# Get basic metrics
print(f"Annual Return: {portfolio.annual_return():.2%}")
print(f"Annual Volatility: {portfolio.annual_volatility():.2%}")
print(f"Sharpe Ratio: {portfolio.sharpe_ratio():.3f}")

Portfolio Optimization

from portfolio_analytics import PortfolioOptimizer

# Create optimizer
optimizer = PortfolioOptimizer(portfolio)

# Optimize for maximum Sharpe ratio
optimal_weights = optimizer.optimize('max_sharpe')

# Update portfolio with optimal weights
portfolio.update_weights(optimal_weights)

print("Optimized Portfolio Metrics:")
print(f"Annual Return: {portfolio.annual_return():.2%}")
print(f"Annual Volatility: {portfolio.annual_volatility():.2%}")
print(f"Sharpe Ratio: {portfolio.sharpe_ratio():.3f}")

Risk Analysis

from portfolio_analytics import RiskModel

# Create risk model
risk_model = RiskModel(portfolio)

# Calculate Value at Risk
var_95 = risk_model.value_at_risk(confidence_level=0.95)
var_99 = risk_model.value_at_risk(confidence_level=0.99)

# Calculate Expected Shortfall
es_95 = risk_model.expected_shortfall(confidence_level=0.95)

# Calculate Maximum Drawdown
max_dd = risk_model.maximum_drawdown()

print(f"VaR (95%): {var_95:.2%}")
print(f"VaR (99%): {var_99:.2%}")
print(f"Expected Shortfall (95%): {es_95:.2%}")
print(f"Maximum Drawdown: {max_dd:.2%}")

๐Ÿ“Š Visualization

from portfolio_analytics import PortfolioVisualizer

# Create visualizer
visualizer = PortfolioVisualizer(portfolio)

# Plot price history
visualizer.plot_price_history()

# Plot correlation matrix
visualizer.plot_correlation_matrix()

# Plot efficient frontier
visualizer.plot_efficient_frontier()

# Create interactive dashboard
visualizer.create_dashboard()

๐Ÿงช Running Examples

Console Example

python example.py

Jupyter Notebook

jupyter notebook notebooks/01_getting_started.ipynb

๐Ÿงช Testing

Run the test suite to ensure everything is working correctly:

# Run all tests
pytest tests/

# Run with verbose output
pytest tests/ -v

# Run specific test file
pytest tests/test_portfolio.py -v

๐Ÿ“ Project Structure

PortfolioAnalyticsAI/
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ portfolio_analytics/
โ”‚       โ”œโ”€โ”€ __init__.py           # Package initialization
โ”‚       โ”œโ”€โ”€ portfolio.py          # Core Portfolio class
โ”‚       โ”œโ”€โ”€ data_provider.py      # Data fetching utilities
โ”‚       โ”œโ”€โ”€ optimization.py       # Portfolio optimization
โ”‚       โ”œโ”€โ”€ risk_models.py        # Risk analysis tools
โ”‚       โ”œโ”€โ”€ performance.py        # Performance analytics
โ”‚       โ””โ”€โ”€ visualization.py      # Charting and visualization
โ”œโ”€โ”€ tests/
โ”‚   โ””โ”€โ”€ test_portfolio.py         # Unit tests
โ”œโ”€โ”€ notebooks/
โ”‚   โ””โ”€โ”€ 01_getting_started.ipynb  # Interactive examples
โ”œโ”€โ”€ example.py                    # Complete usage example
โ”œโ”€โ”€ requirements.txt              # Package dependencies
โ”œโ”€โ”€ pyproject.toml               # Project configuration
โ””โ”€โ”€ README.md                    # This file

๐Ÿ“ˆ Key Classes

Portfolio

Core class for portfolio management and basic analytics.

DataProvider

Handles data fetching from multiple sources (Yahoo Finance, etc.).

PortfolioOptimizer

Implements modern portfolio theory optimization techniques.

RiskModel

Provides comprehensive risk analysis capabilities.

PerformanceAnalyzer

Calculates performance metrics and benchmark comparisons.

PortfolioVisualizer

Creates static and interactive visualizations.

๐Ÿ”ง Dependencies

  • numpy: Numerical computations
  • pandas: Data manipulation and analysis
  • matplotlib: Static plotting
  • seaborn: Statistical visualizations
  • plotly: Interactive charts
  • scikit-learn: Machine learning utilities
  • yfinance: Yahoo Finance data
  • scipy: Scientific computing
  • jupyter: Interactive notebooks

๐Ÿ“‹ Development

Code Style

This project uses Black for code formatting:

black src/ tests/

Type Checking

MyPy is used for static type checking:

mypy src/

๐Ÿค Contributing

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

๐Ÿ“„ License

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

๐Ÿ†˜ Support

  • Create an issue for bug reports or feature requests
  • Check the examples and documentation for common use cases
  • Review the test suite for implementation details

๐ŸŽฏ Future Enhancements

  • Additional data sources (Alpha Vantage, IEX Cloud)
  • Machine learning-based risk models
  • Factor model implementation
  • Real-time portfolio monitoring
  • Advanced optimization algorithms
  • ESG scoring integration
  • Options strategies analysis

Happy Portfolio Analyzing! ๐Ÿ“Š๐Ÿ’ผ

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

portfolio_analytics_ai-0.2.0.tar.gz (28.4 MB view details)

Uploaded Source

Built Distribution

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

portfolio_analytics_ai-0.2.0-py3-none-any.whl (28.4 MB view details)

Uploaded Python 3

File details

Details for the file portfolio_analytics_ai-0.2.0.tar.gz.

File metadata

  • Download URL: portfolio_analytics_ai-0.2.0.tar.gz
  • Upload date:
  • Size: 28.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.6

File hashes

Hashes for portfolio_analytics_ai-0.2.0.tar.gz
Algorithm Hash digest
SHA256 6a047a987b1ec8ea6261cd2131146f49caf672dae4edcb4ccdf888b8f1ad74a9
MD5 96ddc113613cc09a01ca2290c2391689
BLAKE2b-256 2f870f32157075d240e35cd77a67183a5ee67fc04add0e0db6b1bf446be77391

See more details on using hashes here.

File details

Details for the file portfolio_analytics_ai-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for portfolio_analytics_ai-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f2bd9599c47a2af9c1345777c1be53fc0cee909fb5825832a496a0f28548566e
MD5 194460a60a429005d82e8e4e1dd8d8fd
BLAKE2b-256 a906823e066c5a66167c715a22730a594eb55085e3f1d36a0bc803497ce9f2fa

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