A comprehensive Streamlit web application for analyzing portfolio risk using advanced clustering techniques and visualizing asset relationships with modern data science methodologies.
- Intelligent Asset Clustering: K-means clustering with optimal cluster determination
- Interactive Date Range Selection: Flexible historical data analysis
- Advanced Risk Metrics: Sharpe ratio, maximum drawdown, skewness, kurtosis
- Efficient Frontier Visualization: Monte Carlo simulation for portfolio optimization
- Rolling Volatility Analysis: Multiple time windows (7, 30, 90 days)
- Enhanced Correlation Heatmaps: Interactive correlation analysis with insights
- Risk Distribution Charts: Comprehensive risk profiling across clusters
- Elbow Curve Analysis: Automated optimal cluster detection
- Efficient Frontier Plots: Risk-return optimization visualization
- Financial Terms Chatbot: Interactive assistant for portfolio concepts
- Contextual Help: Real-time explanations of financial metrics
- Smart Recommendations: Data-driven insights and suggestions
- Comprehensive Error Handling: Graceful handling of data issues
- Data Quality Validation: Automatic data cleaning and validation
- Performance Optimization: Cached data fetching and efficient processing
- Type Safety: Full type hints for better code reliability
git clone https://github.com/yourusername/risk-analyser.git
cd risk-analyser
pip install -r requirements.txtstreamlit run risk-app.pyYour CSV file should contain an 'Assets' column with stock ticker symbols:
Assets
FSR.JO
MTN.JO
KIO.JO
TSLA
NVDA
The application includes configurable parameters:
- Maximum clusters: Adjust analysis granularity (2-40 clusters)
- Date ranges: Flexible historical period selection
- Rolling windows: Customizable volatility analysis periods
- Portfolio volatility and returns
- Sharpe ratio and risk-adjusted returns
- Maximum drawdown analysis
- Distribution characteristics (skewness, kurtosis)
- Optimal cluster number determination
- Risk contribution by cluster
- Asset composition breakdown
- Correlation pattern analysis
- Efficient frontier generation
- Optimal portfolio identification
- Risk reduction opportunities
- Performance benchmarking
- Streamlit: Web application framework
- Plotly: Interactive visualization
- scikit-learn: Machine learning algorithms
- yfinance: Financial data API
- pandas/numpy: Data processing
- ✅ Type hints throughout codebase
- ✅ Comprehensive error handling
- ✅ Enhanced user interface
- ✅ Performance optimizations
- ✅ Expanded financial metrics
- ✅ Interactive visualizations
- ✅ Data quality validation
- ✅ Modular code structure
- Portfolio Construction: Build diversified portfolios using clustering insights
- Risk Management: Identify and mitigate concentration risks
- Asset Allocation: Optimize weights based on efficient frontier analysis
- Performance Analysis: Track rolling metrics and correlation changes
- Educational Tool: Learn about modern portfolio theory concepts
Contributions are welcome! Please feel free to submit pull requests or open issues for improvements.
This project is licensed under the MIT License - see the LICENSE file for details.
Created by Mahlatse Ndala | Quant Analyst