Skip to content
OccPerpsLaunch App

Documentation

How OccPerps works

A plain-language guide to the product as it is built today. Where something is an estimate, unverified or unavailable, this page says so.

What OccPerps is

OccPerps is a trading interface for perpetual futures on Solana. It shows markets, prepares orders, and lets you manage positions from one desk. Orders execute on the venue named on each market: Velocity, a cross-margined perpetuals protocol on Solana, or Pacifica, a perpetuals exchange on Solana with an off-chain order book and deposits held by an on-chain program (how Pacifica differs). OccPerps is not an exchange: it runs no liquidity, order matching or price oracle of its own, it does not route or split orders between venues, and it never takes custody of funds. Each venue keeps its own account, collateral and positions for your wallet.

Velocity is a fork of the Drift v2 codebase, deployed as a separate program with its own accounts and its own SDK (Drift’s documentation address now leads to Velocity’s, and the Drift program is paused). OccPerps integrates it through the official @velocity-exchange/sdk and Velocity’s public data services. Program ID: vELoC1audYbSYVRXn1vPaV8Axoa9oU6BYmNGZZBDZ1P.

Network selection

A deployment of OccPerps targets one network, chosen when it is built. This one targets Solana Mainnet. The network is shown in the header of every application page. The server checks the genesis hash of its Solana RPC endpoint, so a mainnet build cannot silently talk to devnet or the reverse.

Wallet connection

Any wallet that supports the Solana Wallet Standard appears in the picker, including Phantom, Solflare and Backpack. Connecting shares your public address so your account can be read. It does not move funds, does not create an account, and does not ask you to sign anything.

Venue accounts

Trading on Velocity happens from a Velocity account: an on-chain account owned by your wallet that holds your collateral, positions and open orders. OccPerps uses subaccount 0. If your wallet has no account yet, the first deposit creates it in the same transaction.

Creating the account requires a rent deposit in SOL (roughly 0.03 SOL at the time of writing). Rent is held by Solana for as long as the account exists and is returned if the account is deleted. The exact amount is measured by simulating your transaction and shown in the review before you sign.

Collateral

Collateral is what backs your positions. OccPerps supports depositing and withdrawing the venue’s quote asset (USDT) and SOL.

Market data and freshness

Three price types appear in the app, always labelled:

Statistics, candles and trades come from the Velocity Data API; the order book from the Velocity DLOB server; balances, positions and market parameters from the venue program through a Solana RPC. Volume and open interest are Velocity’s figures for that market, not OccPerps activity. Funding is quoted for the venue’s 1-hour period as a percentage of position notional.

Every panel shows the state of its feed: Live, Loading, Stale, Disconnected, Rate limited, Unavailable or No data, with the age of the data. When a feed stops updating its figures are dimmed and marked stale rather than left looking current, and orders cannot be reviewed against stale market data. Missing values are shown as “Unavailable”; they are never replaced with placeholder numbers. Failed requests are retried with increasing delays.

Orders and fills

Sizes are entered in the base asset (for example SOL) and shown alongside their notional value in USDT. Sizes must match the market’s step size and minimum, which the form checks as you type.

Before your wallet is asked to sign, the review shows:

The transaction is built by the server with the Velocity SDK and simulated first. If simulation fails, it is not offered for signing. The browser then checks that the transaction is paid for and signed only by your wallet and calls only the expected programs, and the server repeats that check before relaying it.

Lifecycle

An order passes through named states: Review, Wallet approval requested, Declined in wallet, Submitted, Confirmed, Failed, Expired or Status unknown, and then, for the order itself, Open, Partially filled, Filled or Cancelled.

A confirmed transaction does not mean the order filled. Confirmation means the network accepted the instruction that places the order. OccPerps then reads the venue to report what actually filled. If the status of a transaction becomes uncertain (for example the connection dropped while sending), the desk blocks new transactions until that one is resolved or can no longer land, so the same order is not sent twice.

Positions

Each position shows its market, direction, size, entry price, current oracle price, notional, unrealized PnL, unsettled funding and an estimated liquidation price. Reduce and Close send reduce-only market orders in the opposite direction, so they cannot open a position on the other side. Open orders can be cancelled one at a time or all at once.

Stop and take-profit orders are not placed from OccPerps. If your account has trigger orders created elsewhere, they are listed and can be cancelled. A trigger price decides when such an order becomes fillable; it is not a guaranteed execution price.

Fees

Margin and liquidation

Velocity accounts are cross-margined. There is no per-position leverage setting: account leverage is your total position notional against the collateral in the account, and every market has its own maximum. Opening a position needs initial margin; keeping it open needs the smaller maintenance margin.

