Húrin Phạm Can we version the calculation logic so we can audit historical changes? Right now it's hard to reproduce.
That's fair.
The moving average seems to lag the actual data by about two weeks. Should we note that limitation?
That matches what I had.
That matches what I had.
The 2016 break is a rounding artifact — it shows up in every series from that source.