© Ed Seykota, 2003 - 2009 ... Write for permission to reprint.
Ed Seykota's FAQ
(formerly: Frequently Appearing Questions)
The Hole in the Bucket Model
Exploring Delays through a Series of Experiments
by Nick Louca, July, 2009
Revision: September 2009
(c) 2009 by Ed Seykota
There's a hole in the bucket, dear Liza, dear Liza,
There's a hole in the bucket, dear Liza, a hole.
In this paper, I develop models of delays in Excel as I explore delays in depth. Ed guides me through a series of experiments during the study. I base my conclusions about delays on empirical evidence. I go through a series of steps to develop the models that I use to gather insights about delays. I share these insights in this paper along with some key lessons that I discover about system modeling and delays. I find the process of conducting real life experiments exciting and challenging. I also find that the more confusion I go through during the whole process the more AHA’s I have both about myself and about the potency of System Dynamics in explaining how the real world operates. I also conclude that confusion is a natural part of gaining knowledge.
What is a Delay?
I decide to do some research on delays in order to get a better understanding about delays and their impact on systems. I do some research from various sources on the internet, including Road Maps. I notice that many explanations about delays do not satisfy my curiosity. I still feel that I miss a clear understanding about the nature of delays and how they occur within systems.
I discuss my concern about delays with Ed. Ed looks at the Milk Glass Video Game model and asks me to identify where the delay is in the model. I tell Ed that the delay is in the Policy. Ed asks me again where in the Policy is the delay. I tell Ed that the delay is between my eyes and hand. Ed asks me to define exactly where the delay is. Is it in my hand or in my eyes? The delay is in neither of the two. The delay occurs inside my nervous system as it reacts to the feedback that I receive about the Level.
Ed produces a $1 Dollar note and asks me to hold out my index finger and thumb. Ed holds the note perpendicular to the ground and places the Dollar note between my finger and thumb and asks me to catch the note as soon as he drops it. Ed and I try the experiment three times and each time the Dollar note falls to the ground before I can catch it. I have an AHA. My delay time is the time it takes to close the gap between my index finger and my thumb.
Ed gets an envelope which is longer than the one Dollar note. We try the experiment again. This time I catch the envelope before it falls to the ground.
Catching the Envelope
Catching the Envelope
My exact delay time is a function of the length of the envelope that passes through my thumb and index finger before I can catch it. I am now clear what a response time delay is.
I now have a good understanding of what a delay is. I also reflect about how I respond to events in my life and what my response time is to some of these events.
Following the Dollar and envelope experiment Ed asks me to build a model of a delay with a plastic water glass that slowly drains water out through a hole at the bottom.
Building The Hole in the Bucket Model
I go through a series of steps to develop the model. These steps are a general guide to system modelling.
I realize that as the water drains, the Level tracks the water towards the bottom of the glass. I guess that this is a First Order Negative Feedback loop where the behavior is asymptotic tracking. I also watch the cup drain to assess if my guess is right. The cups seems to drain asymptotically. I am eager to carry out this experiment and identify the exact behavior.
I start my experiment with the plastic water glass with a hole in the bottom and a 1/4-cup measure. I put masking tape vertically on the plastic glass, upon which I draw a measurement scale. I close the hole on the bottom of the glass and use the measuring cup to fill the glass, 1/4-cup at a time in order to create the measurement scale. I develop a scale from 0 to 3 cups.
Plastic water glass with measurement scale and 1/4-cup measure.
Now that I have a measurement scale, my next step is to measure the behavior of the system. I collect data about how the water drains from the glass. I fill the glass to the 3 cups Level and let it drain. I use a stopwatch to measure how long it takes the water to pass by each 1/4-cup line on my scale. I notice that as the water level decreases so does the rate at which the water flows out of the hole.
Observing the behavior as water drains
through the hole at the bottom (yellow circle).
Water Glass with Hole
Actual Drainage Behavior: Table Function
Water Glass with Hole
Actual Drainage Behavior: Graph Form
My next step is to develop a simple model that can re-produce the drainage data from step 2. I use a simple First Order Negative Feedback loop with a Time Constant. I figure that I can get the Time Constant from the drainage data.
Structure of 1st Order Negative Feedback Model with Time Constant
I know from Road Maps that asymptotic decay of a Level has a constant half-life and that the Time Constant ~ half-life / 0.7. I notice the time it takes for the Level to fall from 3 to 1.5 cups is 19 seconds. I calculate the Time Constant to be: 19 seconds / 0.7 = 27.14 seconds. I build an Excel Model and plug 27.14 seconds into my model. I also try various other values for the Time Constant to see if I can find a perfect fit to the actual drainage data.
Structure of Hole in the Bucket Model with Time Constant
Note: The model now includes units of measure
Behavior of Hole in the Bucket Model
Time Constant = 27.14 seconds
I compare the behavior of the Excel model to the actual drainage data. I get a good approximation of the actual behavior but I do not get an exact match.
Actual Data vs. Excel Time Constant Model
Comparison of 3 different Time Constants
I make a comparison between different Time Constants. I can clearly see that none of the simple models fit the actual drainage data. I see that the Time Constant for the actual data is not constant! It changes with the Level. I go back and confirm this by noticing that the half-life on the actual drainage data is not constant.
I discuss this with Ed who advises me that I can measure the flow rate at each Level to find out exactly how the Time Constant changes as a function of the Level.
I want to find the Time Constant at each Level. I can determine this by measuring the Outflow Rate at each Level. The Time Constant at each Level = Level / Outflow Rate.
Measuring the Flow Rate at each Level
I want to find the exact relationship between the Outflow Rate and the Level.
I can find the Outflow Rate at each Level by opening the hole in the bottom of the glass and then by adjusting the water faucet to bring the water level to each 1/4-cup Level mark. Once the Level stabilizes at each Level, I can simply measure the Outflow Rate with a measuring cup. I collect water for 10 seconds at each Level. I arrange all my readings in a table.
I notice water draining out of the water glass
at a flow rate of 0.08 cups per second
when the Level is at the 2-cup Level.
(Yellow Circle & Arrow)
Flow Rate Data
forWater Glass with Hole
Note: Time Constant = Level / Outflow Rate, Gain = 1 / Time Constant
At a Level of 2 cups the Outflow Rate is 0.08 cups per second (yellow highlight).
Note: The Level does not reach zero in real life.
I look at the data that I collect during the experiment. I notice that the Time Constant does indeed change with the Level. I can see how my model cannot be accurate with a constant Time “Constant.”
Outflow Rate at Different Levels
see table, above
Time Constant at each Level
Time Constant = Level / Outflow Rate
(Yellow circle indicates my original guess)
Gain at each Level
Gain = 1 / Time Constant
Note: some model builders prefer using Gain in their
models rather than its reciprocal, the Time Constant.
I now have enough information to develop a more accurate model.
The new model has a Flow Rate Function instead of a simple Time Constant. I use a custom table function to implement this in Excel.
Structure of Hole in the Cup Model with Table Function
Flow Rate at Different Levels
I implement the model in Excel and I run it. I notice that the behavior I get is much closer to the actual Level drainage curve.
I also use a Time Constant of 19 seconds to make comparison to the Table Function model. I find that the Time Constant of 19 seconds is a better fit than the other Time Constants I try during my experiments.
The Table Function Model fits the actual data
better than the TC = 19 seconds model
I get more insights about delays by developing the models and going through the experiments of the Hole in the Bucket model. I now understand that a delay represents the time it takes for a Level to respond to a change in a Rate. I also see how delays are inherent in most systems and that Levels cannot change instantaneously.
I feel that understanding delays is important as they determine much of the dynamic behavior of systems. Some examples of delays include delays in personal circumstances such as the time it takes to reduce weight and achieve ideal weight.
Your weight Level does not decrease the moment you decrease you caloric intake rate. It takes time.
Delay in Achieving Ideal Weight
Another example is the time it takes to improve one’s reputation. It takes time for the reputation level to respond to a change in the rate of doing good deeds.
In cases where you do not know the units of measurement, you can make them up, as long as they are consistent. For example I might measure reputation with a scale between 0 and 10 “Integrity units.”
Delay in Improving Reputation
Other insights I have during my process include:
a) the Time Constant does not remain constant in non-linear systems; it is a
function of the Level;
b) using a Time Constant can give a rough approximation to actual behavior;
c) measurement of flow rates at each Level is essential to building an accurate model; and
d) in modelling systems it is essential to ensure that the units of measure are consistent.
Note: Excel Hole in the Bucket Master File