Account health runs from 100 to 0. At 0, collateral no longer covers maintenance margin and the venue can liquidate: it first cancels open orders, then transfers part of your positions to a liquidator at a penalty, until the account is healthy again.

Liquidation prices shown in OccPerps come from the Velocity SDK’s own risk calculation for your whole account at current prices. They are estimates. They change when prices move, when you deposit or withdraw, and when any other position in the account changes. Read the risk guide before using leverage.

Watchlist, alerts and exports

Pacifica: the second venue

On Solana Mainnet, OccPerps also lists perpetual markets from Pacifica, a perpetuals exchange on Solana with an off-chain order book and deposits held by an on-chain program. It adds markets Velocity does not have, including meme coins and recent listings. The sections above describe Velocity; Pacifica works differently in the ways listed here, and every screen names the venue it is showing.

The $OCC token

$OCC is the OccPerps token on Solana. Its contract address is published in one place, the token block on the home page. Right now that block reads CA: SOON: no address has been published, so there is nothing to copy and no placeholder is shown.

Feature status

What this build supports on Solana Mainnet, and how each part was checked.

Implemented and verified

Implemented and verified
Market discovery and live statisticsRead from the Velocity Data API on mainnet; payloads are schema-validated. Checked against the live service.
Historical candles and chartVelocity candles for six intervals, traded and oracle price series. Checked against the live service.
Order book and recent tradesVelocity DLOB server snapshots and Data API trades, polled. Checked against the live service.
Pacifica market discovery, live statistics, order book, trades and candlesCrypto perpetuals read by the browser from Pacifica’s public API and price stream; payloads are schema-validated. Checked against the live service.
Pacifica account, position, open-order and history readsRead from Pacifica’s public API by wallet address. Checked against existing mainnet accounts (read-only).
Pacifica order review and message formatReviews are computed from live Pacifica figures for real accounts. A request signed in this format with a throwaway key passes Pacifica’s live signature verification, and a tampered one is refused.
Wallet connectionWallet Standard discovery, connect, disconnect, address copy. Checked in a headless browser with a Wallet Standard test wallet.
Account, balance and position readsRead from chain with the Velocity SDK, including health, leverage and liquidation estimates. Checked against existing mainnet accounts (read-only).
Transaction preparation: deposit, account creation, withdrawal, market and limit orders, reduce and close, cancelBuilt with the Velocity SDK and simulated on mainnet against real accounts, without signatures. Each one passed simulation.
Review, signing guard and decline handlingChecked in a headless browser: review dialog, wallet decline, and a wrongly signed transaction being refused by the relay.
Watchlist, local price alerts, CSV exportUnit tests and browser checks.
Read-only position lookup for any wallet addressOn the home page: positions on both venues for a pasted address, with no wallet connection. Checked in a browser against existing mainnet accounts.
$OCC token blockShows "CA: SOON" and no address until one is published. The publishing script reads the mint from Solana mainnet first and refuses anything that is not an initialized mint with the right on-chain symbol; checked against real mints of both token programs.
Stationary camera in the landing sceneCamera matrices compared before and after pointer movement and scrolling, while the environment animates.

Implemented, awaiting configuration or integration testing

Implemented, awaiting configuration or integration testing
Signed transaction submission, confirmation and fill reconciliationImplemented end to end, but no signed transaction has been sent from this build: no funded mainnet order was placed, and the devnet faucet could not be used from the build environment.
Pacifica orders, cancels, leverage changes and withdrawals with a funded accountImplemented as wallet-signed messages in Pacifica’s documented format, with decline, refusal and lost-answer handling checked in a headless browser against a stand-in for Pacifica’s answer. No funded order was placed: Pacifica refuses requests from a wallet that has not deposited.
Pacifica USDC depositBuilt from Pacifica’s published SDK and simulated on mainnet without a signature. No deposit was sent.
Dedicated Solana RPCWorks with a public endpoint out of the box; set SOLANA_RPC_URL for reliable trading.
Devnet modeMarkets and accounts are read from chain. Charts, order book and history are unavailable there because the venue indexes mainnet only. Transactions unverified.

Unsupported

