How Peer works
Read it straight through and you will never meet an equation. Every place one belongs, it is folded into a Detail block you can open. Every chart on this page is drawn by calling the same functions the protocol calls.
The idea
Peer lets you take a position on how a trader does, rather than on what they hold.
FOMO is a social app where people trade in public. You can already follow someone there and watch every position they open. What you cannot do is act on the view you form while watching. Peer is the missing half: it turns a trader into something you can be right or wrong about, with money on it.
A market on Peer is a plain yes-or-no question with a deadline. Will @unipcs be up in 24 hours? You buy the side you believe. If you are right, each share you hold pays out 1 USDG. If you are wrong, it pays nothing. There is no leverage, no liquidation, and nothing to manage in between.
What you are betting on
The trader, not the token.
This is the distinction the whole product rests on, so it is worth being blunt about. If you buy a memecoin, you are exposed to that coin. If you take a position on a trader, you are exposed to their judgement across everything they hold, including the coins they have not bought yet.
A trader who is up because they called one thing correctly and a trader who is up because they are consistently early both show up the same way here: as a line that goes up. What that line is made of is theirs to decide and yours to have an opinion about.
One trade, end to end
Here is every step of a $100.00 ticket, with the real numbers from the live market on @unipcs.
- 01
Pick a trader and a question
Will @unipcs be up over the next 24 hours? The market closes at a fixed time, and the answer is decided by their total account PnL on fomo, not by anybody’s opinion. - 02
Look at the price
Up is trading at 43¢. That is the market saying it is roughly 43% likely. A price is a probability here, which is the single most useful thing to know about this product. - 03
Buy the side you believe
$100.00 at 43¢ buys 229.89 shares. There is no fee on the way in. - 04
Wait, or sell early
Your position is worth what the market will pay for it at any moment. If the odds move your way you can sell before the close and take the difference. Nothing forces you to hold to settlement. - 05
Settlement decides it
At the close the keeper publishes the trader’s total PnL, and every share on the winning side becomes worth exactly 1 USDG. Losing shares become worth nothing. - 06
Redeem
229.89 winning shares redeem for $229.89 gross. The protocol takes 2% of the winnings only, which is $2.60, leaving $227.29. That is a 2.27x return on the ticket. If you were wrong, you lost the $100.00 and nothing else.
DetailWhere the fee actually goes
The $2.60 taken from this ticket splits three ways, on chain, at redemption:
liquidity $0.26 10%
flywheel $2.34 90%
burn PEER $1.17 45%
to holders $1.17 45%
trader escrow $0.00 0%Trader escrow is 0% in v1, so that line is currently zero. The machinery is still in the contract and turning it back on is one constant. See if you are the trader.
Total account PnL
One number per trader: how much money they are up or down on fomo, all time, in dollars. Every market on Peer settles against it.
It is the figure fomo’s own leaderboard ranks people by, and it is the figure the trader is judged by socially, which is exactly why it is worth trading. A market asks whether it is higher at the close than it was at the open. Nothing else about the account matters to a settlement.
The number is signed. Plenty of accounts are down, and a trader at -$40,000 who ends the day at -$25,000 was up over that window. Direction over the window is the whole question; the level it starts from is not.
DetailWhy not the flow-neutral index this site used to describe
The Peer Index is a time-weighted, flow-neutral return series: the honest way to score a portfolio, and the right answer eventually. It needs three things first, and v1 has none of them: a resolver that maps a fomo handle to a wallet set, a price waterfall to value the holdings, and an indexer walking several chains to see the flows.
Total PnL needs a leaderboard read. It also survives the problem that rules out raw portfolio value: money moved in is not profit, so a deposit does not move it. That is the property the index was built for, and PnL already has it.
So this is a deliberate retreat, and it is written down as one. The index machinery is still in the repository and the interface still charts a line per trader; that line is their PnL, not an index level.
Why a deposit is not a profit
The reason the underlying is PnL and not the balance in the account.
Suppose a market settled on portfolio value. A trader wires in $10,000 an hour before the close, their balance jumps, and every holder of the up side wins a bet they did not earn. Anybody watching could see that coming and take the free side of it, which is not a market, it is a tap.
Profit and loss is already net of that. Depositing moves the balance and leaves PnL exactly where it was; only a trade that made or lost money moves it. There is no formula here and no correction to apply, which is the point: the property the index had to be constructed to guarantee is one this number has by definition.
Where the number comes from
A keeper that reads fomo every five minutes and writes down what it saw.
fomo has no developer API and does not publish its traders’ wallet addresses, so the profiles are the entire surface. The source of truth is fomo’s own leaderboard, read by a service that never stops, and the reading is kept as a file rather than a number in a database.
- 01
The keeper holds a session
The leaderboard is behind a login, so the keeper keeps one browser page open and lets the site’s own SDK refresh its token. A read from outside a browser is refused by fomo whatever headers it carries, so this is not a preference: it is the only thing that works. - 02
Every five minutes, a snapshot
Each read writes one file: the time, the source, and every listed trader’s handle and total PnL. About a kilobyte, 288 a day. This is the evidence, and everything downstream is derived from it. - 03
Published, not just stored
The keeper serves its own snapshots and settlements read-only. A settlement commits the hash of a file, and the hash of a file nobody can read proves nothing to anyone.
The windows are measured here rather than requested. fomo’s window=24h and window=7d return byte-identical rows, so both are decorative: there is one board carrying one lifetime total, and a 24h market is that total sampled a day apart from our own snapshots.
Snapshots and the median rule
Neither end of a market is decided by a single reading.
A market’s strike is the trader’s total PnL at the open and its settlement is their total PnL at the close, and both are taken as the median of the three snapshots nearest that moment. Three reads spanning fifteen minutes is what makes a last-second flush worthless: moving one reading moves nothing, because the median ignores it.
strike = median(3 snapshots nearest opensAt)
settlement = median(3 snapshots nearest closesAt)
outcome = settlement > strike ? call : putOnly snapshots at or before the moment being valued are eligible. A settlement that can see past its own close is not a settlement.
A snapshot older than 20 minutes at the moment being valued is not eligible, so a keeper that stopped reading cannot have its last good file stretched over a gap it did not observe. If three usable snapshots do not exist, the settlement job refuses to resolve rather than guess, and the market becomes a void. See when a market voids.
DetailWhat the strike actually is on chain
The contract holds strike as an unsigned field, because it was designed for an index level that starts at 1000 and cannot go below zero. Total PnL is signed, so the baseline is stored offset by 10^30 and read back through that offset. One place in the codebase knows about it.
The contract never reads the strike. It is a commitment, not an input, which is exactly why it has to be right: it is the market’s public record of what the number was at the open, written before anyone knew the outcome. A baseline that could be reinterpreted afterwards would be worth nothing.
The two launch markets
One question, asked at two horizons: will this trader be up over the next day, and over the next week? Ten traders, two markets each, twenty live markets. Up is a call on their PnL, Down is a put.
Calls and puts · 1 day
Sign of 1-day PnLTheir PnL over one day. The call pays if it ends positive, the put pays if it ends negative.
Calls and puts · 7 days
Sign of 7-day PnLThe same question with room to breathe. A week of PnL, one side pays.
Both settle on the same underlying: the sign of the trader’s PnL over the window, read off the Peer Index. Only the horizon changes, which means the index only has to be right once for every market on the platform to be right.
Further templates are already defined in the protocol: activity markets on whether they open a new position, target-return and range-bound markets shaped by their volatility, streaks, and head to head pairs. They list once the launch pair has volume; nothing about the machinery below changes when they do.
How the odds open
Every v1 market opened at exactly 50c, on purpose.
A market with no trades in it still needs a price, and there are two ways to supply one: compute a probability from the trader’s history, or decline to and let the first traders find it. v1 declines. All twenty markets were listed at 50%, seeded with $10.00 of liquidity each, and moved from there by whoever traded first.
The pricing model is still in packages/core and the contract still stores an opening probability per market, so seeding from a model is a listing-time argument rather than a rewrite. It stays unused until there is enough of our own history to justify a number other than a half.
DetailWhat the model would do, when it is turned on
A binary on a trader is a digital option, and its price is the probability of finishing above the strike. Two decisions in it matter far more than the formula.
Skill is shrunk hard toward the average. Each trader’s own drift is blended toward the cohort mean, and the whole result toward a coin flip, until there is real history to justify anything else. With no history at all the model returns 50%, which is where v1 starts everything anyway.
The tails are fat, and the model says so. A normal distribution systematically underprices big moves on a memecoin book, and big moves are exactly where whoever seeded the market gets picked off. A Student-t puts real probability in the tails.
w = historyDays / (historyDays + priorDays)
μ = w · traderDrift + (1 − w) · cohortDrift
scale = σ_window · √((ν − 2) / ν)
z = (ln K − (μ·T − σ_window² / 2)) / scale
P_model = 1 − T_ν(z)
α = clamp(historyDays / priorDays, 0, 1)
P = clamp(α · P_model + (1 − α) · 0.5, 0.05, 0.95)σ_window is the per-period vol scaled to the option window; the scale is deflated because a location-scale t has sd = scale · √(ν/(ν−2)).
The final clamp means no market can ever open at certainty, which caps how badly a wrong model can hurt whoever seeded the book.
How the price moves
There is no order book. A market maker holds reserves of both outcomes, and the price is the ratio between them.
An order book needs two people who want opposite things at the same moment, which a market on a specific trader closing on a specific day will rarely have. So Peer uses an automated market maker instead: it always has a price, and it always takes the other side.
Buying Up removes Up shares from the reserve and adds to Down, so the price of Up rises. That is the entire mechanism, and it is why a big order costs more per share than a small one.
DetailThe closed form
A fixed-product market maker, the same construction Gnosis conditional tokens use. With reserves R_up and R_down:
p_up = R_down / (R_up + R_down)
sharesOut = I × (R_up + R_down + I) / (R_other + I)The price is the opposite reserve over the total, which is the counter-intuitive part: the scarcer an outcome's shares are in the pool, the more the market is charging for them.
A market opens by seeding those reserves so the ratio equals the model probability from the previous section. From that point the model is out of the picture and the price is whatever people disagreeing with each other makes it.
What you get paid
A winning share is worth 1 USDG, less 2% of the profit. Cheaper shares pay more, because they were less likely to win.
The curve is steep at the left because that is where the unlikely outcomes are. A share bought at 10¢ returns nearly ten times if it lands; a share bought at 90¢ returns about a tenth. Neither is a better deal than the other. They are the same deal at different odds.
DetailThe exact arithmetic
winnings = shares − shares × avgPrice
payout = shares − winnings × fee
multiple = (1 − fee × (1 − p)) / pWorked on the ticket from section three: 229.89 shares bought at 43¢ redeem for $229.89, of which $129.89 is profit. The fee is 2% of that, $2.60, leaving $227.29.
How a market resolves
Settlement is the median of the three snapshots nearest the close, not a reading at the bell.
If a market settled on a single instant, the person with the most to gain from moving that instant would be the trader themselves. A median over the final quarter of an hour removes that: to move it you would have to hold a manipulated figure for the whole window, in public, against anyone willing to trade against you.
- 01
The window closes
Trading stops at closesAt. The contract will not accept a buy after it and will not accept a resolution before it. - 02
The settlement job reads its own evidence
It takes the median of the three eligible snapshots nearest the close and compares it to the baseline recorded at the open. Higher settles Call; anything else settles Put. The comparison is one shared function, so the number printed by the dry run is the number that goes on chain. - 03
The outcome is committed with its evidence
The resolver sends the outcome and keccak256 of the settlement file. The file names both PnL figures, the window, and the snapshots they came from, and it is served publicly, so the hash on chain is checkable by anyone who cares to. - 04
Winners redeem
Every share on the winning side becomes worth exactly 1 USDG, less the 2% fee on winnings. Losing shares are worth nothing. Redemption is pull, not push: nobody has to run a distribution.
When a market voids
Voiding returns everybody’s money at cost. It is the designed answer to not knowing, and v1 leans on it.
The condition that actually fires in v1 is the first one. Everything the protocol can settle comes from snapshots, so a gap in the snapshots is a gap in the evidence, and a market whose window contains one cannot be resolved from anything.
Oracle liveness
The keeper stopped reading, so the window has no snapshots to settle from. Three failed reads in a row and it says so in the log by name; every market closing in that gap is refunded rather than guessed at.
Resolver stale
Nobody resolved within 7 days of the close. Anyone may then void the market from the contract, without permission. This is the backstop against the v1 resolver key going dark and stranding collateral forever.
Trader opted out
The subject signed to delist themselves. Every open market on them voids.
Guardian void
A separate cold key can stop a market that should not settle. It is a third key, held apart from the owner and the resolver on purpose.
Three further conditions sit in the contract for the index-based markets this protocol is built toward: the wallet set behind a handle changing, a portfolio too small for percentage moves to mean anything, and a book the price sources cannot value. None of them can fire on a market written on total PnL, and they are named here because they are in the enum rather than because v1 uses them.
If you are the trader
You are owed money whether or not you have ever heard of Peer, and you can leave with one signature.
Listing is permissionless, so a market can exist on you without your involvement. The contract carries an escrow that accrues to a hash of your handle — no wallet needed, nothing to opt into — and its share is currently set to 0%, because v1 has nobody to process claims. Turning it back on is a single constant, and anything already accrued is still there.
One signature opts you out entirely, which voids every open market on you and refunds each position at cost.
The interface
One card, repeated everywhere, and the token system it is built from.
Peer is a social profile with a fund card underneath it and live odds where the Buy button would be. Every screen in the product is a variation on this component, which is why the leaderboard, the discover grid and the hero all feel like the same object.


