Cost Distribution based on Bell Shaped Curve

bluesband

New Member
Joined
Apr 3, 2008
Messages
3
I'm working on a budget forecast where costs are budgeted in the shape of a bell-shaped curve. Costs in the middle months are greater then costs during the early or finishing months.

Say the periods occur monthly over 12 to 48 months, how can I generate a cost distribution schedule totaling 100% such that the duration and shape of the curve can be easily modified?

Once the distribution is generated I can apply this to my budget number to spread the costs.

Thanks in advance for any input.
 

Excel Facts

Test for Multiple Conditions in IF?
Use AND(test, test, test, test) or OR(test, test, test, ...) as the logical_test argument of IF.
You should post some sample data and sample results that you want, so that you can get an example.

Beyond that, look into the NORMDIST() worksheet function - which, I believe, may be part of the Analysis Toolpak in Excel 2003 and earlier.
 
Upvote 0
Sorry, no data, but here is an example that may make my objective clearer.

Say I had a $1,200 annual budget. I could forecast the monthly expenditures on a straightline basis at $100/mo. However, I know that monthly expenditures are uneven and somewhat mirror a bell-shaped curve. The distribution of costs are disproportionately low in the early months (months 1-3) and in the later months (months 10-12) while during the middle months (months 4 - 9) expenditures ramp up and are disproportionately higher.

I'd like the flexibility to vary the duration since not all expenditures occur over a 12 month period. Also varying the shape of the bell curve (steep or flat) to more closely anticipate the relative differences in monthly expenditures would be helpful.

Applications may include an advertising budget where expenditures are based on seasonality. Another application would be for construction costs where the bulk of the costs occur in the middle of the project.

Suggestions?
 
Upvote 0
Identify the distribution factors say in A11:A14 (4 different sets of rates)
Put distribution percentages in each row B11:M14 1.8% 1.8% 3.6% .... (Total 100%)
Code for allocation type C2
Amount to be allocated D2
Allocation E2 =SUMPRODUCT(SUMIF($C2,$A$11:$A$14,$D2),B$11:B$14)
Copy formula from E2 across
 
Upvote 0
The idea of using a statistically based distribution (i.e. a normal distribution, a binomial distribution, or whatever is appropriate to generate a bell-shaped curve) was to determine the allocation percentages. Once the allocation percentages totaling 100% are calculated allocating costs becomes the easy part.

Manually inputting distribution percentages defeats the purpose as this process would be time consuming if the durations of the expenditures varied between budgeted line items (i.e some costs are incurred over 6 months, some over 10 months, and others over 12 months).

Any advice on generating a bell-shaped curve such that the sum of discrete data points = 100%?
 
Upvote 0
I've been screwing around with the exact question for quite some time and finally have a good normally-distributed s-curve generation formula for spreading project costs over a number of months. Adjust the StDev parameter to flatten or steepen the s-curve.

My question now is how to do a skewed distribution where either the start or end of the project has more cost. Anyone with ideas on that would be my hero. See my post here:
non-normal (skewed) project cost distribution across months - gamma distribution? calculus?

In any event see the formula here that I believe addresses an s-curve cost spreading problem for projects, finance, construction etc. Formula is for cell R4 in the HTML below.

=+IF(AND($L4="Flat",R$3>=$I4,R$3<=$J4),$E4/$K4,0)+IF(AND($L4="S-Curve",R$3>=$I4,R$3<=$J4),(NORM.DIST((YEAR(R$3)-YEAR($I4))*12+MONTH(R$3)-MONTH($I4)+1,$K4/2,$M4,TRUE)-NORM.DIST((YEAR(R$3)-YEAR($I4))*12+MONTH(R$3)-MONTH($I4),$K4/2,$M4,TRUE))/(1-2*NORM.DIST(0,$K4/2,$M4,TRUE))*$E4,0)

