Ну а по мелочам...
Ну введите
let currentDate = currentValue[date];
И замените везде currentValue[date]. Уж больно часто встречается
Строки 42-46 замените на
object[value] = (object[value] || 0) + sum(currentDate[value]);
Уберите строки 55-59, а после строки 62
output.push( {total: total.toFixed(digits)} );
Учтите, что всякие reduce, forEach, map по скорости существенно проигрывают обычному for( ; ; ). Но при разнице в 2-3 мс это не играет ни какой роли. А если в массиве сотни тысяч элементов и разница будет в 2-3 сек, то наверно имеет смысл оптимизировать.