The factors for loyalty are:
1. Tribe of the attacker
2. A random factor
3. Big party/parties of the attacker
4. Big party of the defender
5. The difference of the total population between attacker and defender
Tribe of the attacker
It is said, that the normal percentage a senator/chief/chieftain takes is:
a) between 20-30% for Romans (senator)
b) between 20-25% for Gauls and Teutons (chief, chieftain)
A random factor
As you can see before, there is a random factor. This factor seems to be +/- 2.5% for Gauls/Teutons and +/- 5% for Romans.
Big party/parties of the attacker
If the attacker has a big party in a village, you will get +5% for each senator from this village. This only works for senators from this village!
Big party of the defender
If the defender is having a big party in the attacked village, the senator(s) work -5% for each senator. Note, the big party must be in the attacked village!
The difference of the total population between attacker and defender
This is the most unknown part. The values I said in point 1 (should) only work, when attacker and defender have the same total population (not only population of the attacking/defending villages!) or the defender has a bigger total population.
If the defender is smaller, he gets something called “moral bonus”. As bigger the difference is, as more bonus the defender gets (e.g., as less the senators will take down loyalty). I can’t give you a exact value, but I had for example some chieftains (Gaul), that took only 13% each without big parties of attacker or defender. When I remember correctly the defender had around 20% of the attackers population. As you can see, this moral bonus can influence the amount of loyalty pretty much.