Tremor Launch app
Tremor documentation · v2

Trade the shake, not the price.

Tremor is a perpetual futures exchange for how crypto moves rather than where it goes. You can go long or short on implied volatility, realised volatility, the premium between them, and funding-rate spreads between venues, with capped risk and settlement on Robinhood Chain.

18 marketsUp to 10× leverageMax profit 8× margin0.05% trading feeOpen-source contracts

00Getting started

Tremor currently runs on Robinhood Chain testnet with a test dollar token, tUSDC. Nothing on the testnet has real value.

  1. Install a browser wallet. MetaMask or Rabby both work.
  2. Connect. Click Connect wallet. Tremor asks your wallet to add Robinhood Chain Testnet (chain ID 46630) and switch to it.
  3. Get gas. Claim testnet ETH from the Robinhood Chain faucet. A single transaction costs a tiny fraction of a cent's worth.
  4. Get tUSDC. Click Get 10,000 tUSDC in the order ticket. You can claim again every hour.
  5. Trade. Pick a market, choose long or short, set margin and leverage, optionally add a take-profit and stop-loss, then open. The first trade asks you to approve tUSDC once.
NetworkValue
NameRobinhood Chain Testnet
Chain ID46630
RPChttps://rpc.testnet.chain.robinhood.com/rpc
Explorerexplorer.testnet.chain.robinhood.com
Gas tokenETH

01Abstract

Most derivatives let traders bet on direction. Yet much of the risk in crypto sits in two other places: how violently prices move, and what it costs to hold leverage. Options desks trade the first through implied volatility; basis traders trade the second through funding rates. Both have been hard to reach for anyone without an options account or positions across several venues.

Tremor packages these risks as simple linear perpetuals. Each market tracks one index, computed from public venue data, written on-chain by a rate-limited, dampened oracle, and settled against a shared liquidity vault. Every position has a maximum profit, fixed and reserved at open, so the vault can always pay what it owes. Crowded trades pay the other side through a quadratic skew fee, and take-profit, stop-loss and liquidation orders are executed permissionlessly.

02Why trade the shake

  • Hedge a portfolio without picking a direction. A long C-VIX position tends to gain when markets crash or spike, whichever way they break.
  • Harvest the volatility risk premium. Implied volatility usually sits above the volatility that follows. Shorting BTC VRP collects that gap, and going long profits when it collapses.
  • Trade the funding gap between venues. FR-BASIS markets pay off when funding on Hyperliquid and OKX diverge or converge, without holding offsetting perps on both.
  • Express relative views. ETH/BTC VOL lets you bet that Ether turbulence will outpace Bitcoin's, or the reverse.

03Markets

Markets are grouped into four families. Leverage limits are set per market to match how fast each index moves.

MarketFamilyIndexSourceMax lev.Ref

Ref is the index move that equals a 100% change in notional. See trading mechanics.

04Index methodology

Implied volatility

Deribit's DVOL indices measure 30-day implied volatility from the full BTC and ETH option surfaces, in annualised percentage points. Tremor reads the latest one-minute DVOL close.

C-VIX 30D = (DVOL_BTC + DVOL_ETH) / 2 BTC-VIX 30D = DVOL_BTC ETH-VIX 30D = DVOL_ETH ETH/BTC VOL = DVOL_ETH − DVOL_BTC

Realised volatility

Realised volatility is how much the price actually moved. Tremor uses the last 168 hourly closes from Hyperliquid.

r_i = ln(close_i / close_(i−1)) for the last 168 hours RV-7D = stdev(r) × √8760 × 100 annualised, in vol points

Volatility risk premium

VRP = DVOL − RV-7D

A positive VRP means options are priced for more movement than recently happened, which is the usual state of markets.

Funding basis

Hyperliquid pays funding hourly and OKX every eight hours. Both are annualised to percent per year before taking the difference. If OKX is unreachable for an asset, Bybit is used for that asset.

HL_APR = funding_hourly × 8760 × 100 OKX_APR = funding_8h × 1095 × 100 FR-BASIS = HL_APR − OKX_APR in percentage points of APR

05Oracle and keeper

A keeper service fetches all source data, computes every index, and submits one batched update to the TremorOracle contract. Two on-chain guards limit what any update can do.

Rate limit

The oracle rejects any push that arrives less than 15 seconds after the previous one. The keeper targets one update every 30 seconds.

Dampener

Each settled value can move at most 20% of its previous level, or of the market's floor reference if that is larger, per update. A bigger jump is walked in over several updates.

base = max(|previous|, floorRef) maxMove = base × 20% settled = clamp(raw, previous − maxMove, previous + maxMove)

Both the raw and the settled value are stored on-chain, and the trade screen shows when an index is being dampened. The floor reference stops indices near zero, such as funding spreads, from being frozen by a tiny percentage limit.

Staleness

If the last update is more than 30 minutes old, opening, closing, liquidating and triggering all pause until a fresh update arrives. Deposits still work, and withdrawals work up to the free liquidity.

History

The oracle keeps a ring buffer of 480 samples, at most one per minute (about 8 hours), so charts read straight from the chain.

06Trading mechanics

Every position is linear in its index. The market's ref converts index points into a percentage of notional.

notional = margin × leverage PnL = direction × (mark − entry) / ref × notional capped at +8 × margin and floored at −margin
Example. You go long C-VIX (ref 50) with 1,000 tUSDC at 4×, so notional is 4,000. The index rises from 44 to 49, a 5-point move. PnL = 5 / 50 × 4,000 = +400 tUSDC, or +40% on margin.

