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
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file portfolio_analytics_ai-0.1.0.tar.gz.
File metadata
- Download URL: portfolio_analytics_ai-0.1.0.tar.gz
- Upload date:
- Size: 24.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f76d9383ed9ad150c530f6581a55b256de89a800876d4dd9abddaeb7ef61e8d
|
|
| MD5 |
c5e7cbdf024aa6ab32008ea29492ce2a
|
|
| BLAKE2b-256 |
9dfbcedceeed753d133ecce805088122ae1de4907b2ed99b24c5c0d30cce4926
|
File details
Details for the file portfolio_analytics_ai-0.1.0-py3-none-any.whl.
File metadata
- Download URL: portfolio_analytics_ai-0.1.0-py3-none-any.whl
- Upload date:
- Size: 23.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
877c0bd9fadb3301aad6732726a7a1f8c95308ae7c8cfe2085966b57a76315c3
|
|
| MD5 |
578c4e040820b5508120840e64e979b0
|
|
| BLAKE2b-256 |
b4575f15d96695fdda1ead478521a81117d19c630b01db335f67d41e3aee9f38
|