DEV Community

Jack Chen
Jack Chen

Posted on

Modeling the blended fee rate of a mixed-tier trading community

If you run a trading community — a Discord of grid-bot operators, a signal group, a small prop pod — every member sits at a different exchange fee tier. A few clear enough monthly volume to hit VIP 2 or 3; most sit at Regular. When you try to reason about "what does our group actually pay," a single headline number is useless. What you want is the blended rate: the volume-weighted average fee across everyone.

Here's how I model it.

The inputs

OKX USDT-perp taker fees by tier (published schedule, current after the April 2026 update):

Tier 30-day volume gate Maker Taker
Regular < $5M 0.0200% 0.0500%
VIP 1 ≥ $5M 0.0160% 0.0450%
VIP 2 ≥ $10M 0.0150% 0.0360%
VIP 3 ≥ $50M 0.0100% 0.0280%

Most retail communities are a long tail: a handful of high-volume members and a large base at Regular. The blended rate is dominated by where the volume sits, not by headcount.

The model

# members: (monthly_notional_usd, taker_rate)
members = [
    (2_000_000,  0.0500 / 100),   # Regular
    (2_500_000,  0.0500 / 100),   # Regular
    (6_000_000,  0.0450 / 100),   # VIP 1
    (12_000_000, 0.0360 / 100),   # VIP 2
    (55_000_000, 0.0280 / 100),   # VIP 3
]

total_vol = sum(v for v, _ in members)
# volume-weighted blended rate
blended = sum(v * r for v, r in members) / total_vol
# naive headcount average (the wrong way)
naive = sum(r for _, r in members) / len(members)

print(f"total monthly volume: ${total_vol:,.0f}")
print(f"blended (volume-weighted): {blended * 100:.4f}%")
print(f"naive (headcount avg):     {naive * 100:.4f}%")
Enter fullscreen mode Exit fullscreen mode

Output:

total monthly volume: $77,500,000
blended (volume-weighted): 0.0329%
naive (headcount avg):     0.0418%
Enter fullscreen mode Exit fullscreen mode

The naive average says 0.0418%. The real blended rate is 0.0329% — about 21% lower — because the single VIP 3 member carries most of the volume at the cheapest rate. If you price a group fee split or a community payout off the headcount average, you misjudge the pool by a fifth.

Two levers that move the blend

  1. Migration up the tiers. Moving your Regular base to VIP 1 barely dents the blend — they're small volume. Moving a mid-tier member from VIP 2 to VIP 3 moves it a lot. Effort should follow volume, not headcount.
  2. A flat fee share on paid fees. A partner-tier split applies the same fraction to everyone's paid fee regardless of tier, so it lowers the blended net rate uniformly — often a bigger, more predictable lever for the low-volume majority than chasing a tier they'll never reach.

I keep the underlying tier tables and a few community fee models in a public repo: https://github.com/jack0752168/crypto-exchange-fee-data — pull requests with other venues' schedules are welcome. The full OKX VIP tier breakdown (spot + futures, and the asset-vs-volume qualification rule) is here: https://www.jacktrader.xyz/en/blog/okx-vip-fee-tiers-2026.html

Model your community off the volume-weighted number, not the member count. The distribution is almost always more lopsided than it feels.

Not financial advice — educational modeling only. Fee schedules reflect published rates at time of writing and can change.

Top comments (0)