We've implemented almost precisely this in Causal (https://causal.app) — models come with the 'time' dimension as a first-class citizen [1], letting you write a single formula like
Revenue[t] = Revenue[t-1] * (1 + Growth Rate)
to calculate the Revenue at all points in time. And you can do vectorised operations along the time dimension by writing formulas like this: Profit = Revenue - Costs
where Revenue and Costs, and therefore Profit, vary over time.---
[1]: You can specify the time dimension yourself, e.g. "Monthly, Jan 2018 – Jan 2023" or "Yearly, 2020 – 2030"