Overview
PonPerp is a perpetual futures exchange on Robinhood Chain. You trade Bitcoin, gold and ten of the largest stocks with up to 100x leverage, margined in USDG.
- Network
- Robinhood Chain mainnet, an Arbitrum Orbit L2 that settles to Ethereum. Chain id 4663.
- Collateral
- USDG (Paxos Global Dollar). Gas is paid in ETH.
- Markets
- 12 USD-quoted perpetuals: BTC, gold (XAU) and 10 stocks.
- Margin
- Isolated per position, leverage up to 100x.
- Prices
- RedStone signed prices, verified on-chain in every trade.
- Counterparty
- The PLP vault takes the other side of every trade.
- Custody
- Noncustodial. Funds sit in the PonPerp contracts and only your wallet can withdraw them.
- Status
- Contracts deployed. They are not upgradeable.
A perpetual future follows the price of an asset and never expires. You do not own the asset. Gains and losses settle in USDG when you reduce or close a position, and open positions pay or receive funding over time.
Markets
| Market | Class | Oracle feed (RedStone) | Trading hours | Max leverage | Now |
|---|---|---|---|---|---|
| Crypto | BTC3 of 5 signers | 24/7Every day, all day | 100x | — | |
| Metals | XAU3 of 5 signers | CME metals sessionSun–Fri 18:00–17:00 ET, 1 h daily break | 100x | — | |
| Stocks | NVDA3 of 5 signers | NY regular sessionMon–Fri 09:30–16:00 ET | 100x | — | |
| Stocks | AAPL3 of 5 signers | NY regular sessionMon–Fri 09:30–16:00 ET | 100x | — | |
| Stocks | GOOGL3 of 5 signers | NY regular sessionMon–Fri 09:30–16:00 ET | 100x | — | |
| Stocks | MSFT3 of 5 signers | NY regular sessionMon–Fri 09:30–16:00 ET | 100x | — | |
| Stocks | AMZN3 of 5 signers | NY regular sessionMon–Fri 09:30–16:00 ET | 100x | — | |
| Stocks | TSM---PRE_AFTER1 signer | NY regular sessionMon–Fri 09:30–16:00 ET | 100x | — | |
| Stocks | SPCX---PRE_AFTER1 signer | NY regular sessionMon–Fri 09:30–16:00 ET | 100x | — | |
| Stocks | META3 of 5 signers | NY regular sessionMon–Fri 09:30–16:00 ET | 100x | — | |
| Stocks | AVGO---PRE_AFTER1 signer | NY regular sessionMon–Fri 09:30–16:00 ET | 100x | — | |
| Stocks | TSLA3 of 5 signers | NY regular sessionMon–Fri 09:30–16:00 ET | 100x | — |
The 10 stocks were the largest companies in the world by market value at launch. Saudi Aramco is left out because it has no USD price feed. A stock perpetual gives you no shares, votes or dividends, and PonPerp is not affiliated with these companies.
Getting started
You need a wallet, a little ETH for gas and USDG on Robinhood Chain.
Get a wallet
Any wallet that connects through WalletConnect or a browser extension works. PonPerp runs only on Robinhood Chain (chain id 4663). The app asks your wallet to add or switch to it.Bridge ETH for gas
Every transaction costs a small amount of ETH on Robinhood Chain. Bridge some from Ethereum or another network. The Robinhood Chain bridging guide (opens in a new tab) lists the options. The canonical Arbitrum bridge takes about 10 minutes in and about 7 days out; third-party bridges are faster.Bring USDG
PonPerp accepts only USDG at0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168. USDC bridged through the canonical gateway is a different token and cannot be deposited. Check the token address before you bridge or swap.Connect and deposit
Connect your wallet, open Deposit and enter an amount. You approve that exact amount, then deposit it into your trading account: two transactions.Trade
Pick a market, set leverage and size, and place the order. Market orders fill at the next oracle price, usually 10 to 20 seconds later.Withdraw any time
Free balance, meaning USDG that is not in a position or reserved by an open order, can be withdrawn to your wallet at any time, including while trading is paused.
Network blocked?
Some internet providers block*.robinhood.com. The app falls back to another RPC on its own, but your wallet may need a custom RPC for Robinhood Chain, such as https://robinhood-rpc.publicnode.com.Prices & oracle
Every fill, liquidation and margin check uses a RedStone price that is verified inside the PonPerp oracle contract.
Signed prices
RedStone publishes a signed price package for each market every 10 seconds. Five independent signers sign each package. The PonOracle contract checks the signatures on-chain, needs at least 3 of the 5 signers (1 for TSM, SPCX and AVGO), takes the median and rejects the price if the signers disagree by more than 1%. Trades do not wait for prices to be pushed to the chain: the signed package travels inside the transaction that uses it.
Next-price execution
A market order does not fill at the price on your screen when you click. It fills at the first oracle price published after the order was created, within 20 s. Packages come every 10 seconds and take a few seconds to reach the public gateway, so a fill usually lands 10 to 20 seconds after you place the order. Nobody, including keepers, can fill your order at a price older than the order.
order created at t0
valid price time: t0 ≤ price time ≤ t0 + max delay (20 s at launch)
→ at most two RedStone packages qualifyWhen two packages qualify, the executor chooses which one to submit. Your acceptable price caps the result either way. Trigger orders and margin removals need a price at most 30 seconds old that is not older than the order (or the position's last change) and not older than the newest price already stored on-chain, so nobody can pick an older, more favourable package once a newer one is public. Liquidations need a price no older than the latest one used by the position's fills and margin removals.
Market sessions
Stocks trade only during the regular New York session and gold only while the CME metals session is open. Session status comes from signed RedStone packages as well, and the oracle refuses prices for a closed market. BTC trades around the clock.
- While a market is closed, market orders cannot get a price. After 2 min they can be cancelled: by you for a full refund, or by anyone else. Only an approved keeper that cancels it keeps the execution fee; otherwise it is refunded too.
- Limit, stop, take-profit and stop-loss orders wait and can execute once the market reopens.
- Liquidations wait too. The first price after the reopen can be far from the last close. See Risks.
- The oracle's session status is the source of truth, including holidays and early closes.
Single-signer markets
RedStone currently publishes TSM, SPCX and AVGO from one node only, through its extended-hours feeds (TSM---PRE_AFTER and so on). These markets accept a price with 1 signature instead of 3 and have lower open interest caps. They still trade only in the regular session. The plan is to require 3 signatures once more signers cover them; feed changes go through a 2-day timelock.
Mark and oracle prices
The market bar shows two prices. Mark is the live Hyperliquid index for the same asset: it updates every second and is for reference only. Oracle is the RedStone price used for fills, liquidations and margin checks. The two can differ, especially around the open and close.
Orders
Orders are created on-chain and executed by keepers with a signed oracle price. There is no order book to match against: fills come from a pricing curve around the oracle price.
| Type | Executes when | Fills at | Fee |
|---|---|---|---|
| Market | At the next oracle price after the order | Oracle price plus spread and size impact, if within your acceptable price | Taker |
| Limit | Buy: oracle ≤ limit price Sell: oracle ≥ limit price | The same curve; the fill must be at or better than the limit price | Maker |
| Stop market | Buy: oracle ≥ trigger Sell: oracle ≤ trigger | Market, within your acceptable price | Taker |
| Take profit | Long: oracle ≥ trigger Short: oracle ≤ trigger | Market, reduce-only | Taker |
| Stop loss | Long: oracle ≤ trigger Short: oracle ≥ trigger | Market, reduce-only | Taker |
- Acceptable price. Market and stop orders carry the worst price you accept: the price when you place the order, plus or minus your max slippage (1% by default, editable in the order form). A fill beyond it does not happen. For a limit order, the limit price is the acceptable price.
- Reservation. Placing an order moves USDG from your free balance into the order: the execution fee, and for orders that open or add, the margin and the taker fee at the worst price the order can fill at. That is the acceptable price for market and stop buys, the limit price for limit orders and the trigger for stop sells. Market and limit sells have no upper limit on their fill, so they reserve at the higher of that price and the latest on-chain oracle price, plus a 1% buffer. Whatever is not used returns to your balance when the order fills or is cancelled.
- Paid only from the reservation. When an order opens or adds to a position, its margin and fee come from its reservation, never from your free balance, so a later deposit or withdrawal cannot change whether it fills. If the reservation falls short, for example when a sell fills above the price it reserved for, the position opens with what was reserved, at a higher effective leverage up to the market maximum; beyond that the fill fails.
- Reduce-only. A reduce-only order can only shrink or close a position, and its size is capped to the position when it executes. It reserves only the execution fee. If there is no position by then, it is cancelled and the rest is refunded (an approved keeper keeps the execution fee).
- Partial closes. A partial close fails while the position cannot pay its loss and pending funding at the fill price: a market order is cancelled, a limit or trigger order stays open. Close the whole position instead. Only a full close or a liquidation books the shortfall as bad debt.
- Attached TP/SL. A market or limit order can carry a take-profit and a stop-loss price. When it fills, they become reduce-only orders for the whole position, each with a 10% slippage limit from its trigger. Each one reserves its own execution fee up front.
- Closing a position cancels the reduce-only orders on that market (take profit, stop loss, reduce-only limits) and refunds their reservations.
- Leverage is a setting per market and account, 10x until you change it. A change applies to new orders; each order keeps the leverage it was created with.
- Limits. Orders that open or add must be worth at least 10 USDG. An account can have up to 20 open orders.
When an order fails
- A market order that would break your acceptable price, an open interest cap, the vault exposure cap or a margin check is cancelled. The rest is refunded; an approved keeper keeps the execution fee.
- A trigger order that fails these checks stays open and can execute later.
- A market order still unexecuted after 2 min can be cancelled by anyone. An approved keeper that does so receives the execution fee; for anyone else everything is refunded. You can cancel your own for a full refund.
Execution fee
Each order reserves a flat 0.1 USDG, plus the same for each attached take profit or stop loss. It pays the keeper for gas and price data, and only approved keepers earn it: the PonPerp keeper service and the app's relay, which the owner approves on-chain. When anyone else executes or cancels the order, including you with Execute now, an agent or a bot executor of the account, the fee is refunded to the account. When you cancel an order yourself, it is refunded as well.
Margin & leverage
Every position has its own margin. A position can lose at most its margin; your free balance and your other positions are not touched.
Isolated margin
When you open or add to a position, margin equal to the added notional divided by your leverage moves from the order's reservation into the position, never from your free balance. You can add margin at any time. You can remove margin with a fresh price (not older than the newest on-chain price), as long as the position keeps margin of at least entry notional ÷ max leverage and equity of at least current notional ÷ max leverage.
notional = |size| × oracle price
unrealized PnL = long: notional − entry notional short: entry notional − notional
equity = margin + unrealized PnL − pending funding
initial margin = filled notional ÷ leverage
maintenance margin = notional × MM (MM = 0.5% at launch)Leverage
Each market allows up to 100x. A new or larger position must start with equity of at least 1.5 times its maintenance margin at the oracle price, after spread and size impact. With maintenance at 0.5%, a 100x position starts with about 1% of its notional as equity, minus spread and impact, comfortably above the 0.75% it needs, so 100x opens for normal sizes. Only very large orders, whose size impact eats most of that room, need lower leverage. A market order that fails this check is cancelled and refunded (an approved keeper keeps the execution fee).
The leverage badge in Positions shows each position's real leverage, its value at the mark price divided by its margin. It drifts from your leverage setting as the price moves, margin is added or removed and funding settles.
Liquidation price
long: (entry notional + F − margin) ÷ (|size| × (1 − MM))
short: (entry notional + margin − F) ÷ (|size| × (1 + MM))A position can be liquidated once its equity at the oracle price falls below its maintenance margin. Funding you owe moves the liquidation price closer over time; adding margin moves it away.
| Leverage | Long is liquidated after a drop of | Short is liquidated after a rise of |
|---|---|---|
| 2x | 49.75% | 49.25% |
| 5x | 19.60% | 19.40% |
| 10x | 9.55% | 9.45% |
| 20x | 4.52% | 4.48% |
| 50x | 1.51% | 1.49% |
| 100x | 0.50% | 0.50% |
Liquidations
- Anyone can liquidate an eligible position with a fresh signed price. PonPerp's keeper checks every position continuously.
- The whole position closes at the oracle price, with no spread, size impact or trading fee.
- The liquidator receives a reward of 0.05% of the notional (at launch), paid only out of the remaining equity. The vault adds nothing to it, so a position with no equity left pays no reward, and liquidating your own position never pays out of the vault.
- The rest of the equity goes to the PLP vault. You get nothing back from a liquidated position.
- If the price moved past zero equity, for example across a weekend gap, the shortfall is bad debt that the PLP vault absorbs. You never owe more than the position's margin.
- Your reduce-only orders on that market are cancelled and refunded.
Fees & funding
You pay a trading fee on each fill, a fill price that includes a spread and size impact, a flat execution fee per order, and funding while a position is open.
Trading fees
- Taker 1% of the filled notional for market, stop market, take-profit and stop-loss fills.
- Maker 1% for limit order fills.
- Charged when you open, add, reduce and close. Liquidations pay no trading fee.
- The fee is a share of the notional, not of your margin, so leverage multiplies it: at 10x, every fill costs ten times the fee rate as a share of the position's margin.
- Traders who use a referral code pay 4% less. See Referrals.
- Where the fee goes: the referrer's rebate first (10% of the fee paid), then all of the rest to the treasury. The PLP vault does not receive trading fees.
Spread and size impact
impact = min(order notional ÷ impact depth, max impact)
buy fill = oracle × (1 + spread + impact)
sell fill = oracle × (1 − spread − impact)The spread is a fixed half-spread per market. Impact grows with order size relative to the market's impact depth and is capped at 1%. The order book on the trade page draws this same curve, so the depth it shows is what you can actually trade at each price. Liquidity comes from the PLP vault, not from other traders' orders.
Example with launch settings: a 100,000 USDG buy on BTC pays a 0.005% spread plus 100,000 ÷ 1,000,000,000 = 0.01% impact, so it fills 0.015% above the oracle price, before the taker fee.
| Market | Max lev. | Taker | Maker | Spread | Impact depth | Max impact | OI cap per side | Maint. margin | Liq. reward | Funding (1h) |
|---|---|---|---|---|---|---|---|---|---|---|
| 100x | 1.000% | 1.000% | 0.005% | $1B | 1% | $500K | 0.50% | 0.05% | +0.00125% | |
| 100x | 1.000% | 1.000% | 0.010% | $500M | 1% | $300K | 0.50% | 0.05% | +0.00125% | |
| 100x | 1.000% | 1.000% | 0.010% | $300M | 1% | $200K | 0.50% | 0.05% | +0.00125% | |
| 100x | 1.000% | 1.000% | 0.010% | $300M | 1% | $200K | 0.50% | 0.05% | +0.00125% | |
| 100x | 1.000% | 1.000% | 0.010% | $300M | 1% | $200K | 0.50% | 0.05% | +0.00125% | |
| 100x | 1.000% | 1.000% | 0.010% | $300M | 1% | $200K | 0.50% | 0.05% | +0.00125% | |
| 100x | 1.000% | 1.000% | 0.010% | $300M | 1% | $200K | 0.50% | 0.05% | +0.00125% | |
| 100x | 1.000% | 1.000% | 0.015% | $200M | 1% | $100K | 0.50% | 0.05% | +0.00125% | |
| 100x | 1.000% | 1.000% | 0.015% | $200M | 1% | $100K | 0.50% | 0.05% | +0.00125% | |
| 100x | 1.000% | 1.000% | 0.010% | $300M | 1% | $200K | 0.50% | 0.05% | +0.00125% | |
| 100x | 1.000% | 1.000% | 0.015% | $200M | 1% | $100K | 0.50% | 0.05% | +0.00125% | |
| 100x | 1.000% | 1.000% | 0.010% | $300M | 1% | $200K | 0.50% | 0.05% | +0.00125% |
Funding
rate per hour = clamp(base + skew × (long OI − short OI) ÷ (long OI + short OI), −max, +max)
funding owed = entry notional × change in the funding index since your last settlement
(a positive rate: longs pay, shorts receive)- A positive rate means longs pay and shorts receive. A negative rate means the reverse.
- At launch the base rate is +0.00125% per hour, about 0.03% a day, so longs pay when open interest is balanced. The skew term adds up to 0.01% per hour against the side with more open interest, and the rate is capped at ±0.05% per hour.
- Funding accrues every second on the position's entry notional. It settles into the position's margin whenever the position changes; until then it shows as pending funding and counts against equity.
- Funding is paid to and from the PLP vault, not directly between traders. Because the rate follows the skew, the vault earns funding on net.
- The current rate for each market is in the table above and in the market bar.
PLP vault
The PLP vault is the counterparty to every trade. Liquidity providers deposit USDG and receive PLP shares. The vault gains when traders lose and pays when they win.
What LPs earn and lose
The vault receives
- Trader losses
- Funding paid by positions, net of funding paid to them
- Equity left over from liquidated positions
The vault pays
- Trader profits
- Funding owed to positions
- Bad debt when a position closes below zero equity, for example after a gap
Trading fees do not go to the vault: after referral rebates they all go to the treasury. LPs earn from trader losses, net funding and liquidations.
NAV and share price
NAV = USDG held by the vault − traders' net unrealized PnL (never below 0)
trader PnL = per market and side: max(unrealized PnL, − total margin of that side)
share price = NAV ÷ PLP supplyDeposits mint PLP and withdrawals burn it at the current share price, so open trader PnL is priced in. A position never pays more than its margin, so traders' open losses count only up to the total margin of their market side; anything beyond is bad debt, not a vault asset. The app attaches fresh signed prices for all 12 markets to every deposit and withdrawal, because both fail while a market with open interest has no recent on-chain price: 60 seconds old for BTC, 4 days for gold and stocks, since closed markets do not move.
Known limitation. While a stock or gold session is closed, the NAV marks those markets at their latest stored price and their positions cannot be liquidated. A move that only shows after hours or over a weekend reaches the NAV at the reopen, so an unlocked LP can still time an exit or entry around a known gap. Open interest caps bound it, and the owner can price it with the withdrawal fee (up to 1%).
Lock-up and withdrawals
- A deposit locks all of your PLP for 4 days. A new deposit starts the lock again.
- PLP can be transferred only while unlocked. The receiver takes on the later of the two unlock times.
- Withdrawal fee: 0%. The owner can set it up to 1%; it stays in the vault.
- A withdrawal is refused if it would leave the vault with less USDG than the open net exposure needs. It goes through once exposure falls or new liquidity arrives.
Exposure caps
- Each market caps the total cost of long positions and of short positions separately. The caps are in the parameters table above.
- Across all markets, net exposure (the sum of |long OI − short OI|) may not exceed 100% of the USDG the vault holds. Orders that would push it higher fail.
- The vault records its share price and TVL once per UTC day. The APR on the vault page comes from these snapshots.
Sub-accounts, agents & bots
Your wallet address is your main trading account. You can split funds across sub-accounts, let another key trade for you, or subscribe a sub-account to a bot.
Sub-accounts
- Create up to 10 from your main account. Each has its own balance, positions and orders, separate from the others.
- A sub-account is an address derived from your wallet address. It has no private key. Only your wallet can deposit into it, withdraw from it (always to your wallet) or move USDG between your accounts.
- Names are up to 32 bytes and can be changed. Manage them on the Portfolio page.
Agents
- An agent, or API wallet, is another address you allow to trade on all of your accounts until an expiry you choose. It can create and cancel orders, set leverage and add or remove margin.
- An agent can never withdraw or transfer funds, and it cannot collect the account's execution fees: those go only to approved keepers. You can revoke it at any time.
- A leaked agent key can still lose your money by trading. Use short expiries and revoke keys you no longer use.
Bots
- A bot creator registers a bot with an executor address, a fee per period, a max leverage and a list of allowed markets.
- Subscribing binds the bot to one of your sub-accounts and pays the fee up front in USDG: 10% to the PonPerp treasury and 90% to the creator.
- The executor can trade only that sub-account, within the bot's leverage and markets. It cannot withdraw. Deposit only what you are willing to let the bot trade.
- One bot per sub-account. Renewing extends the subscription. Unsubscribing ends it at once, with no refund.
- Bot volume and PnL are recorded on-chain. PonPerp does not review bots or their strategies; the owner can only switch a bot off. A reference bot runner is in the
botsfolder of the PonPerp repository.
Referrals
Referred traders pay lower fees, and referrers earn part of the fees their referees pay.
- Create a code on the Referrals page: 3 to 20 characters from A–Z, 0–9 and underscore. One code per address.
- Share
https://ponperp.app/?ref=CODE. Visitors who open it are asked to use the code after they connect. - Using a code is a one-time, permanent choice. You cannot use your own code or the code of someone you referred.
- A referred trader pays 4% less in trading fees, on the main account and every sub-account. The referrer earns 10% of the fees those accounts pay, claimable in USDG at any time.
- The owner can give a referrer a custom tier: a discount of up to 50% and a rebate of up to 50%, 60% combined at most.
Leaderboard
The leaderboard ranks trading accounts by PnL, from data the engine writes on-chain with every fill.
- Windows: 24 hours, 7 days, 30 days and all time. Windows follow UTC days.
- PnL is realized: it counts when a position is reduced or closed, after trading fees and funding. Open positions count once they close.
- Volume is the total filled notional. ROI is PnL relative to the account's deposits, including USDG moved in from your other accounts.
- Sub-accounts are ranked on their own. Names come from forum nicknames, otherwise a short address.
- The data comes from PonStats and refreshes about once a minute.
Forum
The forum lives on-chain. Your wallet is your account; there is nothing else to sign up for.
- Every thread, reply, like and nickname is a transaction, so each one costs a little ETH for gas.
- Categories: General, Trading, BTC, Gold, Stocks, Bots and Announcements. Only moderators post announcements.
- Titles up to 120 bytes, threads up to 4,000 bytes and replies up to 2,000 bytes. One post every 15 seconds per address.
- Nicknames are 3 to 24 letters, digits or underscores, unique regardless of case.
- Posts are shown as plain text. Links are clickable and marked nofollow.
- Moderators can hide, pin and lock threads, and authors can delete their own posts. Hidden and deleted posts disappear from the app but stay in the chain's history. Do not post anything you would not want public permanently.
- The owner can require that posters have traded at least once.
Keepers
Execution is permissionless: any address can execute orders and liquidations with a valid signed price. Execution fees go only to keepers the owner has approved; liquidation rewards go to any liquidator.
| Action | Contract | Reward |
|---|---|---|
executeOrder(orderId, payload) | PonEngine | The order's execution fee, 0.1 USDG, for approved keepers. Anyone else: none, the fee is refunded to the account |
cancelExpiredOrder(orderId) | PonEngine | The execution fee, for market orders older than 2 min, for approved keepers only |
liquidate(account, marketId, payload) | PonEngine | Liquidation reward, 0.05% of notional at launch |
updatePrices(payload) | PonOracle | None. Keeps on-chain prices fresh for the vault NAV |
snapshot() | PonVault | None. Records the daily share price |
- Keeper allowlist. The owner approves keepers with
setKeeper(keeper, approved); anyone can checkisKeeper(address). An address that is not approved can still execute and clean up orders, but earns nothing: the fee stays with the account. This keeps an account's own agents and bot executors, which may create orders at will, from draining it through execution fees. - PonPerp runs a keeper and a relay that executes market orders as soon as a price is available, usually 10 to 20 seconds after the order. If the relay is unavailable, or your order is still open about 25 seconds after you placed it, the trade page offers Execute now: your wallet sends the execution and pays the gas, and the execution fee is refunded to your trading account rather than paid to you.
- Keepers cannot pick old prices. Market orders accept only the window right after they were created. Trigger orders and margin removals need a price at most 30 seconds old and not older than the newest price stored on-chain. Liquidations need a price no older than the position's price time,
positionPriceTime(account, marketId)(alsoPositionView.priceTimein PonLens); use it rather thanlastUpdated, which everyaddMarginmoves. - Robinhood Chain orders transactions first come, first served, without priority gas auctions.
- The payload is
abi.encode(bytes[] signables, bytes[] signatures)built from RedStone packages of one timestamp. The app serves it at/api/oracle/payload?symbol=BTC&minTs=<unix seconds>, or you can build it from the public RedStone gateway. - The reference keeper is in the
keeperfolder of the PonPerp repository. It simulates every transaction first and stays in dry-run mode until you give it a key.
Running a keeper is optional and at your own risk. Reverted transactions still cost gas, and other keepers may execute first.
Prices and limits are described under Prices & oracle.
Risks
Read this before you deposit. These risks can cost you some or all of your money.
Experimental software
PonPerp is new software. Leveraged trading can lose all of the margin you post within seconds. Only deposit money you can afford to lose. See also the terms of use.High leverage
Leverage multiplies losses as much as gains. At 50x, a move of about 1.5% against you liquidates the position and you lose all of its margin. Spread, size impact and funding leave even less room. Use leverage you can afford to be wrong with.
Weekend and overnight gaps
Stocks trade only in the regular New York session and gold only in the CME metals session. While a market is closed you cannot close the position and nothing is liquidated. At the reopen the first price can be far past your stop loss or liquidation price. A stop loss can fill far from its trigger, or not at all if the price gapped past its slippage limit. You can lose the whole margin of the position.
Oracle risk
Prices come from RedStone signers. If they publish a wrong price, stop publishing or disagree, orders can fill at bad prices, positions can be liquidated or liquidations can be late, and orders can fail. TSM, SPCX and AVGO rely on a single signer. The Mark price from Hyperliquid is for reference and can differ from the price you trade at.
Smart-contract risk
Smart contracts can contain bugs. The PonPerp contracts are not upgradeable, so a bug cannot be patched in place and could lock or lose funds. Every transaction is final once confirmed.
Admin keys and timelocks
Each contract has an owner key. The owner can change market and fee settings at once, with no delay: max leverage, maintenance margin, fees, spreads, open interest caps, funding, the execution fee, which keepers are approved to earn it, and the vault lock (up to 30 days). A higher maintenance margin applies to open positions immediately. The owner or a guardian can pause new positions and vault deposits. Only replacing the oracle and changing its signers or feeds wait for a 2-day timelock. Withdrawing free balance always works, even while paused. The current role holders are listed under Contract addresses.
Vault and liquidity risk
Trader profits are paid by the PLP vault. If it does not hold enough USDG, a profitable close fails until liquidity returns. LPs can lose part or all of their deposit to winning traders and bad debt, and withdrawals can be held by the 4 days lock or by the exposure rule. While stock and gold sessions are closed the NAV uses their last stored prices, so a gap reaches the share price only at the reopen, and an unlocked LP can time an exit or entry around it. See PLP vault.
Regulatory restrictions
Perpetual futures are restricted or prohibited in many countries. PonPerp is not available where it is prohibited, or to sanctioned persons. You are responsible for following the laws that apply to you. PonPerp is not affiliated with Robinhood, Paxos, RedStone, Hyperliquid or the companies whose stocks it lists.
Network, bridge and token risk
Robinhood Chain runs a single sequencer. If it stalls, you cannot trade, add margin or withdraw while prices keep moving elsewhere. Bridges carry their own risk, and USDG depends on its issuer, Paxos.
Contract addresses
Check addresses on the explorer before you approve or send anything.
- Network
- Robinhood Chain mainnet, chain id 4663
- Gas token
- ETH
- Public RPC
- https://rpc.mainnet.chain.robinhood.comRate limited. Fallback:https://robinhood-rpc.publicnode.com
PonEngine
Accounts, balances, orders, positions, funding and liquidations. Holds traders' USDG.
PonVault (PLP)
Liquidity vault and counterparty to every trade. Issues PLP shares.
PonOracle
Verifies RedStone signed price and session packages.
PonLens
Read-only views used by the app and keepers.
PonStats
Fill history, volumes and PnL for the leaderboard.
PonReferrals
Referral codes, fee discounts and claimable rebates.
PonBotHub
Bot registry and paid subscriptions bound to sub-accounts.
PonForum
On-chain threads, replies, likes and nicknames.
USDG
Collateral token (Paxos Global Dollar, 6 decimals). Not a PonPerp contract.
Multicall3
Standard batching contract used for reads. Not a PonPerp contract.
Admin and roles
Read live from PonEngine and PonVault. Ownership transfers take two steps: the new owner has to accept.
- OwnerChanges market and global parameters, queues oracle changes, unpauses.
- Pending ownerOwnership moves only after this address accepts it.
- GuardianMay pause new positions and vault deposits. Cannot unpause or move funds.
- TreasuryReceives trading fees (after referral rebates and any vault share) and bot protocol fees.
- Oracle in useReplacing it takes a 2-day timelock.
- Queued oracle changeA new oracle can only take effect after its timelock ends.
- Engine logic moduleFixed at deployment. The contracts are not upgradeable.
- New positionsA pause blocks opening and increasing positions only.
- Vault depositsA pause blocks new deposits only. Withdrawals keep working.
FAQ
Why did my market order take 15 seconds?
Why was my market order cancelled?
Can I open at 100x?
Why does a sell reserve more than a buy of the same size?
Why did my partial close fail?
Do I earn the execution fee when I use Execute now?
Can I trade stocks at night or on weekends?
Can I lose more than I deposit?
Who is on the other side of my trade?
What is the difference between Mark and Oracle?
Do I need ETH?
Can I deposit USDC?
Is PonPerp custodial?
Why can't I withdraw from the vault?
What if this website goes down?
withdraw function on PonEngine.Something else? Ask on the forum.