Valuing past months at today's rates means a BTC swing this week rewrites last month's net worth. Freezing a month-end snapshot at that month's rates would fix it, and the lookup only needs a date and currency codes, so it fits your privacy model. Frankfurter has free daily fiat history. For crypto by date too, the APIFreaks historical exchange rates endpoint returns fiat and coins in one call (disclosure: I work there).