I think the trick is to store the movement not the balances. You may cache the balance, but what matters is the journal of money moving from one account to another.
Exactly. Any proper ledger is a transaction log. Balances and turnovers are calculated, not stored. I've seen a lot of attempts to 'cache balances', and this was always the point where anything could go wrong.