One thing I want to highlight is that your estimates of the covariance matrix and the expected returns are key for better optimization results. The optimizer is very sensitive in particular to the expected return input.
I have just used some adjusted form of sample mean and sample covariance in the toy example, but this is where your skill in modelling should be applied...
The amendments I made to the original code are as follows:
- aligned the trading start date with the algo start date
- changed commission and slippage to the defaults
- changed rebalancing to time_rules.market_open(hours = 1, minutes = 30)
Conclusion: outperforms random and equal-weight construction techniques.
Also, note how the beta-to-SPY is low enough for the contest...