Calculate PMT from multiple principals in Excel - excel

I am preparing a cashflow statement where I take a loan every month - all at the same interest rate and duration. Thus, I need to forecast EMI, interest, and principal for each month from all the loans taken so far.
In reality, I figured out PMT. I calculated PMT for $1 and multiplied that by the sum of all principals that are active (using OFFSET formula to determine whether a period is within loan duration). Something like...
=SUM(OFFSET(AMOUNT_HEADER, MAX(1, Curr_Period-(DURATION*12)+1), 0, MIN(Curr_Period, DURATION*12), 1))*-PMT(Interest/12,DURATION*12,1)
Now, while I was able to crack EMI, mainly because it is "equal" every month, I am unable to figure out how to split the principal and interest.
Can anyone suggest something that is accurate or an approximation of Principal and Interest each month?

Check out the Excel functions PPMT and IPMT which calculate the principle and interest, respectively, for any period over the duration of the loan. To get the sum of interest payments for any period you can use the ARRAY formula (CTRL-ENTER):
=SUM(IPMT(Interest/12,ROW(OFFSET(AMOUNT_HEADER,Curr_Period+1,0,1,1))-ROW(OFFSET(AMOUNT_HEADER,1,0,Curr_Period,1)),DURATION*12,-OFFSET(AMOUNT_HEADER,1,0,Curr_Period,1),0,0))
This formula assumes that their is a column of loan amounts with the column header AMOUNT_HEADER. The first loan is assumed to occur at Period=0. Curr_Period is assumed to be 1, 2, 3, ... The ROW(...)-ROW(...) portion of the formula is used to generate a series of ages for each loan, so if Curr_Period = 5, this part of the formula generates {5;4;3;2;1}. These ages are used as the per argument in IPMT.
Note: This formula doesn't guard against exceeding Curr_Period exceding the duration of any of the loans, but could be modified to do so. It could also be modified to sum up principle payments instead of interest

Related

Substract a cell (if it has a # value) with rows below it in a different column if the conditions are the same

I'm using this equation =IF(K2=0,0, K2-I2) to show the difference in a cell with what a client has to pay vs what he has paid (negative if he paid less than what he had to and positive if he paid more). How would I modify this equation to substract from the next amount paid (k3 in this case) or the following (k4) if they didn't pay in k3 so the difference becomes 0 if its used with the added condition that the name at Column C matches.
The first column is the amount someone needs to pay, the second is what they paid, the fourth shows the difference and the fifth states what it is. I would like the difference from the first row to use the paid amount from the second row to substract from it before applying itself to the difference in the second row. Is this possible? I've tried looking for hours in google with no luck.
Edit:
This is how I would like it to look (this is manually inputting the data). The amount the client has to pay each month is 425.65 so the second month he pays 400 it would first cancel the first 'debt' to then count towards his second month payment which results in more debt than the first pay cycle.
Prelim
Worksheet here / screenshot below refer.
If you don't mind using a 'helper' column (I don't see any other way around this, unless you go down the 'VBA/Pivot' route, given the nature of the sum function re arrays) - then this should (I think!:) address the issue...
Eqns
Helper
=IF(OR(B3<>B4,SUM(D$3:D3*(B$3:B3=B3))>=INDEX($C$3:$C$11,MATCH(B3,$B$3:$B$11,0))),1,0)
This turns 1 when the sum of "Paid" is at least >= "Owing" for the same individual. Assumes: rows ordered chronologically, grouped by 'Person' attribute.
Net ultimate
=IF(B3=B2,"",SUM(D3:INDEX($D$3:$D$11,MATCH(B3&1,$B$3:$B$11&$E$3:$E$11,0))))
Screenshots
This sums from the first instance of 'Paid' for a given Person, to the Paid value corresponding to the first instance of a '1' in the Helper column.
Examples
In this case, A owes £1k at outset, pays £450 initially, then pays a further £700 (i.e. has overpaid by £150). As such, the 'Net ultimate' figure reports back £1,150 (=£450 + £700); it doesn't consider the £50 (did you want it to? If so the function becomes a lot easier, and reduces to a regular sumifs...).
For B: net ultimate = £1,025 (the total amounts paid never exceed what is owing, so tally all amounts paid by B)
Same goes for £1k and C....

Excel Formula - Total subscriptions after Nth years based on monthly churn rates

