Papertrade is a casino that pays its losers in equity. The tweet's bot is a directional guess at 1000× against a house that takes half the margin on every bust. Ours takes the house's own design, prices it, and only trades where the math is on our side.
Everything below is read from the docs, the live contract state and the exchange's own API as of today. Sources at the end.
Two things define the game:
The win haircut is sized by how far price moved between entry and exit, not by position size. Here is what a winner keeps at launch parameters (after deadband, impact curve and the 2% fee):
| Move | BTC keeps | ETH keeps | What it means |
|---|---|---|---|
| 1 bp | 21% | 16% | scalping is dead on arrival |
| 5 bps | 61% | 54% | typical "momentum bot" horizon |
| 10 bps | 72% | 68% | still a 28% tax on every win |
| 50 bps | 85% | 83% | swing territory |
| 1% | 86% | 86% | near the cap |
| 5%+ | 88% | 88% | the best case, ever |
Formula from the docs: scale = (1 − 0.10) / (1 + 1/(move·15000) + 100000/(10⁶·move·posMult)), posMult 814.598 BTC / 483.979 ETH, then ×0.98.
On top of that, the liquidation buffer is fixed at about 5 bps of price, so its bite grows with leverage:
| Leverage | Bust fires at | Equity the LP keeps at bust |
|---|---|---|
| 10× | 9.95% move | 0.5% of margin |
| 50× | 1.95% | 2.5% |
| 100× | 0.95% | 5% |
| 500× | 0.15% | 25% |
| 1000× | 0.052% | 50% |
A 1000× bot that busts hands the house half its margin as pure profit, every time. A bot that scalps 5 bps wins hands over 40% of every gain and 100% of every loss. With no edge in direction, that is a negative-sum machine with a telegram feed. This is why the LP is expected to grow, and why PAPER is worth something.
The design says it out loud: trading while the LP is small is incentivised, early losers mint at the top rate, and losses cost nothing extra. The edge is to be the cheapest loser in the room.
Open a long and a short of the same size at the same time. Both fill at the same mid, so the pair has no price risk. Wait for a move. Close the losing leg: that loss mints PAPER at 100 per dollar. Close the winning leg: it pays back the same amount minus the haircut. Net cost is just the haircut on the winner.
| Leverage | Close after | Exit | Cost per $1 margin | PAPER per $1 margin | $ per PAPER |
|---|---|---|---|---|---|
| 10× | 0.5% | both closed | 0.008 | 4.9 | 0.00157 |
| 10× | 1.0% | both closed | 0.014 | 9.8 | 0.00139 |
| 20× | 2.0% | both closed | 0.051 | 39.2 | 0.00130 |
| 50× | 1.0% | both closed | 0.068 | 49.0 | 0.00139 |
| 50× | 2.0% | loser busts | 0.149 | 100 | 0.00149 |
| 100× | 1.0% | loser busts | 0.180 | 100 | 0.00180 |
| 1000× | 0.05% | loser busts | 0.680 | 100 | 0.00680 |
A naked loser pays $0.0100 per PAPER. The hedged pair pays $0.0013 to $0.0016. Leverage sets speed, not price, until the buffer starts eating margin at 100×+.
The mint rate is 100 PAPER per dollar until tracked LP reaches $2M, then decays as a one-way ratchet. The first $2M of losses create the first 200M PAPER, all at the top rate.
| Cumulative LP gain | PAPER supply | Marginal rate |
|---|---|---|
| $2M | 200M | 100 / $ |
| $10M | 950M | 88 / $ |
| $25M | 2.13B | 70 / $ |
| $50M | 3.63B | 51 / $ |
| $100M | 5.59B | 30 / $ |
With $43M already deposited and 1000× on the button, the flat region could be gone within days. Being live in the first hours is itself the edge. This is the one thing the tweet got right: watch for trading to start.
/query/protocol/queue-summary, /state/house/current). When the queue is empty and LP cash covers our winner, close the winner: paid instantly.useDebt in the intent). A debt-funded loss still mints PAPER on the destroyed claim without any cash leaving our account. We model this before using it.PAPER cannot be transferred at launch; its only value is the USDC it earns staked. Stake every mint immediately. Dividends come from 1% of all settled PnL while the queue is empty, and from all LP profit above $5M once the house gets there. Both scale with how much the crowd loses.
Binance leads Hyperliquid by roughly 100 to 300 ms. The relayer batches our intent onto HyperEVM seconds later, so by default there is nothing to catch. We measure it anyway before launch: if the move predicted at the relayer's real latency horizon beats the haircut plus 2% often enough, it becomes an entry filter for which leg to open first. If not, it stays off. No guessing.
Our cost is about $0.0014 per PAPER. The payout is a dividend stream, so the question is the house's annual profit divided by supply:
| House profit to stakers / year | Supply | USDC per PAPER / year | Multiple of our cost |
|---|---|---|---|
| $1M | 1B | $0.0010 | 0.7× |
| $5M | 1B | $0.0050 | 3.6× |
| $10M | 2B | $0.0050 | 3.6× |
| $30M | 3B | $0.0100 | 7× |
The house edge per dollar of degen volume is large (a 1000× bust alone is 50% of margin), and $43M is already in the door. But the owner can change the impact and fee parameters at any time, PAPER is non-transferable until they say otherwise, and a dead protocol pays nothing. So the plan caps what we spend on minting until we have observed real dividends per PAPER for 48 hours and can extrapolate from data instead of from this table.
trading:current, public:trades), Binance bookTicker, and the exchange state endpoints every few seconds into a SQLite ledger on the Hetzner box./query/protocol/trades/recent, or tradingPaused flips), OI caps move, queue size and age, tracked LP crossing $2M and $5M, any change to impact or fee parameters, market retirement./state/trading: close everything, alert, stop.All of this was read from the live app today. No SDK exists; the frontend signs EIP-712 intents and posts them to the relayer, which batches them on-chain.
HyperEVM (chain 999)
Exchange proxy 0x6cd5661646289fb6e65ea5c032310fded797d0a2
implementation 0x0f3febfc94876b0c895f7acecdc8f5c863b549ee
PaperToken 0xe40f17915daa230324030003a197cdaef2261c0e
PaperStaking 0xaad6c7b0cc3014fc80ffedae0ed7ce5967b0f016
DepositProxyFactory 0x1629b7d46bef6e13ff754174fc9f32dea309b38f
Read (public, no auth)
GET exchange.papertrade.xyz/state/trading params, caps, paused flags
GET exchange.papertrade.xyz/query/protocol/summary LP, queue, tracked LP, mint rate
GET exchange.papertrade.xyz/query/protocol/queue-summary
GET exchange.papertrade.xyz/query/protocol/trades/recent
GET exchange.papertrade.xyz/query/markets/{0|1}/price-history
GET exchange.papertrade.xyz/state/leaderboard/accounts
WS stream.papertrade.xyz/connection/websocket trading:current, public:trades
WS api.hyperliquid.xyz/ws bbo BTC / ETH
Write (signed by the session key, via the relayer at sign.papertrade.xyz)
RegisterSessionKey(user, key, expiry, feeAddress, nonce, deadline)
OpenPosition(user, instrumentId, isLong, size, leverage, useDebt, nonce, deadline)
Close(user, positionIds[], nonce, deadline)
Stake / Unstake / Claim (wallet-signed)
WithdrawToCore (wallet-signed, never by the bot)
Stack: Node TypeScript on the existing Hetzner server, systemd, SQLite ledger with the hard cap, Telegram bot for alerts, same deploy pattern as the other projects. The exact relayer request format comes from capturing one real session in Phase 1; everything else is already known.