TL;DR: A perp backtest is "gross" when it leaves out slippage and funding, and "net" when it includes them. Slippage costs you on every fill, so it dominates for strategies that trade often; funding accrues while you hold, so it dominates for leveraged positions held for days. The honest workflow is to run gross, then net with explicit assumptions, then a sensitivity sweep to find the cost level at which the edge disappears.
What is the difference between gross and net in a backtest?
Every trade has three kinds of cost on a perpetual futures venue:
- Fees charged by the exchange (and any builder or platform fee) on each fill.
- Slippage, the gap between the price your model assumed and the price you actually got.
- Funding, the periodic payment between longs and shorts that keeps the perp price anchored to spot.
Fees are known in advance. Hyperliquid publishes its fee schedule, with a base-tier perp taker fee of 0.045% at the time of writing. Slippage and funding are uncertain, which is why many backtests leave them out and why that omission can matter more than any indicator setting.
In this article "gross" means after fees but before slippage and funding, and "net" means after all three. That matches how Trigr labels results.
How does slippage change a backtest?
Slippage is charged on every fill, entry and exit, so its cost per trade is roughly twice the per-side assumption. Its total impact scales with how many trades you make.
A useful mental model is breakeven slippage: the per-side cost at which the average trade earns zero. If your average gross edge per trade is 0.12% of notional, the round-trip slippage that erases it is 0.12%, or 6 basis points per side. A strategy with a 1% average edge can absorb far more.
Here is a hypothetical scalping strategy with a +0.12% average gross edge per trade after fees, tested at different flat slippage values:
| Slippage per side | Round-trip cost | Net edge per trade | Share of gross edge kept |
|---|---|---|---|
| 0 bp (gross) | 0.00% | +0.12% | 100% |
| 2 bp | 0.04% | +0.08% | 67% |
| 5 bp | 0.10% | +0.02% | 17% |
| 6 bp | 0.12% | 0.00% | 0% |
| 10 bp | 0.20% | −0.08% | negative |
The signal did not change between rows. What changed is whether the strategy is worth running. That is why a single "slippage included" checkbox is less informative than a sweep across plausible values.
How should you choose a slippage value?
Think about the market and your order size, not a generic default. Deep books on BTC and ETH absorb small market orders with little impact; thinner alts and larger orders move the price more. Fast strategies that trade on volatility spikes also tend to fill worse than calm-market averages suggest.
On Trigr, slippage is a flat number of basis points you choose, applied against you on every entry and exit fill. It is deliberately simple: there is no order-book, spread, market-impact, latency or volatility model, and a zero or missing value is rejected rather than silently treated as "on." Pick a value that fits the market and size you are researching, then test a few around it.
How does funding change a perp backtest?
Funding is a transfer between longs and shorts. When the rate is positive, longs pay shorts; when it is negative, shorts pay longs. The payment is roughly rate times position notional for each settlement you hold through.
Venues settle on different schedules. Hyperliquid's funding documentation describes hourly payments at one eighth of an 8-hour rate, while Binance USDT-M futures settle every 8 hours by default, at 00:00, 08:00 and 16:00 UTC.
Three properties make funding different from slippage:
- It depends on holding time, not trade count. A position held for two weeks crosses dozens of settlements.
- It is signed. Shorts often receive funding in bull markets, so a short-biased strategy can look worse gross than net.
- It is regime-dependent. Funding tends to rise when leverage builds up in a trending market, which is exactly when trend-following longs are most active.
When funding is enabled in Trigr, it accrues at each roughly 8-hour settlement while a position is held, signed by side. You can use the historical series, which comes from Binance USDT-M 8-hour settlements, or enter your own flat rate per 8 hours. A settlement counts when it falls after your entry and at or before your exit. Be clear about what that means for a Hyperliquid strategy: Hyperliquid pays funding every hour and its rates can differ from Binance's, so the historical series is an approximation of the cost, not a record of what a Hyperliquid position paid. A trade held for three hours might cross no Binance settlement at all yet pay three hourly Hyperliquid payments. For short-hold strategies, run a flat-rate scenario as well, and read the funding line as a rough estimate either way.
Worked example: three strategy styles, gross vs net
Consider three hypothetical long-only strategies over one year. Each has fees already applied. We add 5 bp of slippage per side and a flat funding rate of 0.01% per 8 hours.
| Strategy | Trades | Avg hold | Gross edge per trade | Slippage | Funding | Net edge per trade | Gross vs net (summed) |
|---|---|---|---|---|---|---|---|
| Scalper | 1,200 | 3 hours | +0.12% | −0.10% | ≈ −0.004% | ≈ +0.016% | +144% vs ≈ +19% |
| Swing | 150 | 3 days | +0.80% | −0.10% | −0.09% | +0.61% | +120% vs +91.5% |
| Trend | 40 | 12 days | +3.00% | −0.10% | −0.36% | +2.54% | +120% vs +101.6% |
All returns are per trade on notional, summed without compounding, to keep the arithmetic visible. Funding is shown as the expected cost per trade (average hold ÷ 8 hours × rate); a backtest that charges whole settlements will make any single short trade pay either zero or one full settlement. Three observations stand out:
- The scalper and the trend strategy look similar gross, but the scalper keeps about 13% of its edge while the trend strategy keeps about 85%.
- Funding is negligible for the scalper and the largest single cost for the trend strategy.
- If funding averages 0.03% per 8 hours during the trend strategy's holding periods, its funding cost triples to 1.08% per trade and net edge falls to +1.82%.
Leverage multiplies all of these on an equity basis. At 3× leverage, a 0.10% round-trip slippage on notional is 0.30% of the capital behind the trade. Backtests are not guarantees; perps are leveraged and can lose more than expected. Our guide to crypto position sizing and risk settings covers how leverage interacts with these costs.
A workflow for honest cost assumptions
A cost model is only useful if you can see what it did. This sequence keeps it transparent:
- Run gross first. Confirm the signal has any edge at all before adding costs.
- Add slippage alone. Use a value you can defend for your market and order size.
- Add funding alone. Use historical funding for the asset, then check a flat rate that reflects a hotter regime.
- Sweep both. Find the slippage and funding levels at which net edge reaches zero, and compare them with what you expect to pay.
- Forward-test. Paper trading shows how the strategy behaves on live prices, but note that Trigr's paper agents fill at the current Hyperliquid price and pay the base taker fee and the builder fee but model no slippage or funding, so compare them with a backtest that has the same costs switched on.
If the strategy only works at costs below what you realistically pay, you have learned something valuable before risking capital.
How Trigr reports frictions
Trigr applies trading fees and the builder fee to every run. Slippage and funding are opt-in and off by default, so a first result is clearly labeled gross. When you enable either, it appears as its own line item with a before and after delta, so you can see exactly how much each cost took. The backtesting docs describe the frictions in full, and the fees page covers what Trigr charges.
The same options are available when an AI assistant runs backtests for you over MCP: slippage as flat basis points per side, and funding as the historical series or a flat per-8h rate. You can connect ChatGPT, Claude or Codex from the connect an AI assistant page. For the broader methodology, including point-in-time data and fill timing, start with the pillar guide on point-in-time backtesting.
Next steps
Rerun your most active strategy at 2, 5 and 10 bp of slippage per side and note where its edge breaks. If funding looks like a signal rather than just a cost, read about funding-rate and open-interest strategies.