Using Hunch
Markets and settlement
Daily and weekly markets, trading sessions, the price in effect at the bell, refunds, round proofs and settling a market yourself.
Daily and weekly
Two kinds of market, both UP or DOWN on one Stock Token:
- Daily: “Will TSLA close UP today? · Wed Sep 30”. Opening price at 9:30 am ET, closing price at 4:00 pm ET, the same trading day. Listed before 9:30 am ET for every allowed ticker, every trading day.
- Weekly: “Will NVDA finish the week UP? · Tue Sep 29 → Fri Oct 2”. Opening price at the week’s first opening bell, closing price at Friday’s closing bell.
Question text is generated from the market’s spec, never written by hand, and bets are accepted from listing until the closing bell. The spec (feed, times, age limits, seed, limits, fee) is fixed when the market is listed and cannot be changed afterwards by anyone.
Sessions and times
All times are New York time. The opening bell is 9:30 am ET on a NYSE trading day; the closing bell is 4:00 pm ET, or 1:00 pm ET on an early-close day. New York is on EDT (UTC−4) until Sunday November 1, 2026 at 2:00 am, then EST (UTC−5): the opening bell is 13:30 UTC until then and 14:30 UTC after.
| 2026 | Dates |
|---|---|
| Closed | Jan 1, Jan 19, Feb 16, Apr 3, May 25, Jun 19, Jul 3, Sep 7, Nov 26, Dec 25 |
| Early close (1:00 pm ET) | Nov 27, Dec 24 |
No market is listed for a day the exchange is closed, or for a ticker with an announced split inside the window.
The price feeds
Robinhood Chain’s stock prices are Chainlink US equity feeds. They take in overnight, pre-market, regular and after-hours trading, and they do not update on weekends or US market holidays: on chain they run from Sunday 8:00 pm ET to Friday about 8:00 pm ET. Each feed updates when the price moves 0.5% from its last update, or once every 24 hours, with 8 decimals.
The price is the Stock Token’s: the share price times the token’s multiplier, which Robinhood adjusts for dividends and splits. So the series stays continuous through a split, and UP or DOWN keeps its meaning.
The price in effect at the bell
There is almost never a Chainlink update exactly at 9:30 or 4:00 pm. So every reading here is the price in effect at that moment: the answer of the last update at or before it. It is Chainlink’s attestation of the price at that time, within its 0.5% band, which means it can differ from the exchange’s official print by up to about 0.5%.
Tickers
Standard Chainlink proxies on chain 4663 (not the SVR proxies). Addresses are taken from Robinhood’s contract list and checked on-chain; look-alike tokens with the same names exist, so never pick a token by its symbol.
| Ticker | Stock Token | Chainlink feed | Listed |
|---|---|---|---|
| NVDANVIDIA | 0xd060…9EEC | 0x379E…9F15 | Yes |
| TSLATesla | 0x322F…3b2d | 0x4A11…7C38 | Yes |
| AAPLApple | 0xaF3D…93f9 | 0x6B22…2cD0 | Yes |
| COINCoinbase | 0x6330…450b | 0xA3a4…8Ef2 | If its feed passes the flat-rate check |
Before a ticker is allowed, its feed is checked: the right description and 8 decimals, the longest gap between updates within a week, and how often a whole session passes without a single update (a session like that ends FLAT and refunds). Daily markets need that to happen on at most 25% of sessions; weekly markets on at most 10% of weeks. SPY is left out: its feed has gone up to a day without an update mid-week, and a calm index would refund too often.
UP, DOWN and refunds
| What happened | Result | Fee |
|---|---|---|
| Closing price higher than opening price | UP wins | 2% of winners’ gains |
| Closing price lower | DOWN wins | 2% of winners’ gains |
| Same price (often the same Chainlink update) | FLAT: every bet refunded in full | None |
| A price more than 1d 2h old at its bell | Refunded in full, once proven stale | None |
| Robinhood pauses the token's price for a corporate action | Settlement waits; refunded if still paused 24 hours after the bell | None |
| Nobody settles or refunds it | Anyone can refund it 72 hours after the bell | None |
The age limit (1d 2h: the 24-hour heartbeat plus 2 hours) catches a feed that missed its daily update. A market can be refunded for staleness only when the proven rounds actually break the limit; a good market cannot be refunded by mistake, and settlement itself never refunds for staleness.
The rules box
Every market page opens with this, with its own ticker, dates and limit filled in. Never shortened, never hidden.
Template
How this market settles. The opening price is Chainlink’s NVDA Stock Token price in effect at 9:30 am ET on the market's first trading day; the closing price is Chainlink’s price in effect at 4:00 pm ET on its last trading day. Chainlink updates this price whenever it moves 0.5% (or once a day), so either number can differ from the exchange’s official print by up to about 0.5%. UP wins if the closing price is higher, DOWN if it is lower. If they are the same, or if either price is more than 26 hours old at that moment, or if Robinhood pauses the token’s price for a corporate action for more than a day, every bet is refunded in full. Bets are accepted until 4:00 pm ET. The earlier you bet, the more of the other side’s later money is yours; a bet placed at the last moment gets its stake back plus whatever the other side adds after it. Hunch keeps 2% of winnings. Nobody at Hunch can set or change a price. If Chainlink moves this feed to a new aggregator around a bell, the price is read from the newest aggregator that had reported by then.
Round proofs
Settlement names two Chainlink rounds by id, one for each bell, and the settlement contract checks that each is really the last update at or before its bell:
- the round’s time is at or before the bell, and its answer is positive and inside a sanity band (older rounds of some feeds hold garbage, so no historical round is trusted blindly);
- and either the next round’s time is after the bell, or there is no next round yet and this is the feed’s latest (possible only because settlement runs after the bell).
Round ids carry a phase (Chainlink’s aggregator version) in their top bits. If a feed switched phase between a round and the bell, settlement stops with PhaseBoundary rather than guess; the operator is alerted, and the 72-hour refund remains the backstop. Any other pair of rounds is rejected with BadProof, so there is exactly one valid answer for every market, whoever submits it.
Resolve it yourself
Hunch’s keeper settles every market within minutes of the bell, but it is a convenience, not an authority. Anyone can do it, with the same result:
- 1
Wait for the bell
Settlement is accepted from the closing bell on. The keeper waits a further 60 seconds. - 2
Find the two rounds
For the opening and the closing bell, the last round of the market’s feed at or before each. Walk back fromlatestRoundDatawithgetRoundData; the public RPC keeps little history, but past rounds are current-state reads and always work. - 3
Preview
preview(specId, strikeRound, finalRound)on the settlement contract returns the status (1 UP, 2 DOWN, 3 FLAT, 4 STALE, 5 BADPROOF, 6 PAUSED, 7 BADANSWER) and both prices, without sending anything. - 4
Settle
UP, DOWN or FLAT: callresolve(specId, strikeRound, finalRound). STALE: callvoidStale(specId, strikeRound, finalRound). BADANSWER (a price out of range): callvoidBadAnswer(specId, strikeRound, finalRound). Any wallet can; the gas is well under a cent. Once betting opens, each market page has a “Resolve it yourself” button that does this for you.
RPC=https://rpc.mainnet.chain.robinhood.com
# The market's spec id
cast call $RESOLVER "specIdOf(address,uint256)(bytes32)" $HUNCH_VPM $MARKET_ID --rpc-url $RPC
# Check the two rounds (status, strike price, strike time, final price, final time)
cast call $RESOLVER "preview(bytes32,uint80,uint80)(uint8,int256,uint256,int256,uint256)" \
$SPEC_ID $STRIKE_ROUND $FINAL_ROUND --rpc-url $RPC
# Settle it (any wallet)
cast send $RESOLVER "resolve(bytes32,uint80,uint80)" $SPEC_ID $STRIKE_ROUND $FINAL_ROUND \
--rpc-url $RPC --account <your-keystore>After settlement, payouts and refunds are delivered to owners with claimFor(positionId) and withdrawRefundFor(positionId), which anyone may call; the money always goes to the position’s owner.
The refund drill
To show a refund happening for real, one labelled market is built to fail its price check: it takes Friday’s opening price and a closing time of 2:00 am ET on Saturday, with a one-hour age limit. Chainlink’s stock prices do not update on Saturdays (the last update is Friday around 8:00 pm ET), so at 2:00 am the price in effect is at least six hours old. That is provably stale, anyone can refund it, and every bet, Hunch’s seed included, comes back in full. A lister may only tighten a feed’s age limit, never loosen it. The result, with every refund transaction, goes on the Proof page.
Weekends and holidays
Because the feeds pause, a price on a Saturday morning is Friday evening’s, and this site shows its age (“updated Fri 3:56 pm ET”) rather than pretending it is live. Weekend markets, Friday close to Monday open with an 80-hour limit, are on the roadmap.