Say you spent $50 in Mehr, on a day when the dollar was 1,000 toman. That is a 50,000-toman expense. Two months later the dollar gets dearer. If your ledger re-values every old transaction at today's rate, October's spending suddenly goes up, though you didn't spend a rial more.
That is what happens in a spreadsheet and in most simple apps: one rate for everything. The result is reports that show a different number every time you open them.
The right way: store the rate on the transaction
Every expense and income should carry that day's rate from the moment it's recorded. A month's report is then always added up with those rates. So:
- last month's report is the same number today and next year;
- months can be compared fairly;
- "how much was this expense, really?" has a clear answer: whatever it was that day.
What about the value of what I hold?
There is one important difference. Spending and income are events: they happened in the past and their number stays put. But what you hold now, such as cash dollars, coins or bitcoin, is worth something different every day. Those should be valued at the latest rate, because the question is "what is it worth now?".
So two simple rules:
- Events (spending, income, payments) are saved at their own day's rate and never change.
- Holdings (what you keep) are valued at the latest rate.
And if there is no rate for a day?
Sometimes a day has no rate. A good ledger doesn't error out; it uses the latest rate it has and says so honestly: "rate from N days ago". And if you disagree with a rate, you should be able to type your own, and have it win over the automatic one for that day.
That is exactly how Ricordax works: each transaction keeps its day's rate, holdings are valued at the latest rate, and the owner's manual rate takes priority over the automatic one. If you want a ledger that doesn't rewrite the past, have a look at the personal and family app.