Rich (BB code):
Excel 2012
BCDEFGHIJKLMNOPQRSTUVWXYZAAABAC
CodeCategoryCost Code Description Current Budget $ / MPDU $ / Mkt Rate StDevChecksumTest/Scrap
002-01ConstructionConstruction $ 10,000,000 $ - $ 121,951 Ok 664,144 794,649 913,638 1,009,390 1,071,594 1,093,168 1,071,594 1,009,390 913,638 794,649 664,144 -
<colgroup><col style="width: 25pxpx"><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col><col></colgroup><thead> </thead><tbody> [TD="align: center"]3[/TD] [TD="align: center"]Acq Loan[/TD] [TD="align: center"]Start Date[/TD] [TD="align: center"]End Date[/TD] [TD="align: center"]Months[/TD] [TD="align: center"]Timing[/TD] [TD="align: right"][/TD] [TD="align: right"]Feb-14[/TD] [TD="align: right"]Mar-14[/TD] [TD="align: right"]Apr-14[/TD] [TD="align: right"]May-14[/TD] [TD="align: right"]Jun-14[/TD] [TD="align: right"]Jul-14[/TD] [TD="align: right"]Aug-14[/TD] [TD="align: right"]Sep-14[/TD] [TD="align: right"]Oct-14[/TD] [TD="align: right"]Nov-14[/TD] [TD="align: right"]Dec-14[/TD] [TD="align: right"]Jan-15[/TD] [TD="align: right"]Feb-15[/TD] [TD="align: center"]4[/TD] [TD="align: center"]Yes[/TD] [TD="align: center"]Mar-14[/TD] [TD="align: center"]Jan-15[/TD] [TD="align: center"]11[/TD] [TD="align: center"]S-Curve[/TD] [TD="align: right"]5.0[/TD] [TD="align: right"][/TD] [TD="align: right"][/TD] </tbody>
Sheet1
[TABLE="width: 85%"] <tbody>[TR] [TD]Worksheet Formulas[TABLE="width: 100%"] <thead>[TR="bgcolor: #DAE7F5"] [TH="width: 10px"]Cell[/TH] [TH="align: left"]Formula[/TH] [/TR] </thead><tbody>[TR] [TH="width: 10px, bgcolor: #DAE7F5"]R3[/TH] [TD="align: left"]=+EDATE(Q3,1)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]S3[/TH] [TD="align: left"]=+EDATE(R3,1)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]T3[/TH] [TD="align: left"]=+EDATE(S3,1)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]U3[/TH] [TD="align: left"]=+EDATE(T3,1)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]V3[/TH] [TD="align: left"]=+EDATE(U3,1)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]W3[/TH] [TD="align: left"]=+EDATE(V3,1)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]X3[/TH] [TD="align: left"]=+EDATE(W3,1)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]Y3[/TH] [TD="align: left"]=+EDATE(X3,1)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]Z3[/TH] [TD="align: left"]=+EDATE(Y3,1)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]AA3[/TH] [TD="align: left"]=+EDATE(Z3,1)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]AB3[/TH] [TD="align: left"]=+EDATE(AA3,1)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]AC3[/TH] [TD="align: left"]=+EDATE(AB3,1)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]R4[/TH] [TD="align: left"]=+IF(AND($L4="Flat",R$3>=$I4,R$3<=$J4),$E4/$K4,0)+IF(AND($L4="S-Curve",R$3>=$I4,R$3<=$J4),(NORM.DIST((YEAR(R$3)-YEAR($I4))*12+MONTH(R$3)-MONTH($I4)+1,$K4/2,$M4,TRUE)-NORM.DIST((YEAR(R$3)-YEAR($I4))*12+MONTH(R$3)-MONTH($I4),$K4/2,$M4,TRUE))/(1-2*NORM.DIST(0,$K4/2,$M4,TRUE))*$E4,0)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]S4[/TH] [TD="align: left"]=+IF(AND($L4="Flat",S$3>=$I4,S$3<=$J4),$E4/$K4,0)+IF(AND($L4="S-Curve",S$3>=$I4,S$3<=$J4),(NORM.DIST((YEAR(S$3)-YEAR($I4))*12+MONTH(S$3)-MONTH($I4)+1,$K4/2,$M4,TRUE)-NORM.DIST((YEAR(S$3)-YEAR($I4))*12+MONTH(S$3)-MONTH($I4),$K4/2,$M4,TRUE))/(1-2*NORM.DIST(0,$K4/2,$M4,TRUE))*$E4,0)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]T4[/TH] [TD="align: left"]=+IF(AND($L4="Flat",T$3>=$I4,T$3<=$J4),$E4/$K4,0)+IF(AND($L4="S-Curve",T$3>=$I4,T$3<=$J4),(NORM.DIST((YEAR(T$3)-YEAR($I4))*12+MONTH(T$3)-MONTH($I4)+1,$K4/2,$M4,TRUE)-NORM.DIST((YEAR(T$3)-YEAR($I4))*12+MONTH(T$3)-MONTH($I4),$K4/2,$M4,TRUE))/(1-2*NORM.DIST(0,$K4/2,$M4,TRUE))*$E4,0)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]U4[/TH] [TD="align: left"]=+IF(AND($L4="Flat",U$3>=$I4,U$3<=$J4),$E4/$K4,0)+IF(AND($L4="S-Curve",U$3>=$I4,U$3<=$J4),(NORM.DIST((YEAR(U$3)-YEAR($I4))*12+MONTH(U$3)-MONTH($I4)+1,$K4/2,$M4,TRUE)-NORM.DIST((YEAR(U$3)-YEAR($I4))*12+MONTH(U$3)-MONTH($I4),$K4/2,$M4,TRUE))/(1-2*NORM.DIST(0,$K4/2,$M4,TRUE))*$E4,0)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]V4[/TH] [TD="align: left"]=+IF(AND($L4="Flat",V$3>=$I4,V$3<=$J4),$E4/$K4,0)+IF(AND($L4="S-Curve",V$3>=$I4,V$3<=$J4),(NORM.DIST((YEAR(V$3)-YEAR($I4))*12+MONTH(V$3)-MONTH($I4)+1,$K4/2,$M4,TRUE)-NORM.DIST((YEAR(V$3)-YEAR($I4))*12+MONTH(V$3)-MONTH($I4),$K4/2,$M4,TRUE))/(1-2*NORM.DIST(0,$K4/2,$M4,TRUE))*$E4,0)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]W4[/TH] [TD="align: left"]=+IF(AND($L4="Flat",W$3>=$I4,W$3<=$J4),$E4/$K4,0)+IF(AND($L4="S-Curve",W$3>=$I4,W$3<=$J4),(NORM.DIST((YEAR(W$3)-YEAR($I4))*12+MONTH(W$3)-MONTH($I4)+1,$K4/2,$M4,TRUE)-NORM.DIST((YEAR(W$3)-YEAR($I4))*12+MONTH(W$3)-MONTH($I4),$K4/2,$M4,TRUE))/(1-2*NORM.DIST(0,$K4/2,$M4,TRUE))*$E4,0)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]X4[/TH] [TD="align: left"]=+IF(AND($L4="Flat",X$3>=$I4,X$3<=$J4),$E4/$K4,0)+IF(AND($L4="S-Curve",X$3>=$I4,X$3<=$J4),(NORM.DIST((YEAR(X$3)-YEAR($I4))*12+MONTH(X$3)-MONTH($I4)+1,$K4/2,$M4,TRUE)-NORM.DIST((YEAR(X$3)-YEAR($I4))*12+MONTH(X$3)-MONTH($I4),$K4/2,$M4,TRUE))/(1-2*NORM.DIST(0,$K4/2,$M4,TRUE))*$E4,0)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]Y4[/TH] [TD="align: left"]=+IF(AND($L4="Flat",Y$3>=$I4,Y$3<=$J4),$E4/$K4,0)+IF(AND($L4="S-Curve",Y$3>=$I4,Y$3<=$J4),(NORM.DIST((YEAR(Y$3)-YEAR($I4))*12+MONTH(Y$3)-MONTH($I4)+1,$K4/2,$M4,TRUE)-NORM.DIST((YEAR(Y$3)-YEAR($I4))*12+MONTH(Y$3)-MONTH($I4),$K4/2,$M4,TRUE))/(1-2*NORM.DIST(0,$K4/2,$M4,TRUE))*$E4,0)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]Z4[/TH] [TD="align: left"]=+IF(AND($L4="Flat",Z$3>=$I4,Z$3<=$J4),$E4/$K4,0)+IF(AND($L4="S-Curve",Z$3>=$I4,Z$3<=$J4),(NORM.DIST((YEAR(Z$3)-YEAR($I4))*12+MONTH(Z$3)-MONTH($I4)+1,$K4/2,$M4,TRUE)-NORM.DIST((YEAR(Z$3)-YEAR($I4))*12+MONTH(Z$3)-MONTH($I4),$K4/2,$M4,TRUE))/(1-2*NORM.DIST(0,$K4/2,$M4,TRUE))*$E4,0)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]AA4[/TH] [TD="align: left"]=+IF(AND($L4="Flat",AA$3>=$I4,AA$3<=$J4),$E4/$K4,0)+IF(AND($L4="S-Curve",AA$3>=$I4,AA$3<=$J4),(NORM.DIST((YEAR(AA$3)-YEAR($I4))*12+MONTH(AA$3)-MONTH($I4)+1,$K4/2,$M4,TRUE)-NORM.DIST((YEAR(AA$3)-YEAR($I4))*12+MONTH(AA$3)-MONTH($I4),$K4/2,$M4,TRUE))/(1-2*NORM.DIST(0,$K4/2,$M4,TRUE))*$E4,0)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]AB4[/TH] [TD="align: left"]=+IF(AND($L4="Flat",AB$3>=$I4,AB$3<=$J4),$E4/$K4,0)+IF(AND($L4="S-Curve",AB$3>=$I4,AB$3<=$J4),(NORM.DIST((YEAR(AB$3)-YEAR($I4))*12+MONTH(AB$3)-MONTH($I4)+1,$K4/2,$M4,TRUE)-NORM.DIST((YEAR(AB$3)-YEAR($I4))*12+MONTH(AB$3)-MONTH($I4),$K4/2,$M4,TRUE))/(1-2*NORM.DIST(0,$K4/2,$M4,TRUE))*$E4,0)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]AC4[/TH] [TD="align: left"]=+IF(AND($L4="Flat",AC$3>=$I4,AC$3<=$J4),$E4/$K4,0)+IF(AND($L4="S-Curve",AC$3>=$I4,AC$3<=$J4),(NORM.DIST((YEAR(AC$3)-YEAR($I4))*12+MONTH(AC$3)-MONTH($I4)+1,$K4/2,$M4,TRUE)-NORM.DIST((YEAR(AC$3)-YEAR($I4))*12+MONTH(AC$3)-MONTH($I4),$K4/2,$M4,TRUE))/(1-2*NORM.DIST(0,$K4/2,$M4,TRUE))*$E4,0)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]G4[/TH] [TD="align: left"]=+E4/'S:\Streetscape Partners, LLC\Prince Georges County projects\Riverdale Park\Financials\[Riverdale Park proforma 2-19-14.xlsm]Assumptions'!$D$28[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]J4[/TH] [TD="align: left"]=+EDATE(I4,10)[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]K4[/TH] [TD="align: left"]=+(YEAR($J4)-YEAR($I4))*12+MONTH($J4)-MONTH($I4)+1[/TD] [/TR] [TR] [TH="width: 10px, bgcolor: #DAE7F5"]N4[/TH] [TD="align: left"]=+IF($E4=SUM(Q4:FE4),"Ok","Error")[/TD] [/TR] </tbody>[/TABLE] [/TD] [/TR] </tbody>[/TABLE]
 
