What do you need self.values_agg for? It is only used for the aggregate of values not yet represented in cum_aggs if finalize is called. That value could just get computed right there on the fly.
Is it maybe for repeated finalize calls? To essentially re-use those computations?