How to model exponential growth for revenue forecasts

benduflot

New Member
Joined
Sep 21, 2022
Messages
3
Office Version
  1. 365
Platform
  1. Windows
Hi,

I am doing financial forecasts for a new company.

In 2023, this company plans to earn $50K. In 2024, $500K and in 2025, $4M.

I must compute the monthly revenues for these 3 years.

To do so, I would like to model an exponential curve which goes through these 3 points, i.e meaning that if I sum all the months of 2023, I must find $50K ; and if I sum all the months of 2024, I must find $500K, etc.

The idea here is to get a smooth exponential curve going through each month for the 3 years.

I have tried to use the "Data analysis toolpak" add-in in Excel, to do exponential smoothing, but I got lost quite quickly. I am not used to this add-in. And I am not even sure it is the right tool to achieve my goal.

Can you help me on this?
 

Excel Facts

Will the fill handle fill 1, 2, 3?
Yes! Type 1 in a cell. Hold down Ctrl while you drag the fill handle.
You can't do that with a constant rate exponential model. Since you have equal time intervals, you can look at the ratio of earnings to determine if the rate would be constant. We don't know what the time 0 value is, but we know the target after 1 year is 5E4, and after another year the target is 5E5. This establishes a growth rate. And if we maintain that same growth rate, then after another year the value would be 5E6 (or 5 million, not 4 million)...so we have overshot the target. And projecting back to time 0 at the 1st growth rate, we see that the time 0 value would be 5E3.

The general form for the exponential model is F=a*b^x, which can be recast in terms of a "compounding" rate, r, and expressed as F=a*(1+r)^x. So this is the familiar financial compounding formula relating present value to future value. Rather than rely on those functions, you can solve for the rate analytically, but first, you mentioned looking at the earnings each month, so the effective yearly rate and compounding intervals will be accounted for:
F = P * (1 + r/m)^(n*m)
where F is the future value, r is the annual growth rate, m the number of compounding intervals per year, n the number of years, and P is the starting value.
...then r = m*(exp(ln(F/P)/(n*m))-1)
You could split the interval into three sections and compute a rate for each, but you mentioned that a smooth curve was desired. So you are left with determining some average growth rate that comes close to the target points, but it will not go through all of them.

The formula above (and used in the worksheet) computes the growing balance (cumulative earnings), so there is no summing of months. You could extract that monthly information by either reformulating the equation above or simply taking the difference between consecutive cumulative balances.
Book1
ABCD
1exponential model
2P5000assumeda*(1+r/m)^(n*m)
3n3yrs
4m12pds/yr
5F4550000
6r250%annual rate2.500295
7
8Time (mo)ValueYearly targetsCumulative
90500050005000
1016041.79
1127300.644
1238821.791
13410659.88
14512880.95
15615564.8
16718807.85
17822726.62
18927461.89
191033183.79
201140097.89
211248452.615000055000
221358548.09
231470747.05
241585487.76
2516103299.8
2617124823.1
2718150831
2819182257.9
2920220232.7
3021266120
3122321568.2
3223388569.5
3324469531500000555000
3425567361.5
3526685575.8
3627828420.9
37281001029
38291209601
39301461631
40311766174
41322134170
42332578841
43343116163
44353765441
4536455000040000004555000
Sheet1
Cell Formulas
RangeFormula
B5B5=4000000+500000+50000
B6B6=D6
D6D6=B4*(EXP(LN(B5/B2)/(B3*B4))-1)
A9:A45A9=SEQUENCE(B3*B4+1,,0)
D9D9=C9
D21D21=SUM(C9,C21)
D33D33=SUM(C9:C33)
B9:B45B9=$B$2*(1+$B$6/$B$4)^$A9
D45D45=SUM(C9:C45)
Dynamic array formulas.

1663784928581.png
 
Last edited:
Upvote 0
Thank you so much KRice for this crystal-clear explanation! :love:

That is really really helpful!

However, in this model, I am forced to use 5000 as a starting value. Ideally, I would like this starting value to be 0 (or a very small number like 50 if we cannot use 0).
I have tried to modify the starting value to 50. But then, the sum of the whole first year is 8140€, not 50K€ anymore. Therefore, I would like to know if it is possible to build a slightly different curve, which would be quadratic rather than exponentially. I guess it would fit better to my target numbers:

Exponential vs quadratic curves.png

Do you know how to transform an exponential growth to a quadratic growth?
 
