The problem is the battles give somewhat random XP and $$$. You can replay it 10 times and it always will give different values. Not only this but at every reload the generic troops seems to start with random XP. I tried to make tests having companions, heavy cavalry and just a single saranid horsemen. And at every reload the saranid horsemen started with random XP ranging from 80,000 up to 90,600 (about 91,000 were needed for a mameluk promotion). And yes - I am absolutely certain about this and I understand this is a feature which can be abused.