We can further improve bagging as its performance is worse than any previous model. First, we can experiment with shallow trees, which will further reduce variance in the ensemble. By utilizing trees with a maximum depth of 3, using lr = BaggingRegressor(base_estimator=DecisionTreeRegressor(max_depth=3)), we can improve the model's performance, generating an MSE of 17.59 and a Sharpe value of 0.15. Further restricting the trees' growth to max_depth=1, allows the model to achieve an MSE of 16.7 and a Sharpe value of 0.27. If we examine the model's trading plots, we observe a reduction in the number of trades, as well as a considerable improvement in performance during periods in which Bitcoin's price significantly drops. This indicates that the model can filter noise from actual signals more efficiently.
The reduction in variance has indeed helped our model to improve its performance:
The following table summarizes the results for the various bagging models we tested:
Metric |
DT_max_depth=1 |
DT_max_depth=3 |
DT |
MSE |
16.70 |
17.59 |
19.45 |
Sharpe |
0.27 |
0.15 |
0.09 |