Upvote 0
You are not forced to use 5000 as a starting value, but you need to choose something other than 0 (because 0 will never increase in an exponential model). The rationale behind 5000 is based on your statement that a smooth exponential curve is needed. "Smooth" implies that there are no inflection points, which suggests a constant growth rate. But given 5E4, 5E5, and 4E6 as the benchmark points for the earnings during years 1, 2, and 3, respectively, we can determine that the annual growth rates over the interval 1-2 and 2-3 are approximately 265 % and 231 %. So I chose a rate in the neighborhood to estimate what the starting point would be to ensure a smooth curve and come reasonably close to hitting the intermediate benchmark points. And since the model was applied over the entire three year period, the endpoints match (but the interior ones not necessarily).

I don't think a quadratic (or any other polynomial) model will work well, as you will get inflections (which you don't want) with higher order models; and for a quadratic, you will have a negative trend before transitioning to positive growth.

With all of that said, I think you may want to consider splicing segments of exponential models together, taking each segment one year at a time, applying the relevant growth rate for that year and then ensuring that month 12 of one year is taken as month 0 for the next year. Here is what that looks like (see red curve) with benchmarks (black circles) for the cumulative value based on summing yearly targets. I've also compared it to the fixed growth rate 3-year model described earlier, except the starting value was set at 50 (light blue curve)...this is the curve you did not like because, as expected, it does not increase very quickly initially. Also shown is the 3-year model described earlier beginning at 5000, so that the yearly growth rates are fairly close across all three yearly intervals (green curve)...I believe you were probably okay with the closeness of that curve to the interior target points, but not pleased with the starting point. The segmented model seems to be the best approach to allow flexibility in starting lower (and using a significantly larger growth rate to hit the year 1 target) while ensuring that subsequent segments also hit the interior benchmarks. My only concern with the segmented model is whether inflection points might be obvious where the growth rates transition, but that does not appear to be an issue with the segmented exponential model (red curve).
Mrexcel_20220921.xlsx
EFGHI
2n1yrs
3m12pds/yr
4CumulPer Year
5P=F05050Annual Rate, r
6F15005050000934.1%
7F2550050500000265.3%
8F345500504000000231.0%
9
10Sequential MonthsYearly Segments (mo)ValueYearly targetsCumulative
110050
121188.92138
1322158.1402
1433281.2409
1544500.1666
1655889.5101
17661581.929
18772813.346
19885003.333
20998898.065
21101015824.56
22111128142.84
23121250050
2413161115.86
2514274628.34
2615391128.37
27164111276.5
28175135879.3
29186165921.7
30197202606.3
31208247401.8
32219302101.3
332210368894.8
342311450456
352412550050
36251655948.9
37262782236.1
38273932836.8
392841112432
402951326604
413061582010
423171886588
433282249805
443392682951
4534103199488
4635113815473
4736124550050
Sheet1
Cell Formulas
RangeFormula
G5:G8G5=SUM(H$5:H5)
I6:I8I6=G$3*(EXP(LN(G6/G5)/(G$2*G$3))-1)
E11:E47E11=SEQUENCE(37,,0)
F11:F23F11=SEQUENCE(13,,0)
F24:F47F24=SEQUENCE(12)
G11:G23G11=$G$5*(1+$I$6/$G$3)^$F11
G24:G35G24=$G$6*(1+$I$7/$G$3)^$F24
G36:G47G36=$G$7*(1+$I$8/$G$3)^$F36
Dynamic array formulas.

1663802527637.png
 
Upvote 0
Solution
That is AMAZING !! Thank you so much!

I wish I had you as an Excel teacher when I was at the uni.
 
Upvote 0
You're welcome. A quick follow-up: If you zoom in on the plot to examine the intersections of the segments, you can see evidence of the growth rate changes, as they will create inflection points. The question then becomes whether the inflection points are objectionable or noticeable. The large difference in exponential growth rates between the 0-1 and 1-2 segments is much more noticeable (when zoomed in around 12 months) than the intersection at 24 months (because the growth rates for the 1-2 and 2-3 segments are fairly close). Cells I6:I8 show the growth rates. The reason for such a large disparity in growth rate between the 0-1 and 1-2 segments is due to the very low starting point (50). If you want to investigate alternative approaches that can avoid these issues, then I would consider spline interpolation...not an exponential model, but a segmented polynomial. So you would have 3 polynomials, one for each segment, and each polynomial would have 4 coefficients. That's messier, but an option, nonetheless.
1663829441919.png
 
Upvote 0

Forum statistics

Threads
1,223,885
Messages
6,175,183
Members
452,615
Latest member
bogeys2birdies

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top