Mutual Fund & ETF Performance
Benchmarking return, risk, and risk-adjusted performance
Business question
Investors are often told to “diversify” across asset classes, but diversification alone does not answer the most important questions:
-
Which ETFs delivered the best long-term returns?
-
Which achieved those returns with the least risk?
-
Which provided the best risk-adjusted performance?
-
How severe were the worst drawdowns, and where did downside risk truly sit?
The goal of this project was to benchmark a small universe of core ETFs across return, volatility, Sharpe ratio, and maximum drawdown, and present the results in a clear, interactive dashboard suitable for decision-making.
Dataset and scope
The analysis focuses on widely used core ETFs representing major asset classes:
-
US equities (broad market and growth)
-
International equities
-
Small-cap equities
-
Real estate
-
Bonds
Daily and monthly price data was used to calculate long-term performance metrics consistently across all ETFs.
Methodology overview
This project was built end-to-end using Python, SQL, and Tableau, with each tool used intentionally for what it does best.
Python — data preparation and financial metrics
Python was used for data ingestion, cleaning, and financial calculations.
Key steps included:
-
Loading historical ETF price data
-
Calculating returns from adjusted close prices
-
Computing core performance metrics:
-
CAGR (Compound Annual Growth Rate)
-
Annualised volatility
-
Sharpe ratio (risk-free rate = 0%)
-
Maximum drawdown
-
-
Validating results across daily vs monthly frequencies
-
Exporting clean, analysis-ready CSVs for visualisation
Python ensured the calculations were:
-
Reproducible
-
Transparent
-
Consistent across all assets
This stage answered the quantitative side of the problem:
What does the raw performance data actually say?
SQL — analytical modelling
SQL (via DuckDB) was used to structure the results into a clean analytical model:
-
A fact table containing ETF-level metrics
-
A dimension table containing ETF categories
-
Clear separation of measures and descriptive attributes
This modelling step:
-
Reduced complexity in Tableau
-
Made the analysis scalable
-
Reflected real-world BI practices
The output of the Python + SQL stages was a set of well-structured CSVs, ready for dashboarding.
Tableau — analysis, storytelling, and interactivity
Tableau was used to answer the interpretive side of the business question:
“Given these metrics, how should an investor understand the trade-offs between return and risk?”
Key dashboard components include:
-
Risk–return scatter plot
Visualising annualised volatility vs CAGR to show the fundamental trade-off between risk and reward. -
Sharpe ratio ranking
Highlighting which ETFs delivered the most return per unit of risk. -
Maximum drawdown ranking
Showing where downside risk was most severe. -
Dynamic KPI tiles
Identifying:-
Best risk-adjusted ETF
-
Best performing ETF
-
Lowest-risk ETF
-
-
Fully interactive filtering
Allowing users to dynamically change the ETF universe while keeping KPIs and charts in sync.
Special care was taken to ensure:
-
Correct handling of LOD expressions
-
Proper context filtering for dynamic KPIs
-
Clean, professional layout suitable for a portfolio
Key findings and insights
Several important patterns emerged from the analysis:
1. Higher returns came with higher volatility — but not always better outcomes
Growth-oriented equity ETFs achieved the highest CAGRs, but they also carried significantly higher volatility and deeper drawdowns. High returns alone did not guarantee superior risk-adjusted performance.
2. Risk-adjusted performance told a different story
When evaluating performance using the Sharpe ratio, broad US equity exposure emerged as the most efficient trade-off between risk and return. Some higher-return ETFs looked less attractive once volatility was considered.
3. Bonds played a defensive role, not a performance role
Bond ETFs delivered the lowest volatility and shallowest drawdowns, confirming their role as risk stabilisers, not return drivers. They ranked lowest on CAGR but highest on downside protection.
4. Drawdowns revealed investor experience, not just statistics
Maximum drawdown highlighted how painful the worst periods would have felt in real time. Assets with similar long-term returns often differed dramatically in downside risk.
Business takeaway
This project demonstrates that:
-
Performance cannot be evaluated on returns alone
-
Risk-adjusted metrics fundamentally change rankings
-
Visualising trade-offs leads to better investment decisions than isolated numbers
-
Interactive dashboards allow decision-makers to explore scenarios rather than accept static conclusions
Tools and skills demonstrated
-
Python: financial calculations, time-series analysis, data cleaning
-
SQL (DuckDB): analytical modelling and data structuring
-
Tableau Public: interactive dashboards, LOD expressions, KPI design
-
Financial analysis: CAGR, volatility, Sharpe ratio, drawdown
-
Data storytelling: turning metrics into insights
Final result
The final output is a single-page, fully interactive Tableau dashboard that benchmarks core ETFs across return, risk, and downside exposure, built using best practices from data engineering through to business intelligence.
This project reflects how I approach data problems:
start with a business question, use the right tools at each stage, and communicate results clearly.