Unipcs
"If the Lord will, we shall live, and do this, or that." - James 4:15
- --ease-reveal
- cubic-bezier(0.16, 1, 0.3, 1)
- Entrances. Fast out, long settle.
- --ease-ui
- cubic-bezier(0.32, 0.72, 0, 1)
- Hover, press, state change.
- --ease-draw
- cubic-bezier(0.65, 0, 0.35, 1)
- Path draws and bar fills.
- --ease-lift
- cubic-bezier(0.22, 0.61, 0.24, 1)
- Card hover. Cannot overshoot.
- --dur-hover
- 280ms
- A card answering the cursor.
- --dur-draw
- 1400ms
- An index line drawing itself.
The PEER token
PEER is live on Robinhood Chain. It is not what markets settle in.
Worth separating the two things, because they are easy to confuse. Markets on Peer are priced, traded and settled in USDG, the stablecoin bridged USDC arrives as on Robinhood Chain. You do not need to hold PEER to take a position on anybody.
0x96f0889cbc2d1423fd64fd1307335fe72f1a198e
This is the only official PEER contract. Markets are priced and settled in USDG, and nothing on Peer requires holding PEER.
Parameters
Everything the contracts are configured with, in one table.
| Chain | Robinhood Chain |
|---|---|
| Chain IDtestnet 46630 | 4663 |
| Collateralbridged USDC arrives as this | USDG |
| Redemption feeon winnings only, never on entry | 2% |
| Fee splitburn PEER / to holders / trader escrow / liquidity | 45 / 45 / 0 / 10 |
| Underlyingread from fomo, in dollars, signed | Total account PnL |
| Snapshot cadence288 readings a day, each one a published file | 5 min |
| Strike and settlementsnapshots nearest the open and the close | median of 3 |
| Maximum snapshot ageolder than this and it cannot value a moment | 20 min |
| Opening priceevery v1 market, seeded flat | 50% |
| Seed per marketthe liquidity a market opens with | $10.00 |
| Markets liveten traders, two windows each | 20 |
| Resolver graceafter which anyone may void a stale market | 7 days |
| Supported wallet chains | Solana, Base, BNB Chain, Monad, Robinhood Chain |
| PEER tokenRobinhood Chain, chain 4663 | Live |
Glossary
The dozen words this page uses in a specific way.
- Total account PnL
- How much money a trader is up or down on fomo, all time, in dollars. The underlying every market settles on.
- Snapshot
- One reading of the leaderboard, written to a file with its time and source. The evidence behind every strike and every settlement.
- Keeper
- The service that takes those readings every five minutes and serves them publicly.
- Baseline
- The trader's total PnL at the open, committed on chain as the market's strike. A record, not an input.
- Median rule
- Both ends of a market are the median of the 3 snapshots nearest that moment, so no single reading decides anything.
- Call
- The call side: pays if PnL is higher at the close than at the open.
- Put
- The put side: pays if it is not.
- Binary
- A contract worth exactly 1 unit of collateral if its condition holds and nothing if it does not.
- Price
- What one contract costs. Because it pays 1 or 0, the price is also the market's estimate of the probability.
- Payout multiple
- What a winning ticket returns, net of the redemption fee. The reciprocal of the price, roughly.
- FPMM
- Fixed-product market maker. Holds reserves of both outcomes and prices from their ratio.
- Void
- A market stopped early and refunded at cost, because a condition made settling unsafe.