Skip to content

Gains curve

How much a model finds in its top picks.

Definition · Updated Nov 2, 2026

A gains curve shows what share of the targets a model catches as you work down its ranked list, against picking at random. The higher the curve early on, the better the model. Use it for churn, fraud and lead-scoring models.

Pay once. Every update included.

Live preview

Churn model liftShare of churners found against the share of customers contacted, ranked by the churn model: the top 20% reach 61% of churners, against 20% at random.100%75%50%25%0TOP 20% → 61% OF CHURNERS025%50%75%100%MODELRANDOM
Churn model lift
Customers contactedChurners found (model)Churners found (random)
10%36%10%
20%61%20%
30%78%30%
40%88%40%
50%95%50%
60%98%60%
70%99%70%
80%100%80%
90%100%90%
100%100%100%

Sample data: a churn model, the top 20% of accounts hold 61% of churners

Size
Legend
Data shape
A steepness for the curve and one marked point
Good for
Churn, fraud and lead models
Avoid when
There is no ranked score
Sizes
XS, S, M and L, re-laid out from the data

Anatomy

Inspect it like the Figma file.

The same layers, names and tokens as the component. Select one to read its size, fill and style.

Layers

060 / Gains curve

chart/060-gains-churn-model
plot · gains
Layer
gap area
Type
Vector
Size
720 × 231
Fill
data/primary
Group
Marks · 3

Layers

060 / Gains curve

chart/060-gains-churn-model
plot · gains
Layer
gap area
Type
Vector
Size
239 × 121
Fill
data/primary
Group
Marks · 3

Sizes

Re-laid out, never scaled.

The same data at XS, S, M and L. Every size is redrawn from the data, so text and line weights never shrink.

M against S

Width360 px480 px

Plot328 px440 px

Labels1111

Marks33

Height212 px246 px

Same tokens at every size: text styles, 1 px lines and mark radius stay put.

When to use

Is the model worth it?

Three signs it fits, and three signs another type fits better.

Is it a ranked score?

Plain shares of a total.

Yes: Keep the gains curve

Is there a random baseline?

No baseline.

Yes: Keep the gains curve

Is it one model?

Many models on many measures.

Yes: Keep the gains curve

Code and Figma

One name in Figma and in code.

Every Figma property is a prop with the same name and values. One command installs it.

Figma

chart/060-gains-churn-model

size
legend
Property = propValuesDefault
size"xs" · "s" · "m" · "l""xs"
legendtrue · falsetrue
color"cat-1" · "cat-2" · "cat-3" · "cat-4""cat-1"
npx shadcn add @chartory/gains-curve
gains-curve.tsx
import { GainsCurve } from "@/components/chartory/gains-curve"import { churnModel } from "./churn-model"export function ChurnModel() {  return (    <GainsCurve      data={churnModel}      size="m"      legend={true}    />  )}

Hearth widget

Gains curve as a widget.

The chart in a Hearth card with a hero number and two blocks. One token set, light and dark.

Code
Get the code

EmberPreset

ChartoryDefault preset

Pick the blocks, the size and the preset for your own widget.

Read the Hearth widget docs

FAQ

Gains curve questions.

What people ask before they put a gains curve in a dashboard.

Something else?

hello@usechartory.com
  • Picking accounts at random: 20% of the list finds 20% of churners. The model line above it is the gain (61% at 20% in the sample).

Related types

The same question, a different shape of answer. Every type ships in Figma and in code.

Same family

Distribution

17 types in Chartory answer this question.