lasso docs
lasso is a perpetuals exchange built on hooke's tokenized stocks on robinhood chain. this page is the whole protocol: how prices come from hooke, how trades and the pool work, and exactly how $lasso is earned.
hooke's two prices
hooke puts stocks onchain in a way that no other venue does: every stock gets two prices that are allowed to disagree.
- the share price. hooke's oracle registry publishes the real stock price every few seconds while the market is open, with a
marketOpenflag and an expiry. for XMAX this is what the share trades at. - the token price. the onchain token (hXMAX) trades against USDG in a uniswap v4 pool, 24/7. its price is set by buyers and sellers, so it floats above or below the share.
what keeps them close is hooke's fee hook: a dynamic tax on every swap. trades that push the pool price toward the oracle price pay the base rate; trades that push it away pay more, rising with the deviation. the token can run at a premium, but it costs more and more to keep it there.
that gap, the token premium, is the thing lasso is built around. hooke also launches memecoins that trade against hXMAX, so meme holders carry XMAX exposure whether they want it or not (see other hooke tokens).
markets
each hooke stock becomes two lasso markets. both settle in USDG; profit and loss are paid from the same pool.
| market | priced off | trades | max leverage | maintenance |
|---|---|---|---|---|
| XMAX | hooke oracle, the real share | while the stock market is open. closes always fill. | 10x | 1% of size |
| hXMAX | hooke pool: spot vs hooke's 30-min TWAP, whichever is worse for you | 24/7 | 5x | 2% of size |
XMAX is leveraged exposure to the stock itself. it follows the real share price, so it opens with the us stock market (9:30 to 16:00 new york time, weekdays). outside those hours you can still close at any time, at a 0.5% spread, so you are never trapped over a weekend.
why XMAX doesn't open new positions after hours
when the stock market closes, the share price stops moving and hooke's oracle keeps reporting the last close until the next open. news doesn't wait for the bell: earnings, filings and headlines land overnight. if lasso let you open XMAX positions against that frozen price, anyone could read the news, open at yesterday's close, and collect the gap from lps at the open. that isn't trading, so new XMAX risk waits for the bell. every perp on a real stock works this way.
hXMAX is the 24/7 market. hooke's token keeps trading in its pool overnight and reacts to news first, and lasso's hXMAX market follows it. when the share is closed, the app points you there, with a live countdown to the next open.
hXMAX is exposure to the token. opening a long or closing a short uses the higher of spot and TWAP; opening a short or closing a long uses the lower. a quick spike in the pool therefore cannot be sold into lasso for 30 minutes, which is what makes a pool-priced perp safe to run.
the premium trade
short hXMAX and long XMAX in the same size, and the stock cancels out. what is left is a short on the premium: you profit when the token falls back toward the share, which is exactly the direction hooke's tax pushes it. flip both legs to go long the premium.
two notes. the XMAX leg only opens while the stock market is open, so put it on during market hours. and each leg pays its own fees, so the premium has to move more than the round trip (about 0.4% to 1.4% depending on skew, see fees) for the trade to pay.
orders
lasso never fills against a price that existed when you clicked. every order is two steps:
- you place the order. your collateral is escrowed in the contract.
- a keeper executes it at the first price that qualifies: for XMAX, the first oracle price published after your order; for hXMAX, any time from 2 seconds later, at the spot/TWAP rule above.
you set an acceptable price (the app derives it from your slippage setting). if the execution price is worse, or the market is closed, or a limit is hit, the order is cancelled and your collateral refunded instead of reverting. you can cancel a pending order yourself at any time; after 5 minutes anyone can cancel it and the collateral still goes back to you.
position sizing: collateral is in USDG, size is in USD. minimum collateral after fees is $5. one position per market per side per wallet; opening again adds to it at a blended entry price.
fees
| fee | rate | paid |
|---|---|---|
| open | 0.10% of size | on open, from collateral |
| tension | 0% to 0.50% of size, scales with the skew your trade creates | on open |
| close | 0.10% of size | on close or liquidation |
| borrow | up to 100% APR on size, times pool utilisation | accrues; settled whenever the position changes |
| closed-market spread | 0.50% against you | only on XMAX closes while the market is closed |
| LLP deposit / withdraw | 0.10% | stays in the pool |
the tension fee
the pool is the counterparty, so one-sided open interest is risk for lps. lasso prices that risk the way hooke prices deviation from the oracle: a trade that pulls long and short open interest toward balance pays only the base fee; a trade that makes the heavy side heavier pays extra, linear in the skew after the trade.
first long into an empty market: skew 100%, you pay 0.10% + 0.50%. a short that brings it to balance: 0.10%. the app shows the exact rate before you submit.
where fees go
80% of every fee goes to the LLP pool; 20% goes to the treasury. every dollar you pay in fees also counts toward $lasso trading rewards.
liquidation
a position can be liquidated when its equity, at the trader-worst price, falls below the maintenance level:
anyone can call it. the liquidator receives $1 from whatever equity is left; everything else goes to the pool. there is no partial liquidation and no refund of leftover collateral in v1, so treat the liquidation price in the app as a hard line and close before it.
the LLP pool
depositing USDG mints LLP. the pool is the house: it takes the other side of every position, keeps 80% of fees and 100% of trader losses, and pays trader profits.
- LLP price = pool value / LLP supply. pool value is the USDG held minus what open positions are currently up (at mid price), so unrealised trader profit is already reflected in the price you deposit or withdraw at.
- withdraw any time, as long as total open interest stays covered by the pool. the 0.10% in/out fee stays in the pool for the lps who remain.
- open interest is capped per side per market ($1m XMAX, $100k hXMAX) and in total by the pool size, so the pool can never be on the hook for more than it holds.
- holding LLP earns $lasso every second. no staking.
$lasso farming
$lasso is lasso's token. it launches later on hooke. until then, the farm contract tracks what each wallet has earned onchain, as 1:1 claims on the token. season 1 is 10,000,000 $lasso over 30 days, from launch day, in two streams:
| stream | season total | rate | who earns |
|---|---|---|---|
| liquidity | 6,000,000 | 2.3148 / second (200,000 / day) | every LLP holder, pro-rata, every second |
| trading | 4,000,000 | 1.5432 / second (133,333 / day) | traders, per UTC day, by share of fees paid |
liquidity needs nothing from you beyond holding LLP. the lp token reports every mint, burn and transfer to the farm, so a transfer carries only future rewards and whatever you earned stays yours.
trading is grouped into UTC days. each day has a fixed emission; at the end of the day it is split among that day's traders in proportion to the USD fees they paid (open, tension, close and borrow fees on both markets). your share is an estimate while the day runs and becomes final and claimable at 00:00 UTC. because every point is bought with fees that go to the pool, farming by wash-trading costs real money.
the math
these are the exact formulas the contract uses, with all divisions rounding down.
liquidity
trading
guarantees
- no emission while nobody holds LLP; nothing is backfilled when the first lp arrives.
- every share rounds down, so the sum of all claims never exceeds
totalEmitted(), andtotalEmitted()never exceeds the season budget. - the season end is fixed in the contract. extending it later does not pay for the gap.
- these hold under a fuzz test of 10,000 random sequences of deposits, withdrawals, transfers, fees and time jumps, plus a full fork test suite against live hooke contracts.
other hooke tokens
hooke's meme launchpad has 35 launches and, at the time of writing, one graduated token (WOLFPACK). lasso does not list memes yet, on purpose: a graduated meme trades only in its own hXMAX pool, that pool holds roughly $75k of depth against a $2m market cap, and its hook has no TWAP. a perp on it would let anyone move the pool with a few thousand dollars and collect from lps at leverage, and no fee or cap makes that safe at this depth.
what works today: memes are priced in hXMAX, so every meme holder is implicitly long XMAX. shorting hXMAX on lasso hedges that. meme markets can be added the moment a pool is deep enough; the only requirement is a price source the pool cannot be pushed through cheaply.
risks
- oracle. XMAX depends on hooke's single oracle publisher. if it stops, XMAX prices go stale and that market halts until it resumes; hXMAX keeps trading.
- pool pricing. hXMAX is priced off a pool. the TWAP rule, hooke's tax and the $100k per-side cap limit manipulation; they do not make it impossible.
- keeper. orders need a keeper to fill. if it is down, orders wait and can be cancelled for a full refund. liquidations also depend on keepers, which is a risk to lps.
- liquidation is total. leftover collateral goes to the pool.
- admin. one owner key can change market parameters, fees, limits and price sources, and pause trading. it cannot take funds from the pool directly.
- regulation. leveraged exposure to equities is regulated in most places. check your jurisdiction.
contracts
robinhood chain, chain id 4663. collateral is USDG (0x5fc5…d168).
| contract | address |
|---|---|
| lasso (pool, orders, positions) | 0xcbbe708dce939f2772b70967c1d0eb8e11b5dc27 |
| lassofarm ($lasso emissions) | 0xc97493e716190bfc2cc7479ed28041ea295b1695 |
| LLP (pool share token) | 0xbd380f2c9829816edac44335a7a081f3cd557fdb |
| hookepriceadapter | 0xff915229f38f74fe57410deb901efb2ade684c56 |
| hooke oracle registry | 0x33c5341dc45e389b2a993f4599649d121646240c |
| hooke fee hook (hXMAX/USDG) | 0xb51d89bbc50b5ae469be8cfbf305cab6ff3a50cc |
parameters: order ttl 5 min · pool-market execution delay 2 s · protocol fee share 20% · liquidation reward $1 · min collateral $5 · oracle staleness grace 120 s.