Share Brilliantly
forecasting cash flows
let cashFlows = [];
for(let bond of portfolio){
let newFlows = forecast(bond);
newFlows.forEach(p=>cashFlows.push(p));
}
let payments1 = [{date:'2000-01-15', payment:100},{date:'2000-02-15', payment:100},{date:'2000-03-15', payment:100},{date:'2000-04-15', payment:100}]
let payments2 = [{date:'2000-01-15', payment:200},{date:'2000-02-15', payment:120},{date:'2000-03-15', payment:100},{date:'2000-04-15', payment:140}];
//aggregate the payments into a single array
let payments = [...payments1, ...payments2];
let group = $group(payments, p=>p.date);
//group the payments by date, then reduce them to a single payment
let portfolioCashFlows = group.map((keys,values)=>{
let payment = values.reduce((total, p)=>p.payment+total, 0);
return payment;
})();