Guide
Everything here uses made-up coins. Nothing can be bought, cashed out or won for real money. Numbers shown are the current defaults; a Stonkverse can override some of them.
New here? Start here
What is this?
OneStonks is a stock market where, instead of companies, you trade the characters, places and wonders of a story. Each one is a stonk. You get free play coins, buy "shares" of the stonks you believe in, and sell them later. If a stonk gets more popular with other players, its price goes up and you profit. If not, it goes down. Leaderboards show who played best.
Why “stonks”?
The name is a nod to the internet meme: “stonks”, a deliberately wrong spelling of “stocks” that goes with a smug face and a chart going up, even when it shouldn’t. We liked it too much not to borrow it, and this is our thank-you to the original. Here it is, and Know Your Meme tells its story.
Quick start
- Sign up and open a Stonkverse. A Stonkverse is a community built around one story, with its own stonks and its own coins. Joining gives you 10,000 coins of that Stonkverse's currency. Each Stonkverse is its own world: coins never move between Stonkverses.
- Pick a stonk. Open the market list and search or sort. Every stonk has a ticker (a short code like
ZORO) and a price. - Buy. Type how many coins you want to spend. The page shows how many shares you get and what the price will be afterwards before you confirm.
- Watch. Prices only move when people trade. Add stonks to your watchlist, look at the chart, and check your portfolio.
- Sell when you want your coins back. Your profit is the difference, minus fees.
Where do prices come from? (no one is "on the other side")
In a real stock market a buyer needs a seller. Here, every stonk has a pool: a stock of shares and a stock of coins held by the game itself. The price is simply coins in the pool ÷ shares in the pool.
- When you buy, you put coins into the pool and take shares out. Fewer shares and more coins means the price goes up.
- When you sell, you put shares back and take coins out. The price goes down.
- So the price reflects how many people bought versus sold. Popular stonks rise, forgotten ones sink.
- The pool can never be emptied. The closer a buyer gets to taking every share, the more each additional share costs, so there is always some left but it gets very expensive.
A worked example
A new stonk starts at 10 coins with 3,000 shares and 30,000 coins in its pool. You spend 100 coins:
| Trading fee (2%) | 2 coins |
| Coins that actually go into the pool | 98 coins |
| Shares you receive | 9.76 |
| Average price you paid | 10.23 (a little above 10: you pushed the price up as you bought) |
| New price of the stonk | 10.06 (up 0.65%) |
| If you sold everything straight back | 96.03 coins (you lose the fee twice, plus a tiny price effect) |
The bigger your trade compared to the pool, the more you move the price against yourself. This is called price impact. The biggest single buy allowed is 2% of the pool's coins (600 here), which would move this price by about 4.0%. Many small trades cost less impact than one huge one. If you want to use more than that in one go, tick Spend more, in several orders (or Sell more, in several orders) on the trade form: it cuts your spend or sale into several orders, each within the limit, one after the other. The limit stays and you pay for it: every order moves the price a little and pays the fee, so on average you pay more (or get less) than with a single order. Up to 20 orders at a time.
Fees
Every buy and sell pays 2%. Fees are destroyed, not paid to anyone. If the price moves against you by more than 2% between the moment you see a quote and the moment your trade runs, the trade is refused instead of giving you a worse deal.
Swapping one stonk for another
Want to move from one stonk to another without doing the sums yourself? Open a stonk page and use Swap: pick the direction (swap out of this stonk, or swap into it), choose the other stonk and an amount, and read the preview. A swap is a sale followed straight away by a purchase of what the sale paid, done in one go: you pay the fee on both parts and both prices move, exactly as if you had made the two trades yourself. If either part is refused, nothing at all happens. The percentage buttons and the slider go up to the largest swap allowed right now.
Orders that wait for you
- Limit buy: "buy for me if the price falls to X" (buy cheaper).
- Limit sell: "sell if the price rises to X" (take profit).
- Stop sell: "sell if the price falls to X" (cut a loss).
- Stop buy: "buy if the price rises to X" (join a rising trend).
You can have up to 10 open orders; they expire after 30 days. They are checked about once a minute, not instantly.
Betting on a fall: shorting
If you think a stonk will drop, you can short it: the game lends you shares, you sell them now, and later you buy them back. If the price fell in between, you keep the difference. If it rose, you lose it, and you can lose more than you expected, so it is for experienced players. You must put up a deposit (5% of the sale), a small daily fee applies (0.1% per day), and the game closes your short for you if your safety cushion falls too low.
Leaderboards, seasons and restarts
- Net worth is your coins plus what your shares would actually pay you if you sold them all right now (fees and price impact included).
- There are leaderboards for total net worth, for this month's % gain, and for the current 90-day season. Percentages mean a small account can beat a big one.
- To appear you need 7 days in the Stonkverse and 3 trades, and your profile must allow it. Seasons never reset anyone; they just start a fresh ranking and keep the old podiums.
- Went broke? After 30 days you can restart a Stonkverse: your shares are sold at the market price and you get a fresh wallet, as long as you are not ahead (net worth at most 1% of your last grant). Your badges stay.
- Diamond Hands badges reward holding one stonk for 90 days (bronze), 365 days (silver) and 1095 days (gold).
Market hours (some Stonkverses)
Some Stonkverses follow a story that is released on a schedule: a weekly chapter, a monthly issue, an episode. To keep leaks and spoilers from moving prices before the official release, such a Stonkverse can have market hours. It closes a few days before the release and reopens the moment the new chapter or episode is out. A weekly story might be open from Sunday evening until Tuesday night and closed the rest of the week.
While a market is closed you can still look at everything: prices, charts, leaderboards, your portfolio. What stops is buying, selling, new orders and shorts. Orders that were already waiting stay waiting and may fire when the market reopens, and the borrow fee of a short does not run while the market is closed.
The Stonkverse page always says whether the market is open and when that changes, in your own time zone. The admins can open or close the market early, for example if a chapter comes out early or a spoiler leaks. When they do, the page says so and the change is written in the activity log. Stonkverses that do not need this are simply always open.
Achievements
Small milestones that say “you did this for the first time”: your first purchase, a first swap, holding three stonks at once, and more. When you unlock one, a little card slides in for a few seconds and you get a notification. They are only for fun: they never give coins or any advantage, and you can see all of them (and what is still locked) on your Account page.
Invite friends
Every account has a personal invitation link (Account, then Invite friends); a friend can also type your code on the sign-up form. A friend who joins with it gets an exclusive “Invited by a friend” profile frame. When they become an active player (a verified email, an account at least 3 days old and at least 5 trades) you get an achievement and an exclusive frame too: Scout for 1 friend, Recruiter for 3, Captain for 10, Legend for 25.
The frames and achievements are purely cosmetic: they never touch your coins, trades, limits or rank, and you can use them without Premium. At most 10 friends can start counting for you in any 7 days; the others just wait their turn.
Fee share. Not active at the moment. It may be switched on later: whoever invited a friend would get back a small percentage of the fees that friend pays, for a limited time, in the currency of each Stonkverse where you both play. It would come out of fees that are burned anyway and be capped hard, per friend and in total per Stonkverse, so bringing many friends cannot unbalance a market. If it is switched on, the exact figures appear here.
Alerts on your device
If you want, OneStonks can send a short alert to the phone or computer you are using (Account, then Alerts on this device). It only asks when you press the button, and you can turn it off, or remove a device, from the same place at any time.
It is meant to be rare. It is only about things you set up yourself: a limit or stop order that fired, failed or expired, and a short that was closed automatically (proposals, seasons and new badges can be added, but are off until you choose them). No ads, no “come back” messages, nothing about achievements or invitations. Several things at once become one message, there are never more than 3 a day and never closer than 10 minutes, nothing is sent during your quiet hours (22:00 to 08:00 unless you change them; what happens meanwhile arrives together afterwards), and an alert that waited more than 12 hours is dropped instead of sent late. If the site is open in front of you, the bell tells you and no alert pops up. Signing out removes that device.
It needs a browser that supports it (Chrome, Edge, Firefox, Safari on a Mac; on an iPhone or iPad only after adding OneStonks to the Home Screen). Alerts can show on a locked screen.
Suggesting a stonk
Missing someone? Once you are a trusted player (14+ days and 20+ trades in the Stonkverse, adjusted to how big the community is) you can propose a stonk. It needs votes from 5% of trusted players (at least 3) and an admin's approval.
Good habits
- Read the quote before confirming: it tells you the exact shares and the price afterwards.
- Small stonks have thin pools: they swing a lot and cost more to trade in size.
- Do not put everything in one stonk. Prices can fall as fast as they rise.
- It is a game. Nothing here is financial advice and the coins are not money.
Cheat sheet for experienced traders
TL;DR: single-asset constant-product AMM per stonk (x·y = k, virtual reserves, no order book, no external price), taker fee burned, optional limit/stop orders and shorts layered on the same curve, fake currency, no dividends, no ETFs.
Market mechanics
| Item | Value / rule |
|---|---|
| Venue | Per stonk pool: coin reserve X, share reserve Y, price P = X / Y, invariant k = X·Y. Virtual reserves: no real counterparty. |
| Fee f | 2% of the taker's side, on every buy and sell, burned. Not added to the pool, so k only ever grows from rounding. |
| Buy, spend S | n = S·(1 − f); Y′ = ⌈k / (X + n)⌉; shares out = Y − Y′; X′ = X + n. |
| Sell, s shares | Y′ = Y + s; X′ = ⌈k / Y′⌉; gross = X − X′; payout = gross·(1 − f). |
| Price impact | ≈ n / X for small buys (the whole curve is x·y = k). Round trip costs ≈ 2f + impact. |
| Rounding | Always in the pool's favour; repeated dust trades cannot extract value. |
| Opening pool | Y₀ = 3,000 × depth multiplier, P₀ = 10, so X₀ = 30,000 × multiplier. The multiplier is 1 for every stonk (nobody can know in advance who becomes popular); an admin can only deepen a pool later, which multiplies both reserves by the same factor and leaves the price unchanged. |
| Order limits | Min 10 coins; max 2% of pool coin reserve per order; 30 trades per user per minute. "Several orders" option: up to 20 orders per request, each within the limit. |
| Slippage guard | Trade refused if the price is worse than the quote by more than 2%. |
| Liquidity scaling | Each pool is kept at X ≥ 16 × coins issued in the Stonkverse × (its depth weight ÷ total weight). X and Y are multiplied by the same factor, so P is unchanged; only depth grows. Pools never shrink. Skipped when growth is under 1%. |
| Supply | No fixed share count. Net supply changes only through trades, short covers, merges (new shares for converted holders) and retirements (holders paid in new coins; both recorded and reported). |
| Execution | Market orders fill immediately against the curve. The average fill price differs from the quote's spot price by the impact. |
| Swap | The sell leg, then the buy leg with its proceeds, in one transaction. Each leg keeps the usual fee, per-order cap (so both pools count), market hours, play permission and slippage guard; if either fails the whole swap is refused. Stored as two ordinary trades tied by one swap id. Blocked while you hold a short on the stonk you would buy. Limit, stop and short orders still work only against coins: there is no stonk-against-stonk order. It counts as two trades for the per-minute limit. |
Orders
| Type | Triggers when | Fill |
|---|---|---|
| Limit buy | price ≤ trigger | Waits unless the average fill (before fees) is at or below the limit |
| Limit sell | price ≥ trigger | Waits unless the average fill (before fees) is at or above the limit |
| Stop buy | price ≥ trigger | At market |
| Stop sell | price ≤ trigger | At market |
Evaluated by the one-minute cron, not tick by tick. Same fee, caps and rules as market orders. Max 10 open per player, expire after 30 days.
Short selling
| Item | Rule |
|---|---|
| Open | Sell n borrowed shares through the same curve; proceeds P = gross − fee; post margin M = 5% × gross; locked = P + M. |
| Equity | locked − buy-back cost (fee included) − accrued borrow fee. |
| Maintenance | Forced cover by the cron when equity < 25% × cost to cover. |
| Borrow fee | 0.1% per day of the sale value, burned. |
| Short interest cap | Total shorted shares per stonk ≤ 5% of the pool share reserve. |
| Bad debt | If cost exceeds locked, the player gets nothing and the shortfall is created as coins, tracked in the economy report. Loss is therefore limited to locked collateral for the player. |
| Close | Exact-size buy that destroys the borrowed shares. |
Scoring, restart and progression
| Item | Rule |
|---|---|
| Net worth | Cash + liquidation value of holdings (sold into the curve, fee included) + short equity (floored at 0). |
| Monthly gain | (NW − baseline) ÷ baseline. Baseline = net worth at the end of last month, or your last grant if you started later. |
| Season gain | Same, measured from the season start (90 days). Top 10 are archived. Nothing is reset. |
| Leaderboard eligibility | 7 days and 3 trades since join or last restart, and "show on boards" on. |
| Starting wallet | 10,000 per Stonkverse, sealed: no transfers between Stonkverses. |
| Restart | Every 30 days at most, only if NW ≤ 1% × last grant. Shorts are covered and orders cancelled, holdings sold into the curve, fresh grant issued, history archived, badges kept. |
| Diamond Hands | Hold one stonk 90 / 365 / 1095 days for bronze / silver / gold. |
| Trusted user | 14 days and 20 trades, scaled by (players ÷ 100)0.50000000, clamped to 0.25000000–5.00000000. |
| New listing | Votes from 5% of trusted users (min 3), then admin approval. |
| Achievements | Account-wide milestones, each defined by one simple rule (first buy, sale, swap, short or order; three holdings at once; trading on five different days; a badge; a vote; a restart). Checked after the actions that can unlock them and at login. Cosmetic only: they never affect trading, fees, caps or rank. |
| Invitations | Your link is in Account. A friend who becomes active unlocks exclusive frames and achievements for both of you. Cosmetic only; the optional fee share is described in the guide when it is on. |
| Not implemented | Dividends, ETFs and baskets, cross-Stonkverse transfers, real-money value. |
| Market hours | Optional per Stonkverse. It closes N days before the release at a set local time and reopens at the release; the release repeats every N days or every month, or is set by hand. While closed: view only. Buys, sells, new orders, shorts and covers are refused; waiting orders wait and may fire at the reopening; the short borrow fee does not accrue. Admins can close or open early (shown on the page, logged); that lasts until the next scheduled release. |
Glossary
- Stonk
- Something you can trade: a character, a place or a thing from a story. Each one has its own price.
- Ticker
- The short code of a stonk, like
LUFFY. - Pool
- The game's own stock of shares and coins for a stonk. It sets the price.
- Price impact
- How much your own trade moves the price. Bigger trades or thinner pools mean more.
- Slippage
- The difference between the price you expected and the one you got.
- Depth
- How big a pool is. Deeper means steadier prices.
- Net worth
- Your coins plus what your shares would pay you if you sold them now.
- Limit / stop order
- An instruction that waits for a price before acting.
- Swap
- Selling one stonk and buying another with the proceeds, in one step.
- Achievement
- A small milestone you unlock the first time you do something. Just for fun: no coins, no advantage.
- Invitation
- Your personal link (or code) to bring a friend. When they become an active player you both unlock exclusive frames and achievements. The rewards are cosmetic.
- Short
- A bet that a price will fall: sell borrowed shares now, buy them back later.
- Margin
- The deposit you lock to open a short.
- Season
- A fixed period with its own leaderboard. Nobody is reset.
- Restart
- Starting a Stonkverse over with a fresh wallet when you have fallen behind.
For developers: public API (beta)
A small, read-only API for the market data you can already see on the site. It is a first step and will be extended: new endpoints and new fields will appear over time; fields that exist now will not be renamed or removed without notice.
- Anonymous. No key, no account, no cookies. Market data only: nothing about players is exposed.
- Read-only. You cannot trade or change anything through it.
- Fair use. 60 requests per minute per address; beyond that you get
429with aRetry-Afterheader. Answers are cached for 30 seconds, so asking more often gains nothing. - For fun. The coins are made up and no price here is real money or advice; there is no uptime promise.
The basics
Base address: https://www.onestonks.app/api/v1. Every answer is JSON in one envelope: {"data": …} (plus "meta" on lists and history) or {"error": {"code", "message"}}. Prices are decimal strings with 8 decimals, so nothing is rounded on the way; percentages are strings with 2 decimals. Times are Unix seconds (UTC) or ISO 8601. Browsers may call it from any website (CORS is open).
| Endpoint | What it returns |
|---|---|
GET /api/v1 | This list, the version and the limit. |
GET /api/v1/stonkverses | The Stonkverses you can see: slug, name, currency, status, how many stonks, and whether its market is open (market: open, next_change). |
GET /api/v1/stonkverses/{slug}/stonks | Its stonks with price and change. Query: sort = price (default), gainers, losers or ticker; limit 1–200 (default 50); offset; q keeps only stonks whose ticker or name contains that text. meta.total tells how many there are. |
GET /api/v1/stonkverses/{slug}/stonks/{ticker} | One stonk: price, 24h and since-listing change, listing date, pool and the day's open, high and low. |
GET /api/v1/stonkverses/{slug}/stonks/{ticker}/history | Price points as {"t", "price"}, at most 240. Query: range = 1d (default), 1w, 1m or all. meta has open, high, low, last and change. |
Try it
curl "https://www.onestonks.app/api/v1/stonkverses/one-piece/stonks?sort=gainers&limit=3"
Answer (shortened, example values):
{"data":[
{"ticker":"LUFFY","name":"Monkey D. Luffy","status":"active","price":"10.00217789",
"change_24h_pct":"0.02","change_since_listing_pct":"0.02","url":"…/s/one-piece/LUFFY"}
],
"meta":{"total":1450,"limit":3,"offset":0,"sort":"gainers"}}
For AI assistants and other programs
The same market data is offered in the ways machines look for it. Nothing here needs a key, nothing about players is ever exposed, and nothing can trade.
- MCP server (Model Context Protocol, Streamable HTTP):
https://www.onestonks.app/mcp. Add it as a remote server in an assistant that supports MCP and ask it about prices. Tools:search_stonks,list_stonkverses,list_stonks,get_stonk,get_price_historyandget_game_rules, all read-only. The same limit applies: 60 requests per minute per address. A description of the server is athttps://www.onestonks.app/.well-known/mcp/server-card.json. - OpenAPI:
https://www.onestonks.app/api/v1/openapi.jsondescribes every endpoint above in the standard format (for client generators and tools). The API catalog is athttps://www.onestonks.app/.well-known/api-catalog. - llms.txt: https://www.onestonks.app/llms.txt is a short map of the site for language models, and llms-full.txt adds the rules of the game and the most valuable stonks in plain text.
- Languages. Add
?hl=it(ores,pt,fr,de,ja) to a public page to read it in that language.
Errors
400 bad_parameter | A query value is out of range or not recognised; the message says which. |
404 not_found | No such Stonkverse or stonk. |
429 rate_limited | Over 60 requests in a minute. Wait for Retry-After seconds. |
Missing something you would use? Tell us on the contact page: what people ask for decides what comes next.