A season, end to end
A season runs in five phases. The contract works out which one it is in from the clock, so nobody switches it by hand.
- 1
- Opening soonThe season exists but entry has not opened. Nothing is staked.
- 2
- Entry openPay the entry fee to join. It goes into the prize pool. Trading has not started, so nobody can be ahead of anybody.
- 3
- TradingEntry is closed and positions can be opened and closed. Trading begins at the exact moment entry ends.
- 4
- SettlingTrading has ended. Every position is settled against its exit round, and then a final ranking can be submitted.
- 5
- FinishedThe ranking has been accepted. Prizes are claimable and career scores are updated.
A season also has a ceiling on how many players it accepts. Once it is full, entry is refused — which is what caps the amount of money any one season can have at stake.
Capital and leverage
Every player starts with the same virtual trading capital. Nothing you hold outside the game changes it, and there is no way to add more mid-season. The only thing that differs between two players on day one is their career score.
That score buys room, not money. It sets how large a book you may carry, from 3× at a standing start to 10× for a perfect record:
leverage = 3 + 0.07 × score score is a whole number, 0…100 capital = starting capital + realised profit and loss capacity = capital × leverage
Your leverage is read when you enter and fixed for the whole season, so finishing a season well never changes the one you are already playing.
Capital moves with realised results only. An open position that is doing well does not buy you room to open more; a realised loss takes room away. If realised losses wipe out the starting capital, capacity is zero and you cannot open anything further.
What you can trade
Eight assets, each with a Chainlink feed on Robinhood Chain. We do not list anything we cannot price. A position consumes capacity in proportion to its risk weight, so where you put the money matters as much as whether you were right about it.
risk-weighted exposure = Σ notional × risk weight you may open if exposure after the trade ≤ capacity
| Asset | Name | Risk weight |
|---|---|---|
| SGOV | 0–3 Month Treasury Bill ETF | 0.5× |
| SLV | Silver Trust | 0.8× |
| SPY | S&P 500 ETF | 1.0× |
| QQQ | Nasdaq 100 ETF | 1.2× |
| NVDA | Nvidia | 1.5× |
| TSLA | Tesla | 1.8× |
| BTC | Bitcoin | 2.0× |
| MSTR | Strategy | 2.5× |
Both directions are allowed on every asset. A short profits when the price falls by exactly as much as a long of the same size would lose.
The game runs around the clock. Equity feeds only publish while the market is open, so an order placed at the weekend is priced at the first round after the market reopens — see below.
How a price becomes your price
This is the rule that makes the game fair, and it is the one most worth understanding: you never trade at a price you have already seen.
When you open a position, the contract records the moment and no price at all. Your entry is the first Chainlink round published strictly after that moment — a price that did not exist when you pressed the button.
entry price = first oracle round with updatedAt > the moment you opened
That comparison is strict. A round stamped in the same second as your transaction does not count, because blocks here are a tenth of a second apart while timestamps are whole seconds — a round from your own second could have been published before you acted, and you might have seen it.
Anyone can then point the contract at which round that was, and it checks the claim: the round must come after your moment, and the round before it must not. There is exactly one round that satisfies both, so the person submitting has no choice to make and nothing to gain.
Without this, a fast player could watch the feed, see a new price arrive, and buy at the old one. It is the oldest trick against price feeds and it is worth more than any amount of skill, which is why the game is built around closing it rather than around anything else.
A round is only usable if the feed answered properly. If the answer is not positive, or the feed has published nothing for a week, the position is voided and settles at zero profit and loss rather than at a made-up number.
Closing a position
Closing takes two steps, for the same reason opening does: the price you leave at cannot be one you have already seen.
Asking to close records the moment. Settling it works out the exit — the first round after that moment — and books the profit or loss. Anything still open when trading ends settles against the end of trading.
profit and loss = notional × (exit − entry) ÷ entry negated for a short
Anyone can settle anyone’s position: it is a public calculation with a single correct answer, so there is nothing to gain by being the one who does it. A keeper runs continuously and settles whatever is ready.
Until a position is settled it still occupies capacity. Feeds publish when the price moves half a percent or once a day, whichever comes first, so the wait is routinely hours; Treasuries can take a full day, and longer across a weekend. Closing frees your room later than you might expect, and that is worth knowing before you need the room.
The ranking
When trading ends, anyone can compute the final order and submit it. The contract does not sort; it checks. The first submission that passes every check is accepted and the season is finished.
What it checks:
- the list holds exactly as many addresses as the season has players;
- every one of them entered this season, and none appears twice;
- nobody in it still has an unsettled position;
- equity never rises as the list goes down.
Final equity is the starting capital plus realised profit and loss, and never less than zero. Open positions do not count until they are settled — which is why the standings shown during a season are a forecast your browser computes, not the result.
The split
Entry fees accumulate in the season contract. There is no function that lets us withdraw them. When the ranking is accepted, the pool is divided by a curve fixed before the season opened.
If fewer players turn up than the curve pays, it is renormalised over the places that exist, so the whole pool is always distributed. Players who finish on exactly equal equity pool the places their tie spans and split them evenly — which is what makes the ranking safe to let anyone submit, since the order chosen inside a tie moves nobody’s money.
A season may also carry a platform fee, capped at 20% and disclosed on the leaderboard. It is zero on the opening season.
Prizes are not sent to you; they are credited, and you withdraw them when you want to.
What you carry forward
The only thing that survives a season is your score, and the only thing it does is set your leverage in the next one.
percentile = 100 for first place, 0 for last, spread evenly between new score = (old score + percentile) ÷ 2
Averaging against your old score means one good season does not hand you 10×, and one bad season does not undo a career. It also means a player who stops playing keeps their score exactly as it was.
A season with a single player does not change anyone’s score.
Limits and known risks
Nothing below is a hypothetical. These are the things we know about and have decided to ship with.
- The contract has not been audited
- Instead of an audit we cap what can be lost: every season has a maximum number of players, so the most at risk is the entry fee multiplied by that ceiling. Play with an amount that matches that.
- There are no liquidations
- Nothing closes your position for you. A position deep in the red stays open until you close it or trading ends, and final equity is floored at zero rather than going negative.
- The pool needs someone to submit a ranking
- If nobody ever submits one, the prizes are never distributed. Anyone can submit, including you, and we run a keeper that does — but the contract has no timer that pays out on its own.
- Several wallets can farm a score
- Nothing ties an address to a person. Somebody willing to pay several entry fees can raise one wallet's score using the others. It costs real money each season, which is the only thing standing in the way.
- Slow feeds cut both ways
- A feed publishes when the price moves half a percent, or once a day. Between rounds, your entry and exit are pinned to prices that may be hours old — the same for everyone, but not the same as the market.
- A dead feed voids a position
- If a feed stops publishing for a week, positions on it settle at zero rather than at a guess. You lose the trade's outcome, not your capital.
- No more than twenty unsettled positions
- You cannot open a twenty-first until some are settled. It exists so a season cannot be jammed by one player leaving thousands of positions for someone to settle.