Each top-up should be represented as its own cohort row with its own series, subscriptionDate, and units. The playground below calls simulatePortfolio() with a shared asOfDate and shows aggregate totals plus per-series breakdown. You can share a scenario via the page URL (row=… query entries plus optional asOf and schedule=1).