Share Brilliantly
forecasting cash flows
let dates = pd.dates(start, number, period, endOfMonth);
let dateMap = $group(dates, p=>p).toObject();
let tranches = [{
payments:[],
payment:1000
},{
payments:[],
payment:1000
},{
payments:[],
payment:2000
}];
flows = [...flows, ...dates.map(p=>({date:p}))];
let cashFlows = $group(flows, p=>p.date).map((keys, values)=>{
let item = {
date:keys[0],
value : $list(values).filter(p=>p.value !== undefined).map(p=>p.value).sum(),
}
return item;
}).values();
let cash = 0;
for(let item of st.sort(cashFlows, p=>p.date)){
//increase the cash available by
cash += item.value;
if(item.date in dateMap){
item.fees = 10;
cash -= item.fees;
for(let tranche of tranches){
let payment = {
date:item.date,
value:0
};
if(cash > tranche.payment){
payment.value = tranche.payment;
cash-=payment.value;
}
else if(cash>0){
payment.value = cash;
cash = 0;
}
tranche.payments.push(payment);
}
}
item.cash = cash;
}