Fundamental question on mean-variance optimization, please.
For the historical period 2016 through 2023, I picked 30 day windows and have 300 such windows. At the start of each of those windows, I construct 2 portfolios, both containing the same exact assets (shown down below in the form of a Python dictionary). Then, I look back 252 trading days from the start of each window and compute the mean rolling 30 day window returns and variance. I used that time series as input into mean-variance optimization using cvxpy. The objective function is to maximize (returns - variance). Short sales are allowed in the optimized portfolio (which means weights can be between -1 and +1).
The first of the 2 portfolios is assigned the weights from the optimization, whereas the second portfolio is assigned equal weights. An capital of $10,000 is invested into each portfolio and no further capital is injected ever. The performance of each of the 2 portfolios is observed over the following 30 day period. Specifically, the annualized mean and the annualized standard deviation of the daily returns are calculated for each portfolio. Also, the mark-to-market (MtM) value on the 30th day is computed for each portfolio. I calculate the risk-adjusted returns as mean return divided by standard deviation (not using any risk-free rate here).
Please see below density plots for the MtM on the final day and for the risk adjusted return. From the MtM perspective, the equally weighted portfolio shows much less variation compared to the optimized portfolio. And from a risk adjusted return perspective, there isn't that much of a difference between the 2 portfolios.
What could I be missing here, please? I was expecting that the optimized portfolio would perform much better than the equally weighted portfolio in most cases. Could my optimization be sub-par? Thanks for any hints, pointers and suggestions.
assets_dict = {
'SPY': 'SPDR S&P 500 ETF Trust',
'QQQ': 'Invesco QQQ Trust',
'DIA': 'SPDR Dow Jones Industrial Average ETF Trust',
'IWM': 'Russell 2000 Index',
'UUP': 'Invesco DB U.S. Dollar Index Bullish Fund',
'TLT': 'iShares 20+ Year Treasury Bond ETF',
'DBC': 'Invesco DB Commodity Index Tracking Fund',
'GBTC' : 'Grayscale Bitcoin Trust',
'URTH': 'iShares MSCI World ETF',
'VNQ': 'Vanguard Real Estate ETF'
}