October 2, 2026 · research

Your edge vanished after the fee tier changed. Did the strategy break, or the account?

Your edge vanished after the fee tier changed. Did the strategy break, or the account?

You’ve just rerun your BTC perpetual strategy and the net Sharpe is down by a third. The signals are identical. The fills are identical. You changed one thing: your fee schedule now uses the account’s trailing 30-day volume, and the account starts the test below the tier you reached in production.

Before you rewrite the signal, separate two questions: what would this strategy have paid at a fixed fee, and what fee would this account actually have earned at each point in time? Those are different experiments. Mixing them can make a strategy look better because it trades enough to win a discount, then treating that discount as if it were free.

Start with the fee schedule, not a single rate

Most exchange fee pages give you a table: maker and taker rates by volume tier, sometimes with separate rules for spot and derivatives. Your backtest needs the effective schedule and the rule that assigns a tier. Is volume measured over 30 days? Calendar month? Does the exchange include spot and futures together? Does a token balance discount stack with the volume tier?

Write those rules down as dated inputs. For a simplified example, assume a venue assigns the next day’s rate from the previous 30 days of executed futures volume:

Trailing 30-day volumeMaker feeTaker fee
Below $1 million0.020%0.050%
$1 million to $10 million0.016%0.040%
Above $10 million0.012%0.035%

The numbers are illustrative; exchange schedules and eligibility rules change. The important detail is the timing: yesterday’s fills can affect tomorrow’s fee, but today’s fills cannot retroactively earn today’s discount.

Your backtest account needs a volume history

Suppose your strategy turns over $80,000 per day, all taker. At the entry tier, a $100,000 round trip costs about $50: $100,000 of notional traded across entry and exit, multiplied by 0.050%. At the middle tier it costs $40. That ten-dollar difference seems small until you make the round trip 800 times. Then it’s $8,000 in the test period, and the fee tier may have changed because those same trades supplied the volume.

That feedback is real, but it creates a modeling trap. If you initialize the strategy at the middle tier because it reached that tier at the end of the backtest, you’ve leaked future account activity into the past. Start with a declared prior volume, update the trailing window after each eligible fill, and apply each tier change only when the venue’s rules say it takes effect.

Keep three quantities separate: strategy notional traded, account volume eligible for tier calculation, and the fee actually charged on each fill. They may differ when the venue excludes products, counts only one side of certain trades, or grants a discount based on balances you haven’t modeled.

Run a fixed-rate test beside the account-aware one

You want two results. First, rerun the entire strategy at one conservative, fixed taker rate. This tells you how sensitive the idea is to execution costs without letting its own turnover move the goalposts. Second, run the account-aware schedule with a documented opening balance and volume history. That estimates the path this particular account might have taken under the stated rules.

Then compare the fee bill, turnover, net P&L, and drawdown. If only the account-aware run improves, ask how much came from a plausible tier transition and how much depends on starting history, cross-product volume, or a discount your account may not qualify for. If both runs lose their edge, the fee tier probably wasn’t the central problem.

And don’t let maker fills inherit the best rate while your fill model quietly assumes every passive order got hit. Your fee schedule can be exact while your fill assumptions remain fantasy. Keep those audits separate.

Make the result reproducible

Save the schedule version, tier lookback, reset timing, eligible products, and starting volume with the backtest. Include a small daily ledger: opening trailing volume, fills added, tier applied, and fees charged. When the result changes after an exchange revises rates, you’ll know whether the strategy changed, the account path changed, or the assumptions changed.

You’re trying to answer a narrow, useful question: under a fee schedule and account history you can actually describe, what did this strategy pay? If you can’t reconstruct the tier on a particular day, you don’t yet know what your backtest’s net result means.

research
← All posts