Unsupported
Stop and take-profit ordersNot placed from OccPerps on either venue. Velocity trigger orders created elsewhere are listed and can be cancelled; Pacifica ones are listed and cancelled on Pacifica.
Isolated marginVelocity accounts are cross-margined. Pacifica supports isolated margin, but OccPerps does not change a market’s margin mode.
Pacifica perpetuals on stocks, indices, commodities and currencies; Pacifica spotNot listed. Only Pacifica’s order-book crypto perpetuals are offered.
Pacifica orders from hardware walletsPacifica needs a different signature format for them, which is not sent yet.
Pacifica on devnetPacifica is integrated on mainnet only.
$OCC utility in the appNone. The interface does not read the token: no fee discount, revenue share, staking or governance.
Market capitalisationNeither venue publishes it, so it is not shown. “Memes” and “New listings” are OccPerps’ own labels.
Multiple subaccountsOnly subaccount 0 is read and traded.
Gasless signed orders (Swift)Every order is an on-chain transaction you sign.
Manual PnL settlementLeft to the venue’s keepers.
Collateral other than the quote asset and SOLOther balances in an account are shown but cannot be deposited or withdrawn here.
Background or push price alertsAlerts run only while the app is open in a browser tab.
Venue aggregationTwo venue adapters (Velocity and Pacifica), shown side by side. Orders are never routed or split across venues, and collateral is separate.

Velocity capabilities on this network

  • AvailableMarket ordersMarket orders run a short price auction on Velocity and fill against makers or the AMM.
  • AvailableLimit ordersLimit orders rest in your Velocity account until they fill or you cancel them.
  • AvailablePost-onlyPost-only limit orders are rejected instead of taking liquidity.
  • AvailableReduce-onlyReduce-only orders can shrink a position but never open or flip one.
  • Not availableStop / take-profit ordersStop and take-profit orders exist on Velocity as trigger orders. OccPerps does not place them yet; trigger orders created elsewhere are listed here and can be cancelled.
  • AvailableOrder cancellationCancel a single order or every open order in one transaction.
  • AvailablePosition reduction and closureClosing sends a reduce-only market order for the position size, so it cannot open the opposite side.
  • AvailableDepositsDeposits move tokens from your wallet into your Velocity account. The first deposit also creates the account.
  • AvailableWithdrawalsWithdrawals are limited to free collateral and never create a borrow.
  • AvailableOrder bookAggregated book from the Velocity DLOB server.
  • AvailableHistorical candlesServed by the Velocity Data API.
  • AvailableFill and order historyServed by the Velocity Data API.
  • AvailableDeposit and withdrawal historyServed by the Velocity Data API.
  • Not availableIsolated marginVelocity accounts are cross-margined. Isolated positions are not enabled in the deployed program.
  • Not availablePer-market leverage settingThere is no per-position leverage setting. Leverage is the result of your position size against the collateral in the whole account.
  • Not availableGasless signed ordersOff-chain signed orders (Swift) are not used. Every order is a transaction you sign.
  • Not availableMultiple subaccountsOccPerps reads and trades subaccount 0 only.
  • Not availableManual PnL settlementSettling profit and loss into the token balance is left to the venue’s keepers; OccPerps does not send settle transactions.

Pacifica capabilities on this network

  • AvailableMarket ordersMarket orders match against the Pacifica order book within the slippage limit you set. Pacifica delays market orders by about 200 ms.
  • AvailableLimit ordersLimit orders rest on the Pacifica order book until they fill or you cancel them.
  • AvailablePost-onlyPost-only orders use Pacifica’s add-liquidity-only time in force and are rejected instead of taking liquidity.
  • AvailableReduce-onlyReduce-only orders can shrink a position but never open or flip one.
  • Not availableStop / take-profit ordersPacifica supports stop and take-profit orders. OccPerps does not place them yet; ones created elsewhere are listed here, and are cancelled on Pacifica.
  • AvailableOrder cancellationCancel a single order or every open order with one signed request.
  • AvailablePosition reduction and closureClosing sends a reduce-only market order for the position size, so it cannot open the opposite side.
  • AvailableDepositsDeposits move USDC from your wallet into Pacifica’s on-chain program. A first deposit registers the wallet with Pacifica. The minimum is 10 USDC.
  • AvailableWithdrawalsWithdrawals are a signed request. Pacifica sends the USDC to your wallet and charges a 1 USDC fee.
  • AvailableOrder bookTop ten levels per side from Pacifica, streamed.
  • AvailableHistorical candlesPacifica trade candles for six intervals.
  • AvailableFill and order historyServed by the Pacifica API.
  • AvailableDeposit and withdrawal historyServed by the Pacifica API.
  • Not availableIsolated marginPacifica supports isolated margin per market. OccPerps does not change the margin mode: orders use the mode already set on your Pacifica account, which is cross margin by default.
  • AvailablePer-market leverage settingPacifica keeps a leverage setting per market, at the market maximum until you change it. It can be changed here.
  • AvailableGasless signed ordersEvery Pacifica order is a text message you sign in your wallet. It is not a Solana transaction and costs no network fee.
  • Not availableMultiple subaccountsOccPerps reads and trades the main Pacifica account of the connected wallet only.
  • Not availableManual PnL settlementNot needed: Pacifica settles profit and loss into the account balance itself.

Third-party notices