Your First Trade
A walkthrough of opening and closing your first position on SportsPerp. Assumes you’ve already connected a wallet and have devnet USDC.
Goal
Open a 3x long position on the Arsenal market with 100 USDC collateral, hold briefly, then close.
Step 1 — Find the market
From the SportsPerp landing page, click Trade in the main navigation. You’ll see a list of all 68 markets, ordered by default by “last updated.”
Filter to Teams and find Arsenal (ID 0). Click the row → you land on the trade page.
What you’ll see on the page:
- Top-left: Arsenal index chart with timeframe selector (1m / 1H / 4H / 1D). Defaults to 1H.
- Top-right: Current index value, 24h change, open interest split (long/short), funding rate (annualized + 8h countdown).
- Below chart: Live match feed (empty unless Arsenal are playing right now).
- Right column: Order panel.
The composite index is displayed as a float (e.g., 602.4) — internally stored at 10⁶ fixed-point (602_400_000), but displayed cleanly.
Step 2 — Configure your order
In the order panel:
- Direction — select Long. You think Arsenal’s index will rise.
- Collateral — enter
100. You’re putting up 100 USDC. - Leverage — slide to
3x(or type3). Your notional position size will be 300 USDC.
The panel shows a live preview:
| Field | Value |
|---|---|
| Entry price | 602.4 (current mark EMA) |
| Position size | 300 USDC |
| Collateral | 100 USDC |
| Leverage | 3.0x |
| Effective leverage after tier caps | 3.0x (tier 1 — your 100 USDC position is < 5% of the market’s effective_oi) |
| Liquidation price | ~540.5 (approximately — when margin ratio hits 20%) |
| Taker fee | 0.30 USDC (10 bps of 300 USDC notional) |
| Funding rate | +0.012% / 8h (current — mark slightly above oracle) |
| Confidence | 300 bps (1.0x leverage multiplier — normal) |
Double-check. Your worst case is losing the 100 USDC if Arsenal’s index drops to ~540.5 and the position gets fully liquidated via the three-layer cascade.
Step 3 — Open the position
Click Open Long 3x. Your wallet pops up with the transaction preview:
- Program: SportsPerp (
6d4fSCD7mNy7aDNS2mXUxYpZjFFQKBKwAsM5kojKQA6h) - Instructions:
open_position+ associated token transfers - Expected balance changes:
-100 USDC(from your token account)-~0.000005 SOL(fee)
- Receives: a new
UserPositionPDA (you don’t see it in your wallet’s token list, but it’s tracked by the app)
Approve. Your wallet signs and sends the transaction.
~1–5 seconds later:
- The app shows a toast “Position opened” with the transaction signature.
- Your Arsenal trade page now shows the open position in the bottom panel.
- The Portfolio tab shows your position among all open positions.
You are now long Arsenal at 3x leverage.
Step 4 — Monitor
Your position updates in real-time. Key things to watch:
- Mark price — if it rises above 602.4 you’re in profit; below, you’re in loss.
- Unrealized PnL — shown in USDC and as a % of collateral.
- Effective collateral —
collateral + unrealized_pnl. This is what margin ratio is computed against. - Margin ratio — (effective_collateral / size) × 100%. Healthy > 20%. At 20%, Layer 1 liquidation engages.
- Pending funding — accumulated since your position opened. Paid on your next interaction.
The candle chart updates:
- Every 5 minutes (or every tick) during normal trading hours.
- Near-real-time during Arsenal matches — every meaningful event moves the index.
Step 5 — (Optional) Set a Stop Loss / Take Profit
Before stepping away from the trade, you can set automated exits:
- Stop Loss at 580 — cap your downside. If the index drops to 580, position closes automatically.
- Take Profit at 625 — lock in ~3.8% profit on the index (= 11.3% on collateral at 3x).
Click Add Trigger in the position row → pick order type → enter price → confirm. A keeper bot monitors the market and executes the trigger when conditions are met.
Triggers are free to place (just rent on the TriggerOrder PDA, ~0.00148 SOL, returned on cancel or execute). See Stop Loss & Take Profit.
Step 6 — Close the position
Whenever you’re ready:
- In the Portfolio or market trade page, click Close on your position.
- Optional: choose partial close (e.g., close 50%, leave 50%).
- Preview shows:
- Close price (current mark EMA)
- Realized PnL
- Funding settled at close
- Taker fee (another 0.30 USDC)
- Net settlement amount
- Confirm → sign in wallet → close tx lands in ~1–5s.
Your USDC balance increases by initial_collateral + realized_pnl - funding - fee. The UserPosition PDA is closed; rent is refunded to you (~0.0015 SOL).
What you’ve experienced
In ~2 minutes you’ve:
- Opened a self-custody leveraged position on Solana.
- Watched it mark against a composite 70/30 (or 50/50) oracle/vAMM EMA price.
- Interacted with the permissionless funding crank.
- Closed at the current mark; realized PnL.
All fully on-chain, permissionless, with source code you can read: trade.rs.
What to try next
Short side
Repeat the flow with direction = Short. Pick a market where the index looks extended, enter at 3x short. PnL moves inversely.
Trigger orders
Open a position and set both an SL and a TP. See which hits first. Check the keeper’s getProgramAccounts traffic if you run a node — you can actually see your trigger being evaluated.
Multi-market positions
Open long on Arsenal, short on Manchester United, long on Haaland. See how your portfolio risk distributes.
Live match trading
Check the Fixtures tab for upcoming Arsenal matches. Open a position 30 minutes before kickoff. Hold through the match. Watch the index move in real-time as goals, key passes, and defensive actions come in via the WebSocket feed. Close at full-time or let the 4-hour EMA blend work through the post-match reconciliation.
This is where SportsPerp is different from every other perp protocol: you are trading live, event-driven, sport-specific signal. No other venue offers this.
Gotchas and tips
- Don’t size to leverage cap unnecessarily. 5x is the max, but 2–3x is often plenty for the volatility of these markets. Lower leverage = higher maintenance-margin headroom = less liquidation risk.
- Funding can eat small profits. Holding a small position for weeks will accrue funding that may offset your PnL. Factor funding into long-dated trade theses.
- The 18.3% anti-manipulation floor protects you. If you’re profitable, a brief oracle dip cannot liquidate you. Don’t panic at small drawdowns.
- Position PDAs are per-(wallet, market). One open position per market per wallet. If you need more, use a different wallet.
Further reading
- Order Types — full order-type reference.
- Entry Price & PnL — the math behind your PnL display.
- Real-Time vs Post-Match — what happens during and after live matches.