Ok, I figured it out. Damage done is calculated differently in BtS than what "common knowledge" dictates. Short story is that the ingame odds are correct, and we should then probably use another cat after all. We seemed to have a building consensus for that before I barged in with erroneous numbers.
Longer story: In Vanilla, the amount of damage the attacker did each victorious round was 20*(3*A+D)/(3*D+A) where A and D are the attacker and defender strengths. With our axe attacking at 5.5 and his axe defending at 4.64, that would mean 21 vs 18 damage done each round. With 100 hp the attacker could survive 5 hits but die on the 6th. With 58 hp the defender could survive 2 hits but die on the 3rd.
In BtS, the damage done takes into account the maximum strength of the unit, and the formula is a lot more involved. Here's a breakdown:
* A unit's Firepower is calculated as (maxStrength + currentStrength + 1)/2. In other words it's an average of max and current strength, plus 0.5.
* The so called strengthFactor of a battle is (aFirepower + dFirepower + 1)/2, i.e. an average of the firepowers of the attacker and defender, plus 0.5.
* The amount of damage done by the attacker is then (aFirepower + strengthFactor)/(dFirepower + strengthFactor), and the other way around for the defender, both rounded down.
Writing out the factors for the attacker we get
aDamage = 20 * (aFirepower + strengthFactor)/(dFirepower + strengthFactor)
= 20 * (aFirepower + (aFirepower + dFirepower +1)/2)/(dFirepower + (aFirepower + dFirepower + 1)/2)
= 20 * (3*aFirepower + dFirepower + 1)/(3*dFirepower + aFirepower + 1)
This is superficially similar to the Vanilla calculations, except that it works on Firepower, i.e. the average of current and maximum strength, instead of current strength alone. If we let aAvgStrength = (aMaxStrength + aCurrStrength) and similary for the defender, we can continue like this:
= 20 * (3*(aMaxStrength + aCurrStrength + 1)/2 + (dMaxStrength + dCurrStrength + 1)/2)/(3*(dMaxStrength + dCurrStrength + 1)/2 + (aMaxStrength + aCurrStrength + 1)/2)
= 20 * (3*aAvgStrength + dAvgStrength + 4)/(3*dAvgStrength + aAvgStrength + 4)
Looking at our example again, the wounded axe has a maxStrength of 8 and a currStrength of 4.64, so dFirepower is 6.82. Our attacker has both maxStrength and currStrength of 5.5, and thus aFirepower is 6, less than the defender despite having a higher current strength. That means the defender does 21 damage and the attacker only 18, giving the attacker 5 "lives" and the defender 4 (as opposed to 6 and 3 with the old calculations). The odds are then 72.5%, just like the game reports.
I need to update my spreadsheet to do these calculations right. Will be back with a new set of predictions when I have. But using the next cat too seems reasonable.