A business works on a subscription model basis with a expected churn rate (Cancellations) each month during year 1 at 5% & during the following year a churn rate of 2.5% due to the fact these are now established customers (long term).
A new feature or service is launched with a expect increase of subscriptions each month. I need to calculate how many subscriptions would that be in N years based on a 5% churn rate for the first 12 month & a 2.5% churn rate during year 2.
Below is currently how were are calculating this in excel however this is really in inelegant solution when trying to calculate this for say 5 - 10 year impacts.
https://i.stack.imgur.com/yF5Rx.png
Are there any accounting formulas or something mathamitcally I can produce to calculate this in a single cell? Given I would need to set the given churn rates for each year & length of time.
For ease lets say 95% of the time I would be working on a 3 year model of subscriptions & each year will need its own churn rate.
I thought perhaps something with exp & halving the value might work but have not found anything yet.
Here's one way to build the model. I'll make reference to this image:
First we set up the churn model.
Row 1: Since Churn Rates depend on subscription age, Row 1 has the subscription age (in months). This is for reference only and is not used in the calculations.
Row 2: Churn Rates.
Row 3: Since Churn Rates always enter the calculation as (1-ChurnRate), call that term (Single-month) Retention Rate. As an example, in B3 the formula is =1-B2.
Row 4: Since the effects of churn are cumulative over multiple months, we define another term Multi-month Retention Rate (abbreviated MMRR). In the first month this is set to 1; in subsequent months this is the product of previous single-month retention rates. So in C4 the formula is =B4*B3; in C5, =C4*C3, etc.
Row 5: The model as described in the Question indicated a fixed rate of new subscriptions = 100/month. When the subscription rate is fixed, it is convenient to sum up the MMRRs. So in B5 we have =B4; in C5, =B5+C4; in D5, C5+D4; etc.
At this point we're essentially done. If you multiply the values in Row 5 by any fixed rate of new subscriptions (e.g. 100/month in the original Question) we get the number of subscribers in that month. But what if you want to model where the number of new subscriptions varies month to month? Here's how ...
The basic idea is to multiply the monthly subscription rate by its age-appropriate MMRR. Note that Row 8 has varying numbers of new subscriptions (100, 110, 97) in the first 3 months. To get the total subscriptions in Mar-19 for example, we need to
multiply the 100 (Jan-19) subscriptions (that have a 2 month age) by the MMRR for a 2-month old subscription (0.9025),
multiply the 110 (Feb-19) subscriptions (that have a 1 month age) by the MMRR for a 1-month old subscription (0.95),
multiply the 97 (Mar-19) subscriptions (that have a 0 month age) by the MMRR for a 0-month old subscription (1), and
add those three products together.
This could be calculated on the worksheet by entering in D9 the formula =B8*D4+C8*C4+D8*B4. This type of calculation (sum up the pair-wise products of two arrays) is often done with Excel's SUMPRODUCT function. Here we need to take one of the arrays in reverse order, which is not directly supported by Excel. You could enter new subscriptions in reverse order, but that's an ugly kludge. Fortunately, it is do-able with a combination of the OFFSET(), COLUMN() and N() worksheet functions (see here for details). The required formula for B9 is
=SUMPRODUCT($B4:B4,N(OFFSET(B8,0,-(COLUMN($B8:B8)-COLUMN($B8)),1,1)))
This can then be copy/pasted into the rest of row 9.
This model approach is pretty flexible: the churn rates (row 2) and subscription rates (row 8) can both be varied month to month; the total number of retained monthly subscriptions is calculated automatically.

Formula to offset a value in excel to a different column?

I am trying to create a formula that offsets an "up-sell" amount 12 periods (columns) in the future.
For background: Each of our customers provides monthly recurring revenue (like a subscription. At the beginning of the model (1/1/18), I have a random number generator from 1-20 that calculates the period in which the customer could be up-sold.
As you can see in the photo and the formula that the IF statement looks at the random upsell period and adds in the additional revenue ($100) into that period and periods after that.
I am trying to create the formula so that once the if statement is satisfied (the random period >= the period that the cell is in) it adds the revenue 12 periods later, not in that period itself.
For example, Customer ABC's random upsell period is 3, instead of adding that revenue in period 3, I want it to add it in period 15 (12 periods later).
The formula that is currently being used is: =IF($B8>E$5,$C8,$C8+$D$3)
Please see attached image for reference, thank you]1
Not sure if that's what you are looking for and only works if your periods increments in 1 even after 12++ (13,14,15...).
Sorry you'll have to redefine the references but that gives you an idea:
In C5 : IF(C$4>12,IF(OFFSET(C4,0,-12)>=$A5,$C$2+$B5,$B5),$B5)

