Mean–variance optimisation of a five-ETF universe with SciPy, an efficient frontier, and a chronological out-of-sample backtest against equal-weight and single-asset benchmarks. Modular, tested and reproducible from a saved data snapshot.
Out-of-sample Sharpe: 1.32 for minimum variance vs 0.59 for the in-sample maximum-Sharpe portfolio

