Loops That Amplify, Loops That Correct
Causal loopsPart II · Feedback · Chapter 4 of 12 · the first of two chapters on causal loops
Why do some changes snowball while others settle? A causal loop diagram shows the loops a change runs around, and whether each amplifies the change or corrects it.
Print this chapter, with a sheet for each exercise and the answers at the back, from its PDF.
Signals you need this diagram
Section titled “Signals you need this diagram”- A change seems to feed itself.
- Something keeps drifting back to where it was, however hard anyone pushes on it.
- A fix worked for a while, then stopped, or began working against you.
- An explanation’s becauses run in a circle.
- People disagree about what causes what, and arguing hasn’t settled it.
A week of short nights
Section titled “A week of short nights”A deadline costs you two nights’ sleep. Foggy on Wednesday afternoon, you have a coffee at three, finish the job, and lie awake until one. On Thursday, foggier, you have a double at two. By Friday the caffeine has you sleeping five hours a night.
At the weekend, noticing how tired you are, you go to bed at nine two nights running, and by midweek you’re yourself again.
One change fed itself: less sleep, more coffee, less sleep. The other corrected itself: the further behind you fell, the harder you caught up, until there was nothing left to catch up on.
What the notation expresses
Section titled “What the notation expresses”Variables
Section titled “Variables”Every name on the diagram is a variable: a quantity that can rise or fall, such as sleep debt or hours slept.
That rules out actions and events. Test a name by putting more in front of it: more afternoon caffeine makes sense; more drink coffee doesn’t. Naming a variable as an action is the bad diagram’s mistake.
Polarity
Section titled “Polarity”An effect means that a change in one variable causes a change in another; its polarity shows which way. A + effect means they move in the same direction: more sleep debt, more afternoon caffeine. A − effect means they move in opposite directions: more afternoon caffeine, fewer hours slept.
+ doesn’t mean good and − doesn’t mean bad, and neither gives size: caffeine might cost ten minutes of sleep or two hours.
In a causal loop diagram every effect carries a polarity; an influence claim, drawn in an influence map, carries none until it is upgraded to a causal claim.
Sleep debt raises afternoon caffeine, caffeine cuts hours slept, and fewer hours slept raise sleep debt. A closed path of effects like this is a loop. A chain shows how one thing affects another; a loop shows how a thing ends up affecting itself.
A reinforcing loop makes a change snowball, in whichever direction it starts: debt brings coffee and more debt, but a good night likewise brings less coffee and another good night. A balancing loop makes a change settle, moving a variable toward a target and opposing any push away from it: the further behind on sleep you fall, the harder you try to catch up.
Each loop’s label, drawn inside it with a curved mark showing which way it circulates, is its kind and a number: R1, R2 for reinforcing loops, B1, B2 for balancing ones. Its name describes what it does, not what it’s about: spiral, not coffee.
The parity rule
Section titled “The parity rule”The parity rule: a loop with an even number of − effects is reinforcing, and one with an odd number is balancing. Zero counts as even.
Each − effect reverses a change passing through it. Two reversals cancel, so the change comes back pointing the way it set out, and grows; one or three leave it pointing against itself, and it shrinks.
For the spiral, the lab’s check gives this working:
R1 (spiral) has 2 − effects (afternoon caffeine → hours slept, hours slept → sleep debt): an even number, so it is reinforcing, as declared.
At planetary scale, less Arctic sea ice reflects less sunlight, so the ocean warms, and warmer water melts more ice: again two − effects, so reinforcing.
The gap
Section titled “The gap”A balancing loop closes a gap: the difference between the value someone wants and the value they have. Here it’s sleep debt, the sleep you need minus the sleep you get.
Draw it as its own variable, fed by the target from outside the loop. That shows the loop’s target, and raises two questions about any balancing loop: who set it, and could it move?
In a feedback control diagram, the words target, gap and measured value (the reading the target is compared with) are written above the names of the variables in those parts, and a person chooses the target: chapter 8’s target and gap.
Delays
Section titled “Delays”A delay, two short strokes across an effect, means that the change arrives later than the cause: late enough to change what the loop does. Sleep debt builds for days before anyone acts on it, so the effect from sleep debt to early nights carries a delay, and the spiral, whose changes arrive within a day, gets a head start.
In a balancing loop with a delay, the correction continues after the gap closes; the variable overshoots its target and oscillates instead of settling.
In a stock & flow diagram, a delay on a flow holds material in transit and a delay on a signal holds a reading of the material: chapter 7’s material and signal delays.
Behavior notes
Section titled “Behavior notes”A behavior note names, on the diagram, the behavior you expect the structure to produce: oscillation, overshoot, decline, then recovery. It makes the diagram a prediction: if what happens differs, the structure you drew is missing something.
Coupled loops
Section titled “Coupled loops”Loops that share a variable are coupled: a change in one loop changes the other. In the full sleep diagram, the spiral and catching up share sleep debt, hours slept and the effect between them.
Which loop dominates depends on which is stronger at the time: early in the week, the spiral; once the debt is felt, catching up.
Leverage points
Section titled “Leverage points”A leverage point is a variable proposed as the place to intervene, drawn as a box with a question mark on each side. In the sleep diagram it’s afternoon caffeine: cutting it weakens the spiral and leaves the slow balancing loop less to correct.
It’s a hypothesis, not a proven fix: someone else might propose early nights, arguing that noticing the debt sooner would help more. Either proposal can be tested against the diagram.
What stays informal
Section titled “What stays informal”A causal loop diagram shows structure only, not size: when amounts decide the question you need numbers, which chapter 6’s stocks begin to supply.
Nor does it show sequence: for the order in which things happen, use a numbered list. A loop diagram of a sequence is the bad diagram’s mistake.
Nor everything: the sleep diagram leaves out stress, exercise and the deadline, keeping only the loops that explain the behavior in question.
When nothing feeds back, a sentence does the job.
The bad diagram
Section titled “The bad diagram”What’s wrong with this diagram of keeping a household pantry stocked?
Its structure is sound: a closed loop, one − effect, labeled B1, a delay on the right effect. But its names, stock the shelves, order groceries and receive the delivery, are actions done in order and fail the more test, so the diagram is a to-do list bent into a circle, and its polarities mean nothing: what would more receive the delivery cause?
In the lab it passes every check, with a notice on each of its three names.
The corrected diagram
Section titled “The corrected diagram”The correction keeps every effect, every polarity, the delay and the loop, and renames the three variables as quantities.
Changed: 3 labels. Effects unchanged.
Now each effect is a checkable claim: more food in the pantry, fewer groceries ordered (−); more ordered, more delivered a few days later (+, delayed); more delivered, more food in the pantry (+). One − effect, so the loop is balancing: it holds the pantry near full. With the delay: reorder before the first delivery arrives and the pantry overfills.
Notation moves
Section titled “Notation moves”| Notation move | When | What it shows | Example |
|---|---|---|---|
| Name a variable as a quantity | What rises or falls | afternoon caffeine, not drink coffee | |
Mark an effect + or − | Which way each change runs | afternoon caffeine → hours slept is − | |
| Close a loop and label it | A chain returns to its start | How a change comes back to itself | R1 spiral |
Count the − effects | Before labeling a loop | The loop’s kind | two − effects, so reinforcing |
| Draw the gap as a variable | A balancing loop has a target | What the loop closes, and its target | sleep debt, fed by sleep needed |
| Mark a delay | The change arrives late enough to alter the loop’s behavior | Where a correction can overshoot | sleep debt → early nights |
| Add a behavior note | You expect a pattern over time | A prediction to check | decline, then recovery |
| Propose a leverage point | You choose where to intervene | A hypothesis to test | afternoon caffeine |
Check your understanding
Section titled “Check your understanding”Overdoses, calls to 911 and burnout, redrawn
Section titled “Overdoses, calls to 911 and burnout, redrawn”Redrawn from Rachel L. Thompson, Nasim S. Sabounchi, Syed Shayan Ali, Robert Heimer, Gail D’Onofrio and Rebekah Heckmann, “Using qualitative system dynamics modeling to understand overdose bystander behavior in the context of Connecticut’s Good Samaritan Laws and identify effective policy options”, Harm Reduction Journal 21, 124 (2024), Fig. 2, panels a and b. CC BY 4.0.
Panels a and b drawn as one diagram; the heavier red lines that pick out each panel’s loop drawn like every other line; Overdose, Calling 911 and Saving a Life renamed as amounts; OUD spelled out; the two names about first responders shortened; each loop named; panel c, the whole model, left out.
Exercises
Section titled “Exercises”Passing the checks means meeting the brief, not being right.
CL 01A riverbank cleanup that grows by word of mouth
One reinforcing loop
Neighbors meet one Saturday a month to clear litter from a city riverbank. Each cleared stretch shows from the footpath, and people who walk there talk about it. Some of them come to the next cleanup, and some of those keep coming. Show the smallest complete feedback explanation. Leave out the weather and the litter the river carries in.
The brief
- Use exactly four variables. checked by the lab
- Close one loop. checked by the lab
- Mark every effect + or −. checked by the lab
- Label the loop R1. checked by the lab
- Give the loop a short name. you check this
Your palette
variable effect polarity loop reinforcing loop
To draw in the lab, use a tablet or a larger screen. Everything else reads normally here.
Press an empty spot to add a variable and type its name. Drag a variable to move it. Select a variable, an effect or a loop label to change it. Double-click or double-tap a variable or a loop's label or name to edit its words in place, or select it and use Rename or the fields under the canvas.
Nothing selected. Select a variable, an effect or a loop label on the canvas, and what you can change shows here.
The tools
- Variables V
- add a variable (press an empty spot), move one (drag it), rename one (double-click it, or Rename under the canvas), or select anything.
- Effects E
- draw an effect by dragging from one variable to another.
- Loop L
- declare a loop by selecting its effects in order, then label and name it.
Keys
- R reverse the selected effect
- +− the selected effect's polarity
- Delete delete what's selected
- Ctrl+Z undo
- Ctrl+Shift+Z redo
- Esc clear the selection
- Enter finish the words you're writing
- Esc cancel them
Keys act on the lab you last used, or on the open lab view, and never while you type.
0 of 7 checks passed; 7 pending.
- Use exactly four variables. (Not started)
- Close one loop. (Not started)
- Mark every effect + or −. (Not started)
- Label the loop R1. (Not started)
Always checked
- Each loop's kind matches its − effects (Not started)
- Loop labels are unique and match their kind (Not started)
- No variable's name breaks the more test's three rules (Not started)
Written feedback
One defensible answer
It opens here once you've drawn at least one variable in the lab above. Your attempt saves as you draw.
CL 02Hunger and eating
One balancing loop
When hunger rises, a person eats. Food eaten fills the stomach, and as fullness grows, hunger falls. Once hunger is low, eating stops until it returns hours later. Show this correction as feedback, not as a sequence of meals. One effect reverses direction, and the loop's kind follows from it.
The brief
- Use three or four variables. checked by the lab
- Find the single − effect. checked by the lab
- Label the loop B1. checked by the lab
- Name its target-seeking behavior. you check this
Your palette
variable effect polarity loop reinforcing loop balancing loop
To draw in the lab, use a tablet or a larger screen. Everything else reads normally here.
Press an empty spot to add a variable and type its name. Drag a variable to move it. Select a variable, an effect or a loop label to change it. Double-click or double-tap a variable or a loop's label or name to edit its words in place, or select it and use Rename or the fields under the canvas.
Nothing selected. Select a variable, an effect or a loop label on the canvas, and what you can change shows here.
The tools
- Variables V
- add a variable (press an empty spot), move one (drag it), rename one (double-click it, or Rename under the canvas), or select anything.
- Effects E
- draw an effect by dragging from one variable to another.
- Loop L
- declare a loop by selecting its effects in order, then label and name it.
Keys
- R reverse the selected effect
- +− the selected effect's polarity
- Delete delete what's selected
- Ctrl+Z undo
- Ctrl+Shift+Z redo
- Esc clear the selection
- Enter finish the words you're writing
- Esc cancel them
Keys act on the lab you last used, or on the open lab view, and never while you type.
0 of 6 checks passed; 6 pending.
- Use three or four variables. (Not started)
- Find the single − effect. (Not started)
- Label the loop B1. (Not started)
Always checked
- Each loop's kind matches its − effects (Not started)
- Loop labels are unique and match their kind (Not started)
- No variable's name breaks the more test's three rules (Not started)
Written feedback
One defensible answer
It opens here once you've drawn at least one variable in the lab above. Your attempt saves as you draw.
CL 03A housing shortage and the building boom that overshoots it
Balancing loop with delay
A growing city has fewer homes than its households need, and rents climb. High rents lead developers to start new buildings, which take two to three years to finish. Starts continue while rents stay high, so the homes arrive together and overshoot the need. Draw the intended correction, with the delay on an effect, not in a new variable.
The brief
- Show the homes needed, the shortage, building starts, and the housing stock. checked by the lab
- Put a delay on building starts → housing stock. checked by the lab
- Use one behavior note. checked by the lab
- Name the likely behavior in it: oscillation. you check this
Your palette
variable effect polarity delay loop balancing loop gapdrawn as an ordinary variable behavior note
To draw in the lab, use a tablet or a larger screen. Everything else reads normally here.
Press an empty spot to add a variable and type its name. Drag a variable to move it. Select a variable, an effect or a loop label to change it. Drag a behavior note to move it. Double-click or double-tap a variable, a loop's label or name or a behavior note to edit its words in place, or select it and use Rename or the fields under the canvas.
Nothing selected. Select a variable, an effect, a loop label or a behavior note on the canvas, and what you can change shows here.
The tools
- Variables V
- add a variable (press an empty spot), move one (drag it), rename one (double-click it, or Rename under the canvas), or select anything.
- Effects E
- draw an effect by dragging from one variable to another.
- Loop L
- declare a loop by selecting its effects in order, then label and name it.
- Note N
- place a behavior note (press where it goes).
Keys
- R reverse the selected effect
- +− the selected effect's polarity
- Delete delete what's selected
- Ctrl+Z undo
- Ctrl+Shift+Z redo
- Esc clear the selection
- Enter finish the words you're writing
- Esc cancel them
Keys act on the lab you last used, or on the open lab view, and never while you type.
0 of 6 checks passed; 6 pending.
- Show the homes needed, the shortage, building starts, and the housing stock. (Not started)
- Put a delay on building starts → housing stock. (Not started)
- Use one behavior note. (Not started)
Always checked
- Each loop's kind matches its − effects (Not started)
- Loop labels are unique and match their kind (Not started)
- No variable's name breaks the more test's three rules (Not started)
Written feedback
One defensible answer
It opens here once you've drawn at least one variable in the lab above. Your attempt saves as you draw.
CL 04A friendship group that grows until gatherings feel crowded
Coupled R and B loops
A group of friends meets every Friday evening, and members invite friends of their own; some of those stay. As the group grows, the gatherings get crowded, conversations split up, and members enjoy them less and invite fewer people. Build one reinforcing loop of growth and one balancing loop of crowding around the group's size, which they share.
The brief
- Create one R loop. checked by the lab
- Create one B loop. checked by the lab
- Share at least one variable between them. checked by the lab
- Place the variables so that no two effects cross. you check this
Your palette
variable effect polarity loop reinforcing loop balancing loop
To draw in the lab, use a tablet or a larger screen. Everything else reads normally here.
Press an empty spot to add a variable and type its name. Drag a variable to move it. Select a variable, an effect or a loop label to change it. Double-click or double-tap a variable or a loop's label or name to edit its words in place, or select it and use Rename or the fields under the canvas.
Nothing selected. Select a variable, an effect or a loop label on the canvas, and what you can change shows here.
The tools
- Variables V
- add a variable (press an empty spot), move one (drag it), rename one (double-click it, or Rename under the canvas), or select anything.
- Effects E
- draw an effect by dragging from one variable to another.
- Loop L
- declare a loop by selecting its effects in order, then label and name it.
Keys
- R reverse the selected effect
- +− the selected effect's polarity
- Delete delete what's selected
- Ctrl+Z undo
- Ctrl+Shift+Z redo
- Esc clear the selection
- Enter finish the words you're writing
- Esc cancel them
Keys act on the lab you last used, or on the open lab view, and never while you type.
0 of 6 checks passed; 6 pending.
- Create one R loop. (Not started)
- Create one B loop. (Not started)
- Share at least one variable between them. (Not started)
Always checked
- Each loop's kind matches its − effects (Not started)
- Loop labels are unique and match their kind (Not started)
- No variable's name breaks the more test's three rules (Not started)
Written feedback
One defensible answer
It opens here once you've drawn at least one variable in the lab above. Your attempt saves as you draw.
CL 05Borrowing to get to the end of the month
Short-term gain, long-term erosion
A household's bills outrun its income, and it covers the month's gap with a credit card. The cash closes the gap at once. Weeks later, repayments with interest start taking money from every month, and the gap reopens wider.
The brief
- Separate fast relief from slow consequence. you check this
- Mark at least one delayed effect. checked by the lab
- Make the variable you would monitor first a leverage point. checked by the lab
Your palette
variable effect polarity delay loop reinforcing loop balancing loop leverage point
To draw in the lab, use a tablet or a larger screen. Everything else reads normally here.
Press an empty spot to add a variable and type its name. Drag a variable to move it. Select a variable, an effect or a loop label to change it. Double-click or double-tap a variable or a loop's label or name to edit its words in place, or select it and use Rename or the fields under the canvas.
Nothing selected. Select a variable, an effect or a loop label on the canvas, and what you can change shows here.
The tools
- Variables V
- add a variable (press an empty spot), move one (drag it), rename one (double-click it, or Rename under the canvas), or select anything.
- Effects E
- draw an effect by dragging from one variable to another.
- Loop L
- declare a loop by selecting its effects in order, then label and name it.
Keys
- R reverse the selected effect
- +− the selected effect's polarity
- Delete delete what's selected
- Ctrl+Z undo
- Ctrl+Shift+Z redo
- Esc clear the selection
- Enter finish the words you're writing
- Esc cancel them
Keys act on the lab you last used, or on the open lab view, and never while you type.
0 of 5 checks passed; 5 pending.
- Mark at least one delayed effect. (Not started)
- Make the variable you would monitor first a leverage point. (Not started)
Always checked
- Each loop's kind matches its − effects (Not started)
- Loop labels are unique and match their kind (Not started)
- No variable's name breaks the more test's three rules (Not started)
Written feedback
One defensible answer
It opens here once you've drawn at least one variable in the lab above. Your attempt saves as you draw.
CS 04Kelsham Primary School: funding that follows its pupils
Coupled loops, a delay and a leverage point
Kelsham Primary School is paid £4,800 a year for each pupil, set from the count each October and paid through the school year after it. In October 2020 it had 126 pupils in five classes. By October 2023 it had 108, the governors could pay for four teachers, and Years 3 and 4 became one class. Ruth Okafor, the head teacher, hears from some parents that mixed-age classes are why they chose Brayford Primary School, six miles away, where classes hold up to 30. Others stay because Kelsham's classes are smaller: 88 pupils in four classes in October 2026. Tom Hale, who chairs the governors, asks where the school could act. Draw both stories as loops through the pupils on roll, and mark the variable you would change first as a leverage point.
The brief
- Close one reinforcing loop through the school's funding and its teachers. checked by the lab
- Close one balancing loop through class size. checked by the lab
- Let the two loops share at least one variable. checked by the lab
- Mark the delay the October count makes. checked by the lab
- Make the variable you would change first a leverage point. checked by the lab
- Name each loop by what it does. you check this
Your palette
variable effect polarity delay loop reinforcing loop balancing loop leverage point
To draw in the lab, use a tablet or a larger screen. Everything else reads normally here.
Press an empty spot to add a variable and type its name. Drag a variable to move it. Select a variable, an effect or a loop label to change it. Double-click or double-tap a variable or a loop's label or name to edit its words in place, or select it and use Rename or the fields under the canvas.
Nothing selected. Select a variable, an effect or a loop label on the canvas, and what you can change shows here.
The tools
- Variables V
- add a variable (press an empty spot), move one (drag it), rename one (double-click it, or Rename under the canvas), or select anything.
- Effects E
- draw an effect by dragging from one variable to another.
- Loop L
- declare a loop by selecting its effects in order, then label and name it.
Keys
- R reverse the selected effect
- +− the selected effect's polarity
- Delete delete what's selected
- Ctrl+Z undo
- Ctrl+Shift+Z redo
- Esc clear the selection
- Enter finish the words you're writing
- Esc cancel them
Keys act on the lab you last used, or on the open lab view, and never while you type.
0 of 8 checks passed; 8 pending.
- Close one reinforcing loop through the school's funding and its teachers. (Not started)
- Close one balancing loop through class size. (Not started)
- Let the two loops share at least one variable. (Not started)
- Mark the delay the October count makes. (Not started)
- Make the variable you would change first a leverage point. (Not started)
Always checked
- Each loop's kind matches its − effects (Not started)
- Loop labels are unique and match their kind (Not started)
- No variable's name breaks the more test's three rules (Not started)
Written feedback
One defensible answer
It opens here once you've drawn at least one variable in the lab above. Your attempt saves as you draw.
Sources
Section titled “Sources”- Donella H. Meadows, Thinking in Systems: A Primer (Chelsea Green, 2008), chapter 1, on reinforcing and balancing loops, and chapter 2, on delays.
- Donella H. Meadows, Leverage Points: Places to Intervene in a System (Sustainability Institute, 1999), on leverage points.
- John D. Sterman, Business Dynamics: Systems Thinking and Modeling for a Complex World (Irwin/McGraw-Hill, 2000), chapter 5, on causal loop diagrams: polarity, a loop’s kind, delays, and naming variables as nouns rather than actions.
- John D. Sterman, “System Dynamics Modeling: Tools for Learning in a Complex World”, California Management Review 43, no. 4 (2001), a short introduction to the same ideas.
- George P. Richardson, “Problems with Causal-Loop Diagrams”, System Dynamics Review 2, no. 2 (1986), on what polarity does and doesn’t mean.
- National Snow and Ice Data Center, Why sea ice matters, on why melting ice speeds further melting.