I estimated the following model before estimating. I need to check the predicted propensity score model to predict out of the sample.

teffects psmatch (savings_all_exp_hh_sh) (mig_hh mean_age hhh_age hh_size sh_eco_active food_exp_sh hh_sh_empincome ///
hh_sh_agrincome hh_tot_income i.sinhala_hh i.hhh_gender 1.hh_mx_edu_1 ///
bus_halt i.area_1 i.floor_1 i.tenure i.natural_calamity ///
land_all_pr ), osample(p_1) vce(iid) gen(po_)


teffects psmatch (savings_all_exp_hh_sh) (mig_hh mean_age hhh_age hh_size sh_eco_active food_exp_sh hh_sh_empincome ///
hh_sh_agrincome hh_tot_income i.sinhala_hh i.hhh_gender 1.hh_mx_edu_1 ///
bus_halt i.area_1 i.floor_1 i.tenure i.natural_calamity ///
land_all_pr ) if p_1==0, osample(p_2) vce(iid) gen(po_)


gen es=e(sample)
predict pscore, ps

To check the ps model I estimated the ps scores in the following alternative way:

local model = e(tmodel)
local tvar = e(tvar)
local cov = e(psvarlist)
`model' `tvar' `cov' if p_1==0

predict ps_logit, pr

I expected the propensity scores estimated as pscore would be equal to ps_logit. But they are not. Can anyone help to understand what's going on ?
Tks,
Billy