Shap explanation of XGBoost Classifier

Hi there, I have a question regarding shap explanation of XGBoost classifiers. I am not sure what the value of explainer.expected_value mean? And in particular, why after sigmoid transformation, it is not the same with y_train.mean()? Many thanks!

Below is a summary of the code. full code available here:

model = xgb.XGBClassifier(), y_train)
explainer = shap.Explainer(model)
shap_test = explainer(X_test)
shap_df = pd.DataFrame(shap_test.values)

# For each case, if we add up shap values across all features plus the expected or base value, we can get the margin for that case, which then can be transformed to get the predicted prob for that case:
np.isclose(model.predict(X_test, output_margin=True),explainer.expected_value + shap_df.sum(axis=1))
# True

But why isn't the below true? What is the meaning of explainer.expected_value for XGBoost classifiers? Thx again!
expit(explainer.expected_value) == y_train.mean()
# False