Trading Fees & Rates

Overview of the fee and interest-rate mechanics relevant to integrators and risk reviewers. Rates are computed once per hour from time-weighted averages of protocol state and the per-asset risk parameters. Values shown are illustrative day-zero estimates and are subject to change as we go into launch.

Spot Trading Fees

Initial spot trading fees are zero. These may be re-assessed at a later time. But in general spot traders are an important source of both deposit and book liquidity for t+ so we want to ensure we're an attractive venue for them.

Margin Trading Fees

Below are estimated day-zero fee tiers. They are subject to change.

Tier14-day Rolling Volume (USD)Taker FeeMaker FeeMaker Rebate
0-0.025%0.015%None
1>50m0.02%0.005%None
2>100m0.015%0.00%25% of taker fee
3>250m0.01%0.00%50% of taker fee

Utilization-Based Borrow Rates

Margin traders pay interest based on the utilization of the asset they're borrowing. Each asset has two borrow rates: a base rate for borrowing the asset itself, and a quote rate for borrowing USD against that asset's market.

utilization = liabilities / (min(deposits, spot_oi_cap) + liabilities)

The base rate uses the asset's own deposits in the denominator; the quote rate uses protocol-wide USD deposits (so USD liquidity is shared across markets) against that market's USD liabilities. The rate itself is a piecewise-linear "kink" curve — like those used by lending protocols such as Aave — that stays gentle at low utilization and ramps aggressively near full utilization to discourage pool depletion:

e.g.  utilization:  [0%,  40%,  70%,  85%,  95%, 100%]
      borrow rate:  [0%,   2%,   5%,  10%,  30%, 150%]   (illustrative)
utilization 0 → 100% borrow rate kink gentle steep
Illustrative borrow-rate curve: gentle at low utilization, ramping steeply as the pool approaches full utilization.

Borrowers pay interest to spot holders of the borrowed asset, distributed pro-rata to each holder's time-weighted spot deposit and capped per holder. Rates are bounded by the governed max_utilization_rate.

Funding Rates

Funding transfers value between longs and shorts to keep the book balanced — a positive rate means longs pay shorts. It is the sum of a skew component and a premium component, clamped to a governed maximum:

funding_rate = clamp(skew_component + premium_component,
                     −max_funding_rate, +max_funding_rate)

# skew: a deadzone (cliff), then quadratic growth beyond it
effective_skew = clamp(skew, −skew_cliff, +skew_cliff)
excess         = skew − effective_skew
skew_component = sign(excess) × skew_factor × |excess|² / SCALE

# premium: anchor to a base rate, bounded adjustment toward market premium
premium_component =
  premium + clamp(base_funding_rate − premium, −premium_clamp, +premium_clamp)

# where
skew    = net margin OI / max OI                      (signed)
premium = (impact_bid − oracle) − (oracle − impact_ask), normalized by oracle

The skew, premium, and the OI used here are time-weighted averages over the hour. skew_factor (K), skew_cliff, base_funding_rate, premium_clamp, and max_funding_rate are all governed per-asset risk parameters. Funding is recomputed and charged hourly.

+max −max longs pay shorts shorts pay longs −cliff +cliff deadzone ← net short net long →
Illustrative funding (skew component): zero inside the cliff deadzone, quadratic growth beyond it, clamped at ±max_funding_rate. The premium component adds a bounded shift on top.

Charges Cannot Create Bad Debt

Every interest and funding charge is capped at the midpoint between the user's maintenance-margin buffer and raw-equity bad-debt buffer. Charging to the maintenance-margin line could trigger liquidation; charging to bad debt would leave no buffer. The midpoint can make a user liquidatable, but not directly insolvent.

So how much will it cost to long or short on t+?

It's hard to predict of course, but we can infer a few things:

  1. Funding+interest on pairs that are also listed on Hyperliquid will converge to Hyperliquid's funding rate. We have a very deep cross-margining integration with Hyperliquid so basis traders will push rates in line.
  2. Funding will typically not exceed the global USD yield + the underlying's borrow rate - the underlying's yield. If it does it becomes profitable for USD holders to purchase the underlying and use it as collateral to short the pair (an internal basis trade).
  3. Funding will typically remain above the underlying's borrow rate - otherwise spot holders will sell their spot position and margin long instead.

How much will global USD yield be?

Global USD yield will be an average of profitable basis trades and leveraging yield bearing tokens.

Consider the following scenario:

USD depositors are paid: 0.11*95M + 0.18*47.5M + 0.025*900M + 0.025*1350M = 59.5M/500M = 11.9% APY

How about yield on majors?

Consider wstETH loops: wstETH yield 2.5% (500m spot OI cap), 700M of ETH deposited.

ETH depositors are paid: .023*475M + .03*1350M = 51.425M/700M = 7.3%

Rebalancing Fees

t+ considers many assets as fungible. We want to maintain a balanced distribution of fungible asset underlyings across different chains and issuers based on liquidity demands.

Actions that cause an underlying token to be underweight are charged a fee up to 2.5%. Actions that bring token deposits back up to target levels are paid a reward up to 2.5%.


