Subscriber Churn as a Markov Chain: Interactive Worksheet Based on Goalhanger Numbers
stochastic-processessimulationworkshop

Subscriber Churn as a Markov Chain: Interactive Worksheet Based on Goalhanger Numbers

UUnknown
2026-03-11
9 min read
Advertisement

Learn Markov-chain models of subscriber churn using Goalhanger’s 250k milestone — build transition matrices, compute steady-states, and run interactive simulations.

Hook: Struggling to make stochastic processes click? Model real-world churn with Goalhanger’s milestone

If your students or you get lost on abstract Markov chain theory, you’re not alone. Teachers need crisp, data-driven labs and students want practice that connects to real companies. In 2026, one of the clearest, motivating datasets is Goalhanger’s subscriber milestone — 250,000 paying users — which gives us a realistic sandbox for building transition matrices, running simulations, and computing steady-state distributions. This interactive worksheet teaches discrete stochastic processes end-to-end: from defining states and estimating probabilities to interpreting long-run revenue and designing retention interventions.

Why model churn as a Markov chain in 2026?

Late 2025 and early 2026 saw subscription businesses double down on predictive retention: AI-driven personalization, cohort-level analytics integrated into analytics stacks, and privacy-first experiments that aim to reduce churn without intrusive tracking. Modeling churn as a Markov chain gives students and analysts a compact, explainable framework to ask and answer operational questions quickly:

  • How does the mix of monthly vs annual plans affect long-run subscriber counts?
  • Which small reduction in monthly churn has the biggest revenue impact?
  • How long until a subscriber base “settles” into a steady pattern after a marketing burst?

Markov models are also ideal for classrooms because they’re hands-on: you can compute a transition matrix on a whiteboard, run a Monte Carlo simulation in a browser, and derive policy insights all within one lab session.

Motivating dataset: Goalhanger’s 250,000 paying subscribers

Press Gazette reported that Goalhanger exceeded 250,000 paying subscribers across shows like The Rest Is Politics and The Rest Is History. The article notes an average annual subscriber payment of about £60 and a roughly 50/50 split between monthly and annual payers. Use that milestone as a motivating cohort: it’s large enough to be realistic, recent (2026), and publicly referenced.

"Goalhanger now has more than 250,000 paying subscribers... The average subscriber pays £60 per year..." — Press Gazette (2026)

Design the model: choose states that capture retention and churn

Keep the model simple for learning, but flexible enough to extend. A compact, commonly useful choice is three states:

  • M — Monthly active subscriber
  • A — Annual active subscriber
  • L — Lapsed / non-subscriber

This state set captures plan type (monthly vs annual) and churn (lapsed). You can add states later (e.g., trials, premium tiers, or a reactivation state), but this three-state model makes the algebra tractable and the insights clear.

Estimate transition probabilities — a pragmatic approach

We rarely have perfect microdata in a classroom. Instead, you make reasonable, documented assumptions and show how to update them when richer logs arrive. Using Goalhanger as a motivating baseline, assume:

  • 250,000 total paying subscribers today — 125,000 monthly (M), 125,000 annual (A).
  • Monthly payers are more likely to churn: assume 10% monthly churn (typical for many consumer apps without heavy lock-in).
  • A small fraction convert from monthly to annual each month: assume 2% conversion.
  • Annual subscribers renew ~90% annually. Converting that to a monthly retention rate gives r = 0.90^(1/12) ≈ 0.9912 (so monthly churn ~0.88%).
  • Annual subscribers occasionally downgrade: assume 0.5% per month move to monthly; another ~0.38% per month lapse mid-year (so totals round to 1 - 0.9912 ≈ 0.0088).
  • Lapsed users can rejoin: assume 3% per month reactivate as monthly, 1% as annual.

Documenting assumptions is important: the model is a learning tool and a hypothesis generator. If you later get churn logs you can replace these with empirical transition frequencies.

Construct the transition matrix

Order the states [M, A, L]. Build the one-step transition matrix P where P[i,j] is probability of moving from state i to j in one time step (one month):

