metadata
title: >-
Max Diversification and Min CVaR Optimisation Models for a Portfolio with 5
Assets
emoji: 📊
colorFrom: indigo
colorTo: indigo
sdk: docker
pinned: false
short_description: Dashboard for portfolio optimisation results
Portfolio Optimisation Strategies
Overview
Showcased machine learning in portfolio construction by training/testing multiple optimisation strategies (Max Diversification, Min CVaR, Equal Weighted) on a portfolio of ETFs, with results deployed in a Python Vizro dashboard. Deployed on HuggingFace Spaces.
Python Tools Used
Data Fetching, Preparation and Plotting
- yfinance to obtain historical ETF prices
- pandas for data processing and preparation
- plotly for plotting the data
Portfolio Optimisation
- scikit-learn for training and testing
- skfolio to access the Maximum Diversification and Minimum CVaR models
Results Dashboard
- vizro to build the dashboard
Description
Portfolio Composition
Five ETFs:
- EWA iShares MSCI Australia ETF
- EWH iShares MSCI Hong Kong ETF
- EWJ iShares MSCI Japan ETF
- ENZL iShares MSCI New Zealand ETF
- EWS iShares MSCI Singapore ETF
Time Period
30/09/2010 to 30/09/2024
Optimisation Models Tested:
- Maximum Diversification
- Minimum CVaR
- Equal Weighted
Metrics
- Annualised Mean
- Annualised Standard Deviation
- CVaR at 95%
Results
- The number of stocks (ETFs) in the portfolio is very small, at only 5, so there was not much variability in the results.
- The Equal Weighted model had the highest annualised return and annualised standard deviation.
Next Steps
Test the optimisation models on a portfolio with a greater number of stocks, over different time periods, including other optimisation models in the analysis.
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference