because you use wrong manual calculation formula instead of using 100-(prev/current*100) u should use ((current-prev)/prev)*100. then it will be same with Pandas .pct_change()