Your question understandably contains little information in order to give you a specific answer.
However your question does seem to indicate you understand the game quite well and are aware of the many variables within it.
If I am reading correctly there is potentially a clue contained in your text, if I am wrong then it still doesn't rule out the possibility of it being a possible explanation.
Are you the attacker or the defender, presumably on a tile rather than on the town?
Are there definitely no other kind of troops involved in the battle?.
Siege are the strongest against melee so its understandable that you think you should win.
You do have a lot of oracle knowledge,but is it the optimum for these battles ?
You could be falling into traps,otherwise if you are being attacked, you could be scouted first ,and then the troops sent could be optimised in their favour. It could be as simple as numbers sent, or use of other game features.