Finding a shorter period of days within a longer period for calculation

I have a set of dates, in total 7 periods spanning 6 months each with corresponding calculation factor.
I will have user input of period for which they'd want the calculation to be done, which can fall within one of the 6 months periods or encompass between two or more such periods wholly or partially.
Illustration:
The preset periods:
User input:
I've obtained decimal value (monthly basis) of the periods input by the user for calculation. For first instance (see user input), the decimal value for the period 01-01-2015 to 29-04-2015 will be 3.97 on monthly basis. The calculation for that period would be like:
n*3.97*113%
For the second instance, the decimal value for the period 30-04-2015 to 30-06-2015 would be 2.03, which would be used to do calculation at 113% and then the result will be added to the calculation done at 119% using the decimal value 5.65 for the period 01-07-2015 to 20-12-2015:
(n*2.03*113%)+(n*5.65*119)
Think I can handle the breaking up of periods since the revision event is bi-annual on particular dates but advice regards to that is welcome. More importantly, I need help tracing the preset calculation factor (say 132%) corresponding to the period input by the user as illustrated above. Is it feasible?
I will use the standard approach for finding the overlap between two dates and will split the task into three parts as in my answer to this recent question.
(1) The first part is finding the overlap between the user's range of dates and one or more revision periods in whole months and will need an array formula. I have chosen to use the Datedif function 1 to get the difference in months between the beginning and end of the overlaps. If there is no overlap, the start date fed in to Datedif will be after the end date, and it will return an error which can be trapped by Iferror. If the user's dates start in A2 and B2, this gives in C2:
=SUM(IFERROR((DATEDIF(IF(K$2:K$8>A2,K$2:K$8,A2),IF(L$2:L$8<B2,L$2:L$8,B2),"m")+1)*M$2:M$8,0))
which has to be entered as an array formula using CtrlShiftEnter
The above result includes the first and last months entered by the user even if they are incomplete months. It's then necessary to subtract any missing days in the first and last months.
(2) Missing days in first month as a fraction of the number of days in that month in D2:
=SUMIFS($M$2:$M$8,$K$2:$K$8,"<="&A2,$L$2:$L$8,">="&A2)*(A2-EOMONTH(A2,-1)-1)/(EOMONTH(A2,0)-EOMONTH(A2,-1))
A noted by OP, this could also have been done using sumproduct, vlookup or index/match.
(3) Missing days in last month as a fraction of days in that month in E2:
=SUMIFS($M$2:$M$8,$K$2:$K$8,"<="&B2,$L$2:$L$8,">="&B2)*(EOMONTH(B2,0)-B2)/(EOMONTH(B2,0)-EOMONTH(B2,-1))
The total is just (1)-(2)-(3) or
=C2-D2-E2
I have put the results of OP's two examples for comparison in H2 and H3: my results agree with them in the first 3 significant figures.
n*3.97*113%
(n*2.03*113%)+(n*5.65*119)
In all cases I have set n=1 and ignored the fact that the rate is a percentage.
This shows how the results would be calculated manually:
1 Pros of using Datedif:
(1) Works across year boundaries unlike just using Month function.
(2) Works conveniently with Iferror to identify non-matching date ranges.
Cons of using Datedif:
(1) It is an undocumented function and may be withdrawn in future.
(2) In this particular case, all date calculations are within the same year so Month would be useable.

Excel NPV/IRR - Populate a range from annual savings as input

To provide a valid input to the NPV and IRR functions, I'm trying to create a range of values of annual even returns for a given number of years. Although question is also valid for any similar excel function, my specific case is related with NPV and IRR.
My initial investment is 25000$ and I get 5000$ from that investment annually for 10 years. Interest rate is 10% for NPV and IRR.
Instead of providing these values like BEFORE I'm looking for a way similar to AFTER, if possible without any macros, only by using a few functions?
Your first formula is actually discounting a 25000 investment made in 1 years time, then receiving cashflow of $5000 a year from the end of year 2, year 3 .... year 11
You wanted
=NPV(C1,C5:C14)-C4
=5777.84
which as an annuity can be calculated directly with
=-PV(10%,10,5000)-25000
=5777.84
On your second formula
=RATE(10,5000,-25000)
=15.1%

Resources