[ [0.88, 0.02, 0.10],   # from M: stay monthly, convert to annual, lapse
  [0.005, 0.9912, 0.0038], # from A: downgrade, renew, lapse
  [0.03, 0.01, 0.96] ]     # from L: reactivate monthly, annual, remain lapsed
  

Key concept: each row sums to 1. This is a discrete-time, homogeneous Markov chain assumption — probabilities don’t vary over calendar months.

Compute the steady-state distribution

The steady-state distribution π is a row vector satisfying π = πP and sum(π) = 1. It gives the long-run proportion of the population in each state if the transition dynamics stay the same.

Solve the linear system (one method: power iteration; another: solve (P^T - I)x = 0 with normalization). For our example matrix, the steady-state distribution is approximately:

  • πM ≈ 0.102 (10.2% monthly)
  • πA ≈ 0.587 (58.7% annual)
  • πL ≈ 0.311 (31.1% lapsed)

Interpretation: if nothing else changes, the system converges to ≈69% active (monthly+annual) and 31% lapsed. Starting from Goalhanger’s 50/50 split, the predicted long-run active subscriber count would fall from 250,000 to about 172,250 without new acquisitions.

Compute steady-state with NumPy (classroom-ready)

import numpy as np
P = np.array([[0.88, 0.02, 0.10],
              [0.005, 0.9912, 0.0038],
              [0.03, 0.01, 0.96]])
# power method
pi = np.array([0.5, 0.5, 0.0])  # initial distribution
for _ in range(200):
    pi = pi @ P
print(pi)

The result will be close to [0.102, 0.587, 0.311].

Run a Monte Carlo simulation (interactive)

Students can also simulate 250,000 individual subscribers and step them forward month-by-month to observe convergence and variance. In-browser JavaScript simulations are ideal for quick interactivity.

// Pseudocode (JS):
const P = [[0.88,0.02,0.10],[0.005,0.9912,0.0038],[0.03,0.01,0.96]];
let counts = [125000,125000,0]; // M,A,L
for (let month=0; month<60; month++){
  let newCounts = [0,0,0];
  for (let s=0; s<3; s++){
    for (let dest=0; dest<3; dest++){
      newCounts[dest] += Math.round(counts[s]*P[s][dest]);
    }
  }
  counts = newCounts;
  // render counts as a stacked-area chart for students
}

Visualization tip: plot proportions over months and show the steady-state line. Let students toggle one parameter (e.g., monthly churn) and re-run to see sensitivity.

Practical implications for revenue and retention strategy

Use the steady-state to compute expected long-run subscriber counts and revenue. If the average subscriber yields £60/year, a decline from 250k to ≈172k equals a revenue loss of roughly £4.7M/year (0.31 * 250k * £60). This frames concrete ROI questions for retention investments:

  • What if we reduce monthly churn from 10% to 8%? Recompute the matrix and steady-state — often small reductions dramatically increase long-run value because they compound.
  • Which is easier: boosting monthly→annual conversions by 1% or lowering annual lapses by 0.5%? Use the model to compare long-run effects per £ spent on campaigns.
  • How many reactivations per month do you need to maintain 250k subscribers? Translate this into re-engagement campaign targets.

Practice problems (worksheet)

  1. Starting from 50% monthly and 50% annual, compute the expected number of monthly subscribers after 12 months using the provided P (assume 250k total). Show calculations both with matrix powers and simulation.
  2. If you improve monthly retention so M→M is 0.92 (others adjusted so rows sum to 1), recompute π. How many subscribers does Goalhanger retain long-run? Calculate revenue change from baseline.
  3. Build a 4-state Markov model that adds a “Trial” state (T). Propose plausible transitions and explain how adding T changes steady-state interpretation.
  4. Using the dataset assumptions, estimate how many months it takes for the distribution to be within 1% of steady-state (mixing time approximation). You can use spectral gap intuition or compute P^k numerically.

Solutions (short)

  • Problem 1: Multiply initial vector [0.5,0.5,0] by P^12 or simulate; you’ll see a drift toward the steady-state, ending around [~0.12,~0.56,~0.32] proportions depending on rounding.
  • Problem 2: Changing M→M to 0.92 raises steady-state active proportions and can push long-run subscriber count back toward or above 250k; compute new π numerically to quantify.
  • Problem 3: Adding T allows modeling funnel dynamics; typically T→M high if trials convert, but T→L also possible. Steady-state now includes a pre-paid funnel layer.
  • Problem 4: For our P, mixing time is on the order of a few dozen months (often 10–30), but compute P^k and track convergence of rows to within 0.01 of π.

For advanced classes and research projects, discuss and implement these 2026-relevant extensions:

  • Non-homogeneous Markov chains — capture seasonality (holiday spikes, ad campaigns) by letting P vary by month.
  • Hidden Markov models (HMMs) — infer latent engagement states (highly engaged vs passive) from observable behavior such as session frequency, then link latent states to churn probabilities.
  • Covariate-aware transition models — incorporate subscriber features (age, device, promotion source) to build conditional transition matrices; modern retention stacks (late 2025/2026) support cohort-level matrices as standard exports.
  • Intervention simulation — use counterfactuals to evaluate A/B tests: modify P for the treated cohort and simulate lift in steady-state and short-term.
  • Privacy-aware estimation — new privacy-by-design reporting practices in 2025–26 necessitate cohort-aggregate estimation. Show how to estimate transitions from aggregated cohort tables when individual-level logs are unavailable.

Teaching tips: designing an interactive lab

Structure a 90-minute lab for high-school/undergraduate students:

  1. 10 min — Hook: present Goalhanger’s headline and ask students to predict what affects long-run subscriber counts.
  2. 20 min — Build P together from documented assumptions. Emphasize conserving probability mass per row.
  3. 20 min — Compute steady-state with NumPy/JS; visualize convergence on a chart.
  4. 25 min — Small-group challenge: tweak a parameter (e.g., reactivation rate) and present findings.
  5. 15 min — Reflection & homework: propose a real retention experiment and use the model to estimate expected long-run gains.

Assessment rubric: check clarity of assumptions, correctness of matrix construction, proper normalization, and quality of interpretation.

Common pitfalls (and how to address them)

  • Confusing row- vs column-stochastic matrices — we use rows summing to 1 (P[i,*] = distribution of next-state conditional on current state i).
  • Treating time-aggregated probabilities incorrectly — conversion rates measured per quarter must be converted to monthly probabilities if your step is monthly.
  • Over-interpreting steady-state — it assumes constant dynamics. Use it as a baseline, not a prophecy.

Actionable takeaways

  • Use a compact Markov model to turn qualitative retention hypotheses into quantifiable scenarios.
  • Small reductions in churn or modest increases in monthly→annual conversion often have outsized long-run revenue effects.
  • Always document assumptions and show how empirical logs will update transition estimates — this strengthens both classroom reasoning and industry credibility.

Final notes: why this matters now

In 2026, subscription economics dominate many media companies’ strategy. Goalhanger’s 250k milestone is more than a headline: it’s a rich teaching case. Building a Markov churn model gives students transferable skills — linear algebra, probability, simulation, and causal thinking — and produces immediately actionable business insights.

Call to action

Try this worksheet in your next lesson or self-study session: clone the NumPy notebook, run the JavaScript simulation in a browser, and tag your results with #SubscriberMarkov on social media. Want the ready-made Jupyter notebook, instructor slides, and an automated grading script? Visit studyphysics.online/markov-churn-worksheet to download the lab pack, or book a live coaching session to walk your class through the simulation step-by-step.

Advertisement

Related Topics

#stochastic-processes#simulation#workshop
U

Unknown

Contributor

Senior editor and content strategist. Writing about technology, design, and the future of digital media. Follow along for deep dives into the industry's moving parts.

Advertisement
2026-03-11T08:57:39.553Z