Docs

Reference.

The parameters a contract carries, the rules the marks follow, the functions you can call, and where the chain details come from.

Parameters

Five values define a contract. They are fixed when the offer is posted and never change.

FieldSymbolUnitMeaning
MarkettokenThe tokenized equity whose pool is marked.
TermThoursHow long marks are collected before settlement. 24 to 720.
StrikeKvol pointsThe annualised volatility the two sides disagree about.
SizeNUSDG per pointWhat one vol point of difference is worth.
BandWvol pointsThe cap on the transfer, and the escrow each side posts. At most K.

On chain, strike and band are stored as vol points × 100 (so 52 points is 5200) and size in USDG base units, which have six decimals.

Reading a quote

A ticket of NVDA · 7d · K 52 · N 25 · W 20 means: over the next seven days one side thinks NVDA settles above 52 annualised vol points and the other thinks below. Each point of difference is worth 25 USDG, capped at 20 points, so each side escrows 500 USDG and that is the most either can lose.

To turn a strike into something a chart shows, divide by the square root of 365. A strike of 52 asks for an average day of roughly 2.7%.

Marking rules

  • At most one mark per hour per market. The call is permissionless.
  • The price is the pool's own, derived from sqrtPriceX96 in the Uniswap v4 PoolManager and quoted in USDG.
  • A pool whose in-range liquidity is under the depth floor is not marked. The previous mark carries forward.
  • A skipped hour carries forward. Carried hours contribute no return and do not count as observations.
  • Accepting an offer marks the pool in the same transaction, and fails if it cannot.
  • Settlement needs at least 24 observed returns. A term that never got marked does not settle at zero volatility: it voids and returns both escrows.
  • Marks recorded after the expiry hour are ignored by that position.

Contract interface

The full source is in contracts/TremoVol.sol. The functions a trader touches:

TremoVol.solsolidity ^0.8.24
// escrow size·band/100 and rest an offer; returns its id
post(uint32 market, bool makerLong, uint32 termHours,
     uint32 strike, uint32 band, uint128 size) → uint256

cancel(uint256 offerId)                // maker only, refunds escrow
accept(uint256 offerId) → uint256      // take the other side; marks the pool
mark(uint256 market) → bool            // anyone, once per hour
settle(uint256 positionId)             // anyone, after the expiry hour

preview(uint256 positionId) → (rv, observations)
spot(uint256 market) → (priceE18, markable)

Approve the contract to spend USDG before posting or accepting. The desk does both steps for you.

Chain

Everything the site reads comes from one place, and these are the values it is reading with right now.

Chainmarkets.json
loading

Connecting a wallet asks it to switch to that chain, and to add it if it has never seen it. Tremo asks for an account and a network. It never asks for a seed phrase, and there is no server behind this site that could receive one.

Listed markets

A name is listed when it has a Uniswap v4 pool against USDG deep enough to mark hourly. Depth is the USDG it took to move that pool's price by one percent when the market file was built, not a live reading. A market whose pool has since drained is retired: it stays on the contract so open positions settle, and the desk stops offering it.

Listed marketscontract index · token · depth at build · state
#TickerNameTokenDepthState
loading

Fees

The contract charges none. Settlement is one subtraction on data the contract already holds, and whoever pokes an hourly mark pays the gas for it.

Status

  • Working. Price reads against the Uniswap v4 PoolManager, the desk's pricing, wallet connection, and the contract with its test suite.
  • Depends on deployment. The order path on the desk lights up when markets.json carries a contract address. Until then it prices only.
  • Not done. An audit. Listing is not frozen until the owner calls freezeListing().
  • Undecided. Whether a position can change hands mid-term, and whether strikes come from a maker or from a book.

Glossary

Vol point. One percentage point of annualised volatility. A market at 52 points is expected to have days of about 2.7%.

Realized volatility. What actually happened, measured from the marks. The opposite of implied volatility, which is what a price says people expect.

Band. The cap on how far a settlement can travel from the strike, and therefore the escrow.

Mark. One hourly price observation taken from the pool.

Carry forward. Reusing the previous mark when an hour cannot be observed honestly.

Open the desk+