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)
Related
I'm trying to develop a formula in MS Excel that will give me the number of occurrences a task will happen in a year (or month), based on a start date, frequency and schedule in a table. I am looking to produce a table like the following (assuming the start date is 01/01/YR1):
I'm open to VBA suggestions also.
The minimum frequency is completing the task every week. Not taking into account daily tasks here. The data is held in a table. I calculated the 'times per year' using :
=IF([#Schedule]="Months",(12/[#Frequency]), IF([#Schedule]="Weeks",(52/[#Frequency]),IF([#Schedule]="Years",1/[#Frequency],0)))
I may look to take this onto a monthly schedule also, i.e. number of occurrences for each month across 5 years. It would also be useful to specify an overall end date for when the tasks would stop. (e.g. sometimes it would be year 3, sometimes year 5)
Your help is much appreciated!
=IF(D$2=1,ROUND(D$2*$C3-0.45,0),ROUND(D$2*$C3-0.45,0)-SUM($D3:OFFSET($C3,0,D$2-1)))
The formula is dragable so just place it in D3 then drag across then down. Also note the change in format of the table so the year numbers are usable in the calculations.
Note: I would suggest that the value the 5th year of the 2.5 year frequency is incorrect.
In the 3rd year you would do it and have a half year remaining. Then add that to years 4 & 5 and you get 2.5 time to do it again.
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.
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.
I would like to generate a mock time series quarterly dataset from, say, 2000-2016 for a variable (quarterly credit growth) that averages around a certain value (say, 30%). Can anyone give a suggestion on how to do this in principle?
Edit: what I was implying were the actual data values for each time period, i.e. data with a certain mean and variance.
Found a solution with a code in Matlab, for anyone interested, see below in answers.
Excel approach:
You can make column A your date list. In A1, or A2 or more if you have header rows, you will have to seed your list by providing the first start date. Lets assume you put your seed date in A2. I would then go about adding 3 month to you start date using a formula, and copy down until you have hit your desired date. In order to add the 3 months I would use the following in A3.
=date(year(A2),Month(A2)+3,day(A1)
that will give you the first day of the month every 3 months. If you want the first day of the month every 3 months, set the day to 1 like so:
=date(year(A2),Month(A2)+3,day(A1)
And end of month could be calculated as:
=eomonth(date(year(A2),Month(A2)+3,day(A1)),0)
however I would prefer to do the end of month calculation based on the row you are in so I would do it more like:
=EOMONTH($A$2,(rows($A$2:A3)-1)*3)
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