Upvote 0
My question now is how to do a skewed distribution where either the start or end of the project has more cost. Anyone with ideas on that would be my hero. See my post here: non-normal (skewed) project cost distribution across months - gamma distribution? calculus?
[/code]

Ben,

I changed your formula a bit to allow the mean to skew the cash flows left or right. Instead of dividing by 1 - 2 * 'the left tail', I found the percentage from 0 to the last month (NORM.DIST($K4,MEAN,$M4,TRUE)-NORM.DIST(0,MEAN,$M4,TRUE)). Then when you increase the mean above K4/2, the cash flows skew to the right, and when you decrease the mean below the average duration, the cash flows skew to the left.

So, My formula reads:
=+IF(AND($L4="Flat",R$3>=$I4,R$3<=$J4),$E4/$K4,0)+IF(AND($L4="S-Curve",R$3>=$I4,R$3<=$J4),(NORM.DIST((YEAR(R$3)-YEAR($I4))*12+MONTH(R$3)-MONTH($I4)+1,MEAN,$M4,TRUE)-NORM.DIST((YEAR(R$3)-YEAR($I4))*12+MONTH(R$3)-MONTH($I4),MEAN,$M4,TRUE))/(NORM.DIST($K$4,MEAN,$M4,TRUE)-NORM.DIST(0,MEAN,$M4,TRUE))*$E4,0)
where, MEAN is a named range that initially contains the value, K4/2, but can be changed higher or lower to skew right or left.

There is a cash flow model developed by Ken-Yu Lin Runner that uses Excel's gamma distribution function to skew the cash flows, but I wanted a little more simplicity. You can find that model at the bottom of this page: http://faculty.washington.edu/kenyulin/
 
Upvote 0
Hi,

Does anyone know how to implement a bimodal distribution which cashflows can run off?

Many thanks
K
 
Upvote 0

Forum statistics

Threads
1,224,804
Messages
6,181,060
Members
453,016
Latest member
cherryfalling

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