With 500v500 cavalry it's almost like 2000 man battle because each horse is kind of like an extra man. With a ryzen 3600 I get about 45fps before contact and then some pretty low dips once the mosh begins. When they all stack on top of each other and the collision starts wigging out, everyone starts vibrating as they all try to push each other to make room, but there is nowhere to go. GPU utilization drops way down to like 30% because the CPU is getting slammed so hard trying to calculate all the collision physics, pathfinding, animation, etc. and there are 2000 actors on screen.
At this point no graphics setting will make much difference because with the sheer volume of stuff happening the GPU is just barely even being used. Things like shadows and character detail which can improve performance with lower troop counts still help but I'm still at 40ish with both on low/off.
There's just a limit to how fast you can calculate animation and physics for 1000 overlapping mounted troops all twitching uncontrollably and trying to kill each other. More realistic battles with mixed troops go a bit better, 500v500 cav is worst case. 250v250 is nice and smooth.
I think they need to seriously consider changing the way unit collision is handled, the way they all overlap and slide around like their on ice just doesn't work very well for gameplay, cavalry charges do no damage because they just bump each other out of the way instead of slamming into each other, and you get civ2-style stacks of doom with 20 infantry units all occupying the same space, like a big angry porcupine. I think increasing the unit spacing would indirectly reduce the CPU burden in these situation, could be completely wrong about that though.