ModelRisk example · General techniques
Bounded Random Walk
What does a growing, volatile series look like when practical limits hold it in? A random walk between a floor and a cap.
From the model’s saved run
Sales in month 20
Bounded and unbounded, from the same shocks.
| Measure | Unit | 10th pct | Median | 90th pct | Mean |
|---|---|---|---|---|---|
| Bounded | US$ | 1,009,057 | 1,397,018 | 1,906,603 | 1,427,217 |
| Unbounded | US$ | 1,014,417 | 1,415,907 | 1,979,409 | 1,462,508 |
| Measure | Unit | Value |
|---|---|---|
| Chance of hitting the cap in some month | probability | 32.2% |
| Chance of being at the cap in month 20 | probability | 0.9% |
| Chance of hitting the floor in some month | probability | 0.00% |
S-curve (cumulative probability) of Bounded, Unbounded from the saved simulation.
Line chart: 90th percentile, Median, Mean, 10th percentile, Cap, Floor.
The business question
A manufacturer's monthly sales are about US$1 million. They grow by about 2% a month on average but swing by about 6% a month, a lognormal random walk: each month's sales are the previous month's times a random growth factor. Two practical limits apply. Capacity caps sales: about US$1.01 million in month 1, rising by about US$67,000 a month as a new line ramps up.
Long-term contracts set a floor: about US$750,000 in month 1, falling by about US$20,000 a month as they expire. When sales hit a limit they stay there for that month, and the next month starts from the limit.
- Who it is for
- Anyone forecasting a quantity that drifts at random within physical, contractual or regulatory limits.
- Main outputs
- Sales in month 20 bounded and unbounded at P10 / median / P90 · the chance of hitting the cap or the floor · a band chart with the limits.
How the model works
Three sheets after this one, read from left to right. Each one feeds the next.
Inputs sheet
The starting sales, the average growth m and the volatility s per month, and each limit as a value in month 0 and a change per month.
Months sheet
Each month draws one standard normal shock Z. The unbounded walk multiplies the previous month by exp(m − s²/2 + s·Z). The bounded walk does the same from its own previous value and then applies MIN(cap, MAX(floor, ·)). Both walks use the same shocks.
Results sheet
Month 20's sales both ways, the chance of hitting the cap or the floor, and the band with the limits.
ModelRisk techniques
Find similar models
- Product
- Type
- Application
- Uses
The results in detail
How to read these results
- The cap starts only just above the starting sales, so about a third of the paths hit it, mostly in the first few months. Each time, the next month starts from the cap rather than from where the walk would have been, so the effect persists: by month 20 the bounded 90th percentile is several percent below the unbounded one.
- The floor almost never binds: falling from US$1 million to the contract floor would take several bad months in a row against a 2% average growth.
- Applying limits only at the end (bounding month 20 alone) would miss this: the bounds change the path, not just its end point. That is why they are applied every month.
- The band chart shows the cap and the floor as red lines: where the band runs into the cap, capacity is what limits sales.
See it move. Open the workbook, change an input on the Inputs sheet and run the simulation: every table and chart on this page updates in Excel.
Inputs and assumptions
Every assumption in the model, with its uncertainty and where it comes from. The figures are illustrative.
Sales 3 inputs
Monthly sales in month 1 and how they move.
| Assumption | Unit | Value |
|---|---|---|
| Sales in month 1 | US$ | 1,000,000 |
| Average growth per month, m | per month | 2.0% |
| Volatility per month, s | per month | 6.0% |
The limits 4 inputs
Each limit is a straight line: its value in month 0 plus a change per month.
| Assumption | Unit | Value |
|---|---|---|
| Capacity cap in month 0Month 1: about US$1.01 million. | US$ | 940,774 |
| Change in the cap per monthA new line ramps up. | US$ | 66,703 |
| Contract floor in month 0Month 1: about US$750,000. | US$ | 769,943 |
| Change in the floor per monthContracts run off. | US$ | −19,725 |
Units and conventions
- Money
- US$ per month.
- Growth m
- The average growth of the log of sales per month; −s²/2 keeps the mean growth at m.
- Bounded
- A month's sales after MIN(cap, MAX(floor, ·)).
Key assumptions and limitations
- Lognormal walk
- Monthly growth factors are independent and lognormal, as in the original example.
- Hard limits
- A limit holds sales exactly at it for the month; nothing is carried over.
- Data
- The starting value, growth, volatility and the two linear limits are those of ModelRisk's earlier Bounded Random Walk example, which used VoseLognormalE for the same step.
How to use it
- Set the starting sales, growth, volatility and the two limits on the Inputs sheet.
- Run a simulation from the ModelRisk ribbon (10,000 samples with a fixed seed are set).
- If the cap binds often, the bounded forecast is the realistic one; capacity is worth more than the unbounded forecast suggests.
ModelRisk functions used
- VoseNormal
- The monthly shock Z, shared by the bounded and the unbounded walk.
- VoseOutput
- Bounded and unbounded monthly sales as output ranges, and month 20.
- VoseSimMean, VoseSimPercentile
- Statistics of the simulation and the band.
Further reading
- Monte Carlo simulation explained (Vose guide)
- Vose, D. (2008). Risk Analysis: A Quantitative Guide, 3rd edition. Wiley: time series and geometric Brownian motion.
Download the workbook and run it yourself. It opens in Excel with ModelRisk. The free trial runs every example model.
Related example models
- ModelRisk★★★★★A Step Change in the Event Rate (Projected Cures)How many lives will a cure save if nobody knows when it will arrive?A Poisson series with a trend, thinned by a binomial from an uncertain month on.
- ModelRisk★★★★★Counts of Random Events with Trend and SeasonalityHow many car crashes will there be next year, week by week?A weekly Poisson series whose rate follows a trend, a seasonal pattern and a possible step change.
- ModelRisk★★★★★Envelope Correlation: Interest and Mortgage RatesHow do you make one variable follow another when you only know its range at a few points?Correlating two variables from expert ranges: the second's range follows the first.
An illustrative example: the figures are invented for teaching and do not describe a real company, project or asset. Last updated 9 October 2026.