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}")
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
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
coverstates decay in mature cohorts and understates the month-1 bleed. If you have real data, fit per-cohort survival curves instead. -
Fis 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 than1/n. -
Tis 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)