The problem with balancing public CTF is that there are usually few guys (or sometimes even a nearly whole team) that doesn't give a shit about scoring for the team and instead continues to camp in some safe area i.e. not in the enemy teams' respawn point in order to achieve the hightest K/D ratio for the online stats those are available on the webpage. So the commitment of the player to the victory of the team is not really reflected by K/D ratio quite frequently.
The amount of caps is probably also no solution as there are usually too few caps done during the match. Besides, one may not capture the flag during the whole match at all yet be very active and help a lot to the team.
I'm not sure we are ever able to create a completely satisfying algorithm to balance publics well because of the above issues.