DEV Community

Jack Chen
Jack Chen

Posted on

The retention treadmill behind volume-based partner tiers: a 20-line cohort model

Most exchange partner programs price your tier on recent referred fee output, not on cumulative history. That single design choice turns a static-looking percentage into a control loop with feedback — and it's the part that surprises people who model the program as "get approved once, then collect a slice."

Here's the 20-line model I run before deciding whether a channel is worth building.

Three inputs

Symbol Meaning Value used here
F exchange fees one active referred trader generates per month $800
c fraction of active traders lost per month 0.12
T monthly referred fee output your tier is priced on $30,000

F = $800 is a retail futures trader doing roughly $2M monthly notional at a ~0.04% blended maker/taker rate. T is your own estimate — exchanges don't publish tier thresholds, which is precisely why you should model the shape instead of chasing a number.

The model

F, CHURN = 800.0, 0.12      # fees per active trader per month, monthly churn

def ramp(new_per_month, months=24):
    active = 0.0
    for m in range(1, months + 1):
        active = active * (1 - CHURN) + new_per_month
        yield m, active, active * F

for m, a, fees in ramp(5):
    if m in (1, 3, 6, 12, 24):
        print(f"month {m:>2}  active {a:5.1f}  output ${fees:9,.0f}")
Enter fullscreen mode Exit fullscreen mode
month  1  active   5.0  output $    4,000
month  3  active  13.3  output $   10,618
month  6  active  22.3  output $   17,853
month 12  active  32.7  output $   26,144
month 24  active  39.7  output $   31,783
Enter fullscreen mode Exit fullscreen mode

Two results fall out of this, and both are counterintuitive if you've been doing the arithmetic in your head.

Steady state is new_per_month / c, not new_per_month × months. Adding 5 active traders a month at 12% churn doesn't build an ever-growing tree. It converges on ~41.7 active traders and ~$33.3k of monthly output. By month 24 you're at $31.8k — 95% of the ceiling. Everything after that is replacement, not growth.

The standing-still cost is T/F × c. Holding $30,000/month of output needs ~37.5 active traders, which means recruiting ~4.5 replacements every month, indefinitely:

churn / mo active traders needed new per month to stand still
5% 37.5 1.9
8% 37.5 3.0
12% 37.5 4.5
20% 37.5 7.5
30% 37.5 11.2

The tier isn't an asset you acquire once. It's a subscription you pay in acquisition, and the price is set by your churn rate — a variable most people never measure.

That's the real reason the fee-share layer behaves like an operating business rather than a link you paste. If you want the application steps, the ongoing volume and headcount gates, and the case where binding into a tree that already cleared those gates beats running the treadmill yourself, I wrote that up at how to become an OKX affiliate. The fee tables I use as model inputs live in crypto-exchange-fee-data.

Where this model is wrong

Three honest failure modes, because a model you can't break isn't a model:

  • Churn isn't a constant. It's front-loaded — a trader in month 1 is far likelier to quit than a six-month survivor. A single c overstates decay in mature cohorts and understates the month-1 bleed. If you have real data, fit per-cohort survival curves instead.
  • F is a mean over a very long tail. One high-volume account can carry the whole number while the median contributor sits near zero. That makes the tree fragile in a way the smooth curve above hides: lose the top account and output drops by more than 1/n.
  • T is unobservable. Tier thresholds are discretionary and mostly undisclosed, and split ranges are advertised as ceilings ("up to"), never guarantees. Treat every dollar figure here as a shape, not a forecast.

Not financial advice. I run an independent, non-official fee-comparison site, so read my framing as interested rather than neutral.

Top comments (0)