Log-only accounting — two ways to get it wrong
naive AIngest every Transfer: 2 rows become holdings — padding the ledger with legs that aren't positions.
naive BOnly the two legs touching the wallet, booked gross — inflating both revenue and expense, and naming the router as the counterparty instead of the market.