From 807a6b310446133c94751ca0e1c18e05ab47068b Mon Sep 17 00:00:00 2001 From: Stan Runge Date: Mon, 26 Oct 2026 01:13:43 +0000 Subject: [PATCH] money: day-by-day forecast with real payment dates The wealth forecast now runs per day instead of per month, so it shows the same sawtooth as the actual history: - recurring items hit on the day the bank history shows (most common day of the last four months, clamped to month end), else their start date - "every N weeks" items (Basic-Fit, haircut) run on an exact N-day cadence from the last charge; yearly items on their renewal date - salary and its extras (holiday pay in May, 13th month in November, bonus, settlement) land on the payday from history (contract 25th as fallback), moved to the Friday before a weekend; toeslagen move to the Monday after - variable budgets are spread per day, the vacation budget over Jul-Aug - excess above the buffer is invested the day after payday; returns compound daily - long horizons stay fast (~35 ms for 100 years): the chart thins each pixel bucket to its low and high --- src/lib/money-tracker/MoneyChart.svelte | 13 +- src/lib/money-tracker/charts.test.ts | 79 +++- src/lib/money-tracker/charts.ts | 195 +++++++--- src/lib/money-tracker/scenarios.test.ts | 76 +++- src/lib/money-tracker/scenarios.ts | 457 +++++++++++++++--------- src/lib/money-tracker/schedule.test.ts | 152 ++++++++ src/lib/money-tracker/schedule.ts | 388 ++++++++++++++++++++ src/routes/trackers/money/+page.svelte | 51 ++- 8 files changed, 1163 insertions(+), 248 deletions(-) create mode 100644 src/lib/money-tracker/schedule.test.ts create mode 100644 src/lib/money-tracker/schedule.ts diff --git a/src/lib/money-tracker/MoneyChart.svelte b/src/lib/money-tracker/MoneyChart.svelte index 6185a1a..8cec5bd 100644 --- a/src/lib/money-tracker/MoneyChart.svelte +++ b/src/lib/money-tracker/MoneyChart.svelte @@ -1,8 +1,15 @@