Entries and exits happen at the oracle mark. There is no order book, so there is no slippage. The vault takes the other side of every trade.

07Risk engine

8× payout cap with full reservation

A position's profit can never exceed 8× its margin. That amount is reserved from the vault when the position opens and released when it closes, so every open position is fully backed. If the vault cannot reserve 8× your margin, the trade is rejected.

Liquidation

A position can be liquidated once its equity falls below 5% of notional. The remaining margin goes to the vault.

equity = margin + PnL − accrued skew fee liquidatable when equity < 5% × notional liq. price = entry − direction × ref × (margin − fee − 5% × notional) / notional

Skew borrow fee

When one side of a market holds more open interest than the other, new positions on the crowded side pay an hourly fee into the vault. The rate is fixed when the position opens.

k = |OI_long − OI_short| / (OI_long + OI_short) fee rate = 0.045% × k² per hour, on notional

At a 60/40 split the fee is 0.0018% an hour; at 90/10 it is 0.0288%. Squaring k keeps the fee near zero until a market is clearly one-sided.

Per-market leverage limits

Headline implied-vol and funding markets allow up to 10×. Spreads, realised vol and premium markets, whose indices can step sharply, are limited to 5×.

08Take-profit, stop-loss and liquidations

Take-profit and stop-loss levels are stored on the position itself, on-chain. You can set them when opening, or change or remove them later with Manage.

  • A long's take-profit must be above the mark and its stop-loss below; a short is the reverse.
  • Once the mark crosses a level, anyone can call executeTrigger. The payout always goes to the position owner.
  • The keeper scans open positions after each oracle update and executes due triggers and liquidations automatically.
  • Because execution happens at the next oracle mark, the exit price can be beyond your level in a fast move.

You can also add margin to an open position. This lowers its effective leverage, moves the liquidation price away, and raises its maximum profit to 8× the new margin.

09Fees

FeeRatePaid to
Open0.05% of notionalVault
Close (any kind except liquidation)0.05% of notionalVault
Skew borrow fee0.045% × k² per hourVault
Liquidationremaining marginVault

There are no deposit, withdrawal or keeper fees.

10Liquidity vault

The vault is the counterparty to every trade. Anyone can deposit tUSDC and receive shares.

shares minted = deposit × totalShares / vaultBalance (1:1 for the first deposit) share price = vaultBalance / totalShares withdrawable = min(your shares × share price, vaultBalance − reserved)

Share price rises with fees and trader losses and falls with trader profits. Liquidity reserved for open trades' maximum profit cannot be withdrawn until those trades close.

Known simplification. Share price uses the vault's settled balance and does not mark open positions to market. A depositor who enters while traders are deep in profit shares in those payouts once they settle. A production version would include unrealised PnL in the share price.

11Parameters

Max profit per position, on margin
10×Max leverage, headline markets
Max leverage, spread, RV and VRP markets
5%Maintenance margin, of notional
10 tUSDCMinimum margin
0.05%Open and close fee
0.045%/hSkew fee at full imbalance
20%Max oracle move per update
15 sMinimum time between updates
30 minStaleness limit before trading pauses
480On-chain history samples, 1 per minute
10,000tUSDC per faucet claim, hourly

12Contracts

$TREMOR token0x33a89618cefc38e64203070075bc767ff4e945ae
ContractAddress
Loading…

Every trade, position, index update and vault balance can be checked on the explorer. The contracts are written in Solidity 0.8.26 with no upgradeable proxies.

13Security and limits

  • Unaudited testnet software. The contracts have tests but no external audit. Do not treat them as production-ready.
  • Single keeper. One key signs oracle updates. The dampener and rate limit bound what a faulty update can do, but a multi-signer oracle is on the roadmap.
  • Update cadence. Updates are triggered by site traffic. With nobody online, indices can go stale and trading pauses after 30 minutes.
  • Source risk. Indices depend on Deribit, Hyperliquid and OKX APIs. If any source fails, the keeper skips the update rather than pushing partial data.
  • Vault accounting. Share price ignores unrealised PnL, as described in the vault section.

14Roadmap

Now · v2
  • 18 markets across four families
  • TP / SL and add-margin
  • Liquidity vault
  • Leaderboard and on-chain history
Next
  • Multi-signer oracle
  • Unrealised PnL in vault pricing
  • More realised-vol and basis markets
Later
  • External audit
  • Scheduled keeper independent of traffic
  • Mainnet deployment

15FAQ

What does a volatility point mean?

Volatility indices are quoted in annualised percentage points. A C-VIX of 45 means options price in roughly a 45% annualised standard deviation of returns, about 2.4% per day.

Why is the price I see different from the raw index?

The dampener limits each update to a 20% move. When the raw index jumps further, the settled mark catches up over several updates. The trade screen shows both.

Can I lose more than my margin?

No. Losses are floored at your margin, and liquidation happens before that at 5% of notional.

Why is there a maximum profit?

Capping each position at 8× margin, and reserving that amount up front, guarantees the vault can pay every winner in full.

Who executes my stop-loss?

The keeper does after each oracle update, but the function is open to anyone. The payout always goes to you.

Is there a Tremor token?

Yes. $TREMOR is live on stakd.tech. The only official contract address is 0x33a89618cefc38e64203070075bc767ff4e945ae. Anything else is not ours. Trading on the Tremor exchange itself uses tUSDC, not $TREMOR.