Trion Documentation V2 · Live on Robinhood Chain
Browse documentation

Funding and fees

In one paragraph: A perpetual has no expiry, so something must pull its price back toward the index. That something is funding: once an hour, longs pay shorts (or shorts pay longs) an amount proportional to how far the book traded above or below the index during that hour. Trion quotes the rate as an 8-hour number for comparability with other venues but settles it hourly and caps it. Separately, trading fees are a small percentage of each fill.

Funding applies to perpetuals only, and no perpetual is listed on Robinhood Chain today. Capped options pay no funding: on the V3 book a buyer or writer pays the premium and, when their order takes a resting one, a 1% taker fee; in the V2 pool, the buyer pays the premium and a swap fee. See status.

How the hourly rate is built

  1. Every 5 seconds, sample the premium p = (B + A)/(2I) − 1 from the qualified book.
  2. Average the valid samples over the completed UTC hour → P.
  3. Add an interest term and dead-band: F8 = P + clamp(0.0001 − P, −0.0005, +0.0005). The 0.0001 is a fixed 0.01% per 8 hours interest component that applies to every market.
  4. Convert to hourly and cap: Fh = clamp(F8 / 8, −0.0036, +0.0036) (±0.36% per hour).
  5. Payment per account: position × I at the hour boundary × Fh. Positive Fh: longs pay shorts. Negative: shorts pay longs.

The protocol keeps none of it. Funding is a transfer between traders.

"8h rate" versus what you pay

The interface may show F8 (the 8-hour figure). What actually hits your account each hour is Fh, one-eighth of that, clamped. Example (hypothetical): the book averaged 0.4% above index for an hour. F8 = 0.004 + clamp(−0.0039, −0.0005, +0.0005) = 0.0035. Fh = 0.0035/8 ≈ 0.000437 (0.0437%/h). With a 1,000 CT long at I = $2.60 (notional $2,600) you pay about $1.14 that hour.

When funding is zero

Because coverage failure sets the whole rate to zero, the interest component is not charged during a broken hour either.

When funding is applied

Your position quantity at the top of the hour is what gets charged. Before any position change after a boundary, the completed epoch is finalized and your account settles the difference; flat exits and top-ups do not wait. A position opened after the boundary is not charged for that hour. An epoch still missing at the next boundary is recorded as skipped, never back-filled.

Trading fees

ItemCandidate valueNotes
Taker fee5 bps of notionalCharged to the order that takes liquidity
Maker rebate3 bps of notionalPaid from the taker's fee and credited to the maker's account at settlement; no unbacked credit, no reward token
Liquidation penalty≤ 50 bps of executed notional, ≤ your remaining equityReplaces the taker fee on liquidation fills
Options V3 maker fee0 bps of premiumThe resting order pays nothing. Governance may set either V3 fee up to the contract cap of 500 bps; every order signs maxFeeBps and a fill above it is skipped. See Options
Options V3 taker fee100 bps (1%) of premium, rounded up per fillCharged to the order that takes liquidity, deducted from cash at the fill; accrues to the exchange and is withdrawable by governance
V2 option issuance markupmodel price × 1.02Part of the premium, which goes entirely to the writer sleeve; there is no separate issuance fee. V2 series expire 2026-10-30
V2 option secondary swap fee30 bps base, 250 bps ceilingAdded to the traded bin's reserves for its LPs; the protocol keeps none. See Option pool liquidity

The net of taker fee minus maker rebate stays in the market's PerpetualV2 contract as feeCash. The current contract has no function to withdraw it, so there is no protocol revenue distribution, fee-sharing programme or farm built on it.

Every signed order carries maxFeeBps. If the market's configured taker fee is above your signed limit, the fill is rejected rather than charged. Fees cannot push an account into debt on a reducing trade.

Caveats

Source trail: docs/spec/V2_ARCHITECTURE.md §2.5, §6.1; overdrive/perps/src/v2/FundingEpochsV2.sol (REQUIRED_COVERAGE_SECONDS, EPOCH_WINDOW_SECONDS, MAX_HOURLY_RATE_WAD, finalizeEpoch, skipEpoch, epochStartTimes); overdrive/perps/src/v2/PerpetualV2.sol (taker fee / maker rebate computation, MaxFeeExceeded); overdrive/perps/script/DeployV2.s.sol (takerFeeBps, makerRebateBps); overdrive/exchange/oracle/src/publisher.ts (funding attempt), signer.ts (epoch check), publication-evidence.ts (calculateHistoricalPayload), funding-sampler.ts; overdrive/exchange/matcher/src/server.ts (fundingStatus).

Repository-owned documentation · September 2026 · Educational material, not investment advice and not an audit.