© Ed Seykota, 2003 - 2009 ... Write for permission to reprint.

Ed Seykota's FAQ

(formerly: Frequently Appearing Questions)

Home  ...  FAQ Index & Ground Rules  ...  Tribe Directory - How to Join

TTP - The Trading Tribe Process  ...  Rocks  ...  Glossary

  TTP Workshop  ...  Resources  ...  Site Search  ...  The Trading Tribe Book

TSP: Trading System Project  ...  Breathwork ...  Levitator

EcoNowMics  ...  Contact Us  ...  The Whipsaw Song ...  Music





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


Nick's paper on the Hole in the Bucket Model is an easy and a fun read. It is also an excellent source of insights about delays and first-order negative feedback systems.  It is also an excellent guide for model building. It brings high scientific standards to dynamic modeling. This paper is a "must read" for anyone wishing to master system dynamics. -- Ed Seykota




Clip: http://images.jupiterimages.com/common/detail/92/50/22595092.jpg


There's a hole in the bucket, dear Liza, dear Liza,

There's a hole in the bucket, dear Liza, a hole.

There's a Hole in the Bucket Song



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



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.



Time to free fall a distance (d) = √ (2*d/g)
Gravity (g) = 9.81 m/s2
Length of Dollar Bill = 0.15m
Length of Envelope = 0.24m

Distance envelope travels between

my fingers before I catch it (d)


= 0.2m

My response time delay = √ ((2*0.200)/9.81) = 0.20 secs



Key Lesson 1

A delay is the time it takes a system component to respond to a change in its environment.



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.



Step 1. Identify the Behavior


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.


Step 2. Measure the 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.



Note: I first use a Pyrex measuring cup to develop the measurement scale.  When I create the scale I discover that the measuring cup is not quite right.  I find that 5 * 100ml ≠ 500ml. At that point I redo the experiment with the 1/4-cup measure.



Pyrex Measuring Cup 



Key Lesson 2

In system modeling, data integrity and reliable measuring equipment is essential.




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


Step 3. Develop a Simple Model


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



Level (cups) = Level (cups) - Outflow Rate (cups/sec) * dt
Outflow Rate (cups/sec)   = Level (cups) / Time Constant (secs)
Solution Interval, dt (secs) = 0.10 (secs)




Behavior of Hole in the Bucket Model

Time Constant = 27.14 seconds


Step 4. Compare the Model Behavior with Actual Data


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.



Drainage Data Halving Time

3 to 1.50 cups = 19 secs
2 to 1 cups = 14 secs
1.50 to 0.75 cups = 12 secs


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.



Key Lesson 3

The Time "Constant" does not remain constant for the actual bucket.


Step 5. Measure the Structure


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 for Water 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.



Key Lesson 4

With Flow Rate and Level data you can calculate the Gain and Time Constant at each Level.


Step 6. Developing a More Accurate Model


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

Table Function



Level (cups) = Level (cups) - Outflow Rate (cups/sec) * dt
Outflow Rate (cups/sec)   = Flow Rate Function (cups/sec)
Solution Interval, dt (secs) = 0.10 (secs)



Step 7. Compare the Models


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


8. Conclusions


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


back to menu



Clip: http://images.jupiterimages.com/common/detail/92/50/22595092.jpg