Trade#
Watch a market, place a trade yourself, or delegate. Paper mode is the default.
The Trade door (
/tw/trade) is as built (2026-10-12). Prices and positions come from Hyperliquid; orders go through our server, which checks them first (see below).
Three windows, never blended#
| Window | What it is | Who signs |
|---|---|---|
Watch (/tw/trade, /tw/trade/<symbol>) | Read only: the Hyperliquid xyz products (stocks and commodities), price, 24h, funding per year (est.), open interest, max leverage, a small chart and an optional depth view. No buy button. On a symbol page, Full station › opens the full Torii station for that product in a new tab. One explicit Open trade leads to Manual trade. | Nobody |
| Manual trade (a sheet on the detail page) | You place it yourself, in three beats. No order book and no ticket fields. | You, for each order |
| Delegation | A mandate: an agent trades inside limits you signed. A link to Delegate. | You sign the terms once; the contract enforces them |
Paper or live#
Every order is paper by default: a virtual fill walked through the real Hyperliquid book on a virtual 1,000 USDC, with posted fee rates. Every paper screen says Paper, not live money, and paper and live positions are listed in separate groups.
Live is switched on by us, not by you: the server flag NW_TW_TRADE_LIVE (and, when set, the NW_TW_TRADE_ALLOWLIST). With it off, or for a wallet not on the list, the same screens run on paper. The screen sends the mode it showed (mode_seen). If the server's mode differs, the order is refused (tw_mode_changed) instead of being placed in the other mode.
Manual trade in three beats#
- See. The product, its price and 24h change.
- Choose. Tap Long or Short, a leverage chip (1x up to the product's maximum on Hyperliquid, never above your own limit, which starts at 5x, and 5x is the default) and an amount chip (10, 25, 50, 100 USDC; Hyperliquid's minimum is 10). A chip that your limits or balance rule out is greyed, with the reason.
- Hold to send. Hold the button for 400 ms (Enter or Space held works too). A quick tap does nothing, in paper and in live, so a stray touch never sends. The sheet becomes the position card at once: entry, mark, unrealized P&L in USDC and percent, liquidation, and Close (also a hold). Until the order fills the card says Order sent.
In live mode your embedded wallet signs two actions for each order (the leverage, then the order; no pop-up). Each order is signed by you; there is no standing permission. The order is a single immediate order priced 5% through the mark, so it fills like a market order; there are no resting orders.
Before the first live order#
The Trading account card on /tw/trade shows your main and xyz balances and two steps: the fee approval (once; you can lower it, never raise it) and Move USDC to trading from your main Hyperliquid balance to the xyz trading balance. To get USDC onto Hyperliquid, use the existing deposit page (/torii/fund).
No exchange API keys, ever#
Torii Wallet never asks for an exchange API key. For Hyperliquid, an agent key is an on-chain approval you sign in your own wallet. It lets that key place orders for your account. It cannot withdraw. You can revoke it on chain. The approval is scoped to orders, and the exchange, not our server, enforces that scope.
My trading limits#
| Limit | House value | Rule |
|---|---|---|
| Per order | 200 USDC | You can lower it. You cannot raise it above the house value. |
| Per day (UTC) | 1,000 USDC | You can lower it. You cannot raise it above the house value. |
| Orders per day | 20 | House value only. |
| Leverage | Your limit starts at 5x | The ceiling is Hyperliquid's own maximum for the product, not a number of ours. You can lower your limit, or raise it in My limits up to the highest maximum the venue lists (the screen shows "Venue limit Nx · your limit Nx"). Order and day limits can only be lowered. An order is checked against the lower of the product's maximum and your limit. |
Your limits are stored on the server and checked on every order (PUT /tw/trade/limits); a refused raise (an order or day limit above the house value, or a leverage limit above the venue maximum) is tw_limit_raise. The same limits apply in paper and live. The leverage chips come from the server: the standard steps (1, 2, 3, 5, 10, 20, 25, 50) up to the lower of the product's maximum and your limit. Each chip shows the estimated liquidation distance, how far the price can move against a position before it is closed out, so you see that a higher leverage leaves less room. Under the leverage chips a line reads "A move of X% against you closes the position" for the chip you picked. Leverage multiplies losses as well as gains. An order is counted at the largest price it may fill at (the signed price bound, 5% through the mark), so a 100 USDC chip counts as 105. Paper and live keep separate daily totals. The old terminal cap-step route (POST /torii/order/cap/raise) is not part of this door.
Who can go live. Live needs the operator to switch it on and to list you (NW_TW_TRADE_ALLOWLIST). An empty list means nobody is live and everyone stays on paper; there is no setting that opens live to everyone.
Closing. A verified Close of a live position (reduce only, against a position your own xyz account actually holds) is not capped and works even when live trading is switched off, because it can only reduce what you hold.
What our server checks before a live order is sent#
The session is yours and has a wallet; the order is one immediate order; the signature recovers to your wallet; the product and price match what the server reads from Hyperliquid; the fee tag is not above what you approved; the size is at least 10 USDC; your own xyz account is read to check leverage and, for a close, the position; the caps are applied under a per-wallet lock so parallel orders cannot beat the day total; the same signed order cannot be sent twice; every attempt is recorded. A refusal names the limit and what is left, and nothing is sent to Hyperliquid. Only the wallet session can place, close or limit trades: a request that carries an agent or API key (X-NW-User-Key) is refused 403 not_owner. Orders and closes are throttled per wallet, 10 a minute and 60 an hour together; past that the answer is 429 tw_rate_limited with a Retry-After header, and the same request can be sent again after it. A size or price that is not finite, is above 1e12 or has more than 8 decimals is refused with tw_invalid_number. A request that fails the signature check is not recorded; once the signature proves the wallet, a refusal is recorded too. A verified close also works for a product Hyperliquid has delisted or has no price for, as long as your own account holds the position. The fifteen refusal codes are tw_over_order_cap, tw_over_daily_cap, tw_leverage_cap, tw_below_minimum, tw_signer_mismatch, tw_nonce_replay, tw_mode_changed, tw_price_moved, tw_wallet_missing, tw_limit_raise, tw_fee_tag, tw_no_position, tw_insufficient_margin, tw_invalid_number, tw_rate_limited.
Fees#
| Fee | Size | Paid to |
|---|---|---|
| Exchange fee | The venue's own tier | The venue |
| Builder fee | 0.1% of notional | Torii, set when you approve the builder fee once; it cannot be raised above that |
| Network gas | Shown as an estimate | The network |
Every fee is shown before you sign, with who it goes to. Fees are estimates until the order fills. Performance elsewhere is shown net of all fees.
What can go wrong#
- A market order can fill at a worse price than the estimate.
- Leverage multiplies losses as well as gains. You can lose the whole margin of a position.
- A refused order says why and what to do. Catch-all errors are not used.
Nothing here is advice and no result is promised. Past results do not promise future ones.