A dataset containing various features and a regression target (called qval) was used to train an XGBoost regressor. This value, qval, is between 0 and 1 and should have the following distribution:

So far, so good. However, when I save the model with xgb.save_model() and re-load it with xgb.load_model() to predict on another dataset this qval, the predicted qval is out of the [0,1] boundary, as shown here.
Could someone explain if this is normal, and if yes, why this is happening? From my perspective, it might be just that the "equation" (very bad word here) that computes the qval was trained on some data and the weights don't really take into account the [0,1] boundary. Therefore, when applying those"weights" to the new data the result is out of bounds. Not entirely sure though.
