I'm creating forecasts for products where some of them have large seasonal spike during times like Christmas and/or Easter but relatively low sales volume on other times. For this particular product shown in the graph below, the most important part is the spike during Christmas.
So the model that is better at predicting the spike is considered to be the best model. I need to be able to programmatically pick Prophet here since it is better than XGBoost in predicting the spike. When using error metrics like MAE, RMSE and MASE, XGBoost is considered to be the most accurate model but it misses the spike.
What options do I have? Could a different error metric help here? Or could I make changes to XGBoost to better handle a time series like this, e.g. selecting different learning objective (I'm using the default, squarederror)?