user@t-plus:~$ ./trading-fees.sh
t+ trading fees & rates
PASSWORD REQUIRED
What book has the following as it's final paragraph?
It seemed a long shot. Then again, who would have thought a high-school dropout working out of a cluttered office on 50 Broad could lay low the most powerful forces in the stock market? One thing was clear-the market had to change. It was spinning out of control, plagued by costly glitches, manipulative activity, and plunging investor confidence. If nothing was done to fix it, next time the devastation could be irreversible.
>
user@t-plus:~$ ./trading-fees.sh
Welcome to perfect markets.
****************************************************************************************************
****************************************************************************************************
****************************************************************************************************
****************************************************************************************************
****************************************************************************************************
********************************************+===----===+********************************************
************************************+=-::::::::::::::::::::::-=+************************************
********************************+-::::::::::::::::::::::::::::::::-+********************************
*****************************=::::::::::::::::::::::::::::::::::::::::=+****************************
**************************+-::::::::::::::::::::::::::::::::::::::::::::-+**************************
***********************+=::::::::::::::::::::::::::::::::::::::::::::::::::=+***********************
**********************=::::::::::::::::::::::::::::::::::::::::::::::::::::::=**********************
********************=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=********************
******************+-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+******************
*****************=:::::::::::=@@@@@%+::::::::::::::::::::::::::=%@@@@@=:::::::::::=*****************
****************=::::::::::::=@@@@@%+::::::::::::::::::::::::::=%@@@@@=::::::::::::-****************
***************-:::::::::::::=@@@@@%+::::::::::::::::::::::::::=%@@@@@=:::::::::::::-***************
**************-::::::::::::::=@@@@@%+::::::::::::::::::::::::::=%@@@@@=::::::::::::::-**************
*************-:::::::::::::::=@@@@@%+::::::::::::::::::::::::::+%@@@@@=:::::::::::::::-*************
************=::::::::::::::::=@@@@@%+::::::::::::::::::::::::::=%@@@@@=::::::::::::::::=************
***********+::::::=%%%%%%%%%%@@@@@@@@@@@@@@@@@@=::::-%%%%%%%%%%@@@@@@@@@@@@@@@@@%=::::::+***********
***********-::::::=@@@@@@@@@@@@@@@@@@@@@@@@@@@@=::::-@@@@@@@@@@@@@@@@@@@@@@@@@@@@=::::::-***********
**********+-::::::=@@@@@@@@@@@@@@@@@@@@@@@@@@@@=::::-@@@@@@@@@@@@@@@@@@@@@@@@@@@@=:::::::+**********
**********=:::::::=#%%%%%%%%%%@@@@@@%%%%%%%%%%%-::::-%%%%%%%%%%%@@@@@@%##########=:::::::=**********
**********-::::::::::::::::::=@@@@@@+::::::::::::::::::::::::::=%@@@@@+::::::::::::::::::-**********
*********+-::::::::::::::::::=@@@@@@+::::::::::::::::::::::::::=%@@@@@+::::::::::::::::::-+*********
*********+:::::::::::::::::::=@@@@@@+::::::::::::::::::::::::::=%@@@@@+:::::::::::::::::::+*********
*********+:::::::::::::::::::=@@@@@@+::::::::::::::::::::::::::=%@@@@@+:::::::::::::::::::+*********
*********+:::::::::::::::::::=@@@@@@+::::::::::::::::::::::::::=%@@@@@+:::::::::::::::::::+*********
*********+-::::::::::::::::::=%@@@@@+::::::::::::::::::::::::::=%@@@@@+::::::::::::::::::-+*********
**********-::::::::::::::::::=%@@@@@+::::::::::::::::::::::::::::::::::::::::::::::::::::-**********
**********=::::::::::::::::::-#@@@@@*::::::::::::::::::::::::::::::::::::::::::::::::::::=**********
**********+-::::::::::::::::::*@@@@@#-:::::::::::::::::::::::::::::::::::::::::::::::::::+**********
***********-::::::::::::::::::-%@@@@@*-:::::::::::::::::::::::+++++++:::::::::::::::::::-***********
***********+:::::::::::::::::::+@@@@@@#-:::::::::::::::::::::#@@@@@@*:::::::::::::::::::+***********
************=:::::::::::::::::::+@@@@@@@*::::::::::::::::::+@@@@@@@*:::::::::::::::::::=************
*************-:::::::::::::::::::=@@@@@@@@#-::::::::::::-#@@@@@@@@+:::::::::::::::::::-*************
**************-:::::::::::::::::::-#@@@@@@@@@%#*===+*%%@@@@@@@@@#-:::::::::::::::::::-**************
***************-::::::::::::::::::::-%@@@@@@@@@@@@@@@@@@@@@@@@%=::::::::::::::::::::-***************
****************-::::::::::::::::::::::+@@@@@@@@@@@@@@@@@@@@*::::::::::::::::::::::-****************
*****************=::::::::::::::::::::::::-*%@@@@@@@@@@%*=::::::::::::::::::::::::=*****************
******************+-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::+******************
********************=::::::::::::::::::::::::::::::::::::::::::::::::::::::::::=********************
**********************-::::::::::::::::::::::::::::::::::::::::::::::::::::::-**********************
***********************+=::::::::::::::::::::::::::::::::::::::::::::::::::-+***********************
**************************=::::::::::::::::::::::::::::::::::::::::::::::=**************************
****************************+=::::::::::::::::::::::::::::::::::::::::=+****************************
********************************+-::::::::::::::::::::::::::::::::-+********************************
************************************+=-:::::::::::::::::::::::=+************************************
*******************************************++==------==++*******************************************
****************************************************************************************************
****************************************************************************************************
****************************************************************************************************
****************************************************************************************************
****************************************************************************************************
Press enter to continue...