Production ML
Advanced 15 min read Production ML

Retraining Strategies & Backtesting

Fresh data helps only if the new model actually beats the old one

Retraining is a decision, not a reflex: schedule-, drift- or event-triggered; with cold-start vs warm-start and a backtest against historical windows so a 'fresh' model doesn't repeat old or regress from current behavior.

retrainingbacktestcold startwarm startincremental learningtriggercandlestick
Before we start

What you will learn

  • Choose retraining triggers (schedule, drift, events) and cadence
  • Explain warm-start vs cold-start and incremental learning trade-offs
  • Run a backtest so every candidate is compared against the deployed model on the same rules
Introduction

What is this?

Retraining refreshes a model's weights and data so it tracks the present, but each retrain is a risk: it can repeat an old failure, regress from proven behavior, or silently encode the last model's biases. The craft is choosing the trigger (schedule, drift threshold, product events, human demand), starting point (cold from scratch vs warm from the previous weights), and proving the candidate via backtesting — replaying the candidate against historical windows where the incumbent outcome is known, so promotion is evidence-gated instead of scheduled hope.

Motivation

Why do you need it?

  • The world moves: retraining on stale data protects the past, not the future.
  • Frequent brute retrains waste compute and destabilize behavior users learned to rely on.
  • A backtest is the closest thing to 'will it work in the wild' you can do before traffic — skip it at your peril.
  • Start strategy decides speed and risk: cold-start is safer but slower; warm-start is faster but can inherit bias and forget.
Think about it

Mental model

Imagine

Seasonal gardening vs crop rotation planning

Think of

Retraining strategy

Watering daily (scheduled retrain) keeps things alive but wastes water when it rains. The farmer (drift detector) checks the soil and the forecast (backtest), and rotates crops deliberately (promotion gated on evidence) — because forcing last season's habits on this season's field is how harvests fail.

Mechanics

How it works

  • Trigger: schedule (weekly, nightly), drift (threshold breach), event (major release, policy change), or demand (label backlog).
  • Select window: recent data sized to relevance vs noise — more data is 'safer' but stale-er.
  • Choose start: cold (from scratch, stable, slow) vs warm/incremental (from current weights, fast, drift-sensitized) — with staleness risk.
  • Backtest: replay the candidate across historical time windows, comparing against both the incumbent AND a static baseline on fair metrics.
  • Gate: promote only when the candidate beats incumbent on the backtest plus offline holdout; wire rollback.

Retraining as an evidence-gated loop.

Trigger
Train
Backtest
Holdout eval
Gate + promote
Real world

In production

  • A demand forecaster retrains weekly, warm-starting from the incumbent weights to preserve recent seasonality gains, with a 52-week backtest.
  • A fraud team retrains only on drift-triggered events, always cold-starting and backtesting against a 6-month fixed window to avoid chasing fraudsters' adaptation.
  • A content recommender retrains nightly cold-start on 90 days of data plus a daily warm-start blend for latency-sensitive delivery.
Guidelines

Best practices

  • Pre-define the retrain review thresholds before the trigger fires.
  • Always backtest against both the incumbent and a static baseline; never compare a candidate to itself.
  • Track retrain lineage: data window, seedings, start-mode, and the exact evidence the gate used.
  • Monitor post-retrain drift: a 'better' backtested model that drifts fast is worth less than a stable one.
  • Rollback path first: a retrain promotion must be reversible within minutes, not after a rebuild.
Watch out

Common mistakes

  • Retraining on a trigger with no backtest — the drift alert said 'data moved', not 'retrain will help'.
  • Comparing a candidate's backtest AUC to the incumbent's current (already-drifted) numbers, an unfair race.
  • Warm-starting blindly with weights that encode the old distribution, slowing adaptation.
  • Scheduling retrains so aggressively that production behavior flips weekly and users/internal teams lose trust.
Root cause analysis

Common issues

Error
Retrained model performs worse on live data than the frozen one
Root cause

Backtest unfair (won against a drifted incumbent) or training data contains loop/label bias

Fix

Compare candidates on a fixed historical window with the incumbent's original weights, and clean loop biases.

Error
Warm-start retrain learns nothing new
Root cause

Low learning rate, no new-info data, or data window too small

Fix

Verify the new window actually contains distributional change and that the optimizer reaches the new plateau.

Error
Promotion flips too often
Root cause

Trigger too sensitive or cadence too tight

Fix

Add hysteresis to triggers and relax the retrain frequency; gate on sustained evidence windows.

When things break

Debugging tips

  • When a retrain regresses, diff the training windows and start-modes — cold vs warm explain most surprises.
  • Backtest on a rolling window, not one held-out slice; seasonality invisibly biases single-window verdicts.
  • Log the exact evidence that passed the gate; a 'promoted by tick-box' model is an incident without a paper trail.
  • After promotion, watch latency/quality drift for 3 windows before closing the review ticket.
Interviews

Interview checkpoint

Practice

Hands-on lab

Backtest a Candidate Before You Promote
30 min · advanced
In progress
Objectives
  • Simulate an incumbent and a retrain candidate on a time-series-based dataset
  • Backtest both on a fixed historical window with rolling fairness
  • Gate promotion on 'candidate beats incumbent AND static baseline'

Backtest a Candidate Before You Promote

30 min · advanced

0/5 steps
0%
sandbox · Linux sandbox
$
Try these commands
Test yourself

Quick quiz

0/2
1

Why must backtests compare a candidate to a static baseline, not just the drifted incumbent?

2

Warm-start retraining is always slower to respond to large distribution shifts than cold-start.

Go deeper

Official documentation