15 — Herd & Social

Information Cascades#

Mathematical
◆ The PatternWhen individuals rationally ignore their own private information and follow predecessors' actions.

Information cascades (Banerjee, 1992; Bikhchandani et al., 1992) — when individuals rationally follow others, ignoring their own private signals.

How a cascade forms:
1. Person A acts on their signal → buys
2. Person B sees A buy, combines with own signal → buys too
3. Person C infers from A+B → buys regardless of own signal
4. Everyone follows — even though total information is thin

Key insight: Cascades are fragile. A small credible contrary signal can shatter them → sudden reversal.
Worked example

Twenty people choose in turn. Each has a private signal that is right 60% of the time and sees everyone before them. Once one choice leads by two, the rest copy it and ignore their own signal. In 10,000 runs the queue ends in the wrong choice 31% of the time. Had all twenty signals been pooled and counted, the majority would be right 76% of the time (ties counting as wrong). Everyone acted sensibly; the information was lost because only actions were seen.

Where it misleads
  • Cascades are fragile: a public piece of news can break one at once, which is why herds reverse so sharply.
  • In the lab people follow their own signal more than the theory predicts, so real cascades form less often (Anderson & Holt 1997).
  • In markets prices move as people trade, which weakens pure cascades; the model is a lens, not a description.
In code
rng = np.random.default_rng(7)

def queue(n=20, q=0.6):                           # the right choice is 1; each private signal is right 60% of the time
    acts, lead = [], 0                            # lead = adopters minus rejecters seen so far
    for _ in range(n):
        signal = 1 if rng.random() < q else 0
        act = (1 if lead > 0 else 0) if abs(lead) >= 2 else signal   # two ahead: copy the crowd, ignore the signal
        acts.append(act); lead += 1 if act else -1
    return acts

wrong_cascade = np.mean([queue()[-1] == 0 for _ in range(10_000)])
pooled_right = np.mean(rng.binomial(20, 0.6, 10_000) > 10)   # if all 20 signals were shared and counted
Python, in your browser — edit the code and run it again

Assumes import numpy as np and import pandas as pd. Each snippet carries its own example numbers; the comments say which are made up.

Sources
  • S. Bikhchandani, D. Hirshleifer & I. Welch, “A Theory of Fads, Fashion, Custom, and Cultural Change as Informational Cascades”, Journal of Political Economy 100(5), 1992
  • A. V. Banerjee, “A Simple Model of Herd Behavior”, Quarterly Journal of Economics 107(3), 1992
  • L. R. Anderson & C. A. Holt, “Information Cascades in the Laboratory”, American Economic Review 87(5), 1997

Last reviewed October 2026 · How this site checks its content · Report a mistake

Pattern bridge: Sequential decisions amplifying a signal regardless of private information. In ML, this mirrors gradient cascading in deep networks.
Linked from 2
← Previous
Contrarian Thinking
Open in the full reader, with the topic sidebar