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.5.tar.gz (29.2 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.5-py3-none-any.whl (29.3 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: portfolio_analytics_ai-0.2.5.tar.gz
  • Upload date:
  • Size: 29.2 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.5.tar.gz
Algorithm Hash digest
SHA256 c645d3c4423dbc978597ccc18624c1db4605b93a0127992d7526d84fb2cb43c2
MD5 f9f2f523dfb625cfa0ee19b39832e28c
BLAKE2b-256 104b14f6f21e549b6e28d1f8554126047d86d77c9930f0f9261735472fc8adc7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for portfolio_analytics_ai-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 59776e9c6711b17d6b16c5f8bf14437cdb1425a6fde5ffc02e2dd19029c97a56
MD5 92225d5cb46a1d3cf88671e00a4690ba
BLAKE2b-256 9861f610e4aafce1134c73d66ab041e455dde82173332201de7d898033f3e1ed

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