MARKETS — Robinhood Chain × Tokenized Stocks

Two Tokens, One Stock: The Weekend Arbitrage Nobody Ran

11 min read
Robinhood ChainTokenized StocksUniswap v4On-chain Data

Robinhood Chain now has two tokens for NVIDIA, two for Tesla and two for nine other stocks and ETFs: one issued by Robinhood, one by Ondo. Since 26 October, eleven Uniswap v4 pools let anyone swap one for the other at a fixed rate.

Ondo’s announcement on 27 October gave a reason the pairing matters. Robinhood’s tokens cannot be minted or redeemed on weekends, so their price can drift. An eligible trader could buy a discounted Robinhood token, swap it for the Ondo token, then bridge and redeem that one, which works on weekends. We read the chain from the pools’ launch to the end of 3 November (UTC): every swap, deposit and bridge mint, plus the Robinhood tokens’ main markets for comparison. The pools held their rate to within a basis point. On the first weekend no one ran the trade, and the discount it needs was not there.


Two issuers, one ratio per stock

The two tokens are not the same instrument. Robinhood Stock Tokens are debt securities of Robinhood Assets (Jersey) Limited, minted and burned only by an authorised participant between Monday 02:00 and Saturday 02:00 CET. Ondo’s tokens are issued by Ondo Global Markets (BVI) Limited and minted and redeemed by eligible users on Ethereum, BNB Chain and Solana, and over the weekend for all eleven paired tickers. Neither is open to US persons.

Each issuer also folds dividends and corporate actions into its own shares-per-token figure, so the pools do not trade at one for one. Each stores a reference rate, in Ondo tokens per Robinhood token:

SPCX, MSTR, CRCL, TSLA1.00000
NVDA0.99906
GOOGL · META0.99774 · 0.99772
AAPL · QQQ0.99720 · 0.99663
SPY0.99232
GME0.98315

Where the numbers can be checked, they are exact. Ondo’s share-multiplier oracle on Ethereum answers for three of these tokens: SPYon, QQQon and TSLAon. For each of those, the pool’s reference equals Robinhood’s multiplier divided by Ondo’s, to six decimal places. For the other eight the oracle returned “asset not found”.

Ondo listed four more tokens on the chain without a Robinhood counterpart. One of them changed a day later: Robinhood minted its first BMNR token on 28 October at 14:05 UTC. By 3 November there was still no StablePair pool for it.


How a StablePair pool holds the rate

The pools run on Uniswap’s StablePair hook, a dynamic-fee hook for two assets meant to hold a known price. Its reference is not an oracle. It is a number stored per pool when the pool is created, and it changes only when an account with the config-manager role calls updateFeeConfig. Around that number the hook sets every swap’s fee:

Inside a ±0.005% bandall buys one price, all sells another
Round trip inside the band1 basis point
Outside, toward the referencedecaying fee, ×0.99 per block
Outside, away from the referenceno fee

All eleven pools use the same settings, and no reference changed through 3 November. You can read any pool’s reference yourself:

bashread a pool’s reference rate
# feeConfig(bytes32 poolId) on the hook: returns k, optimalFeeE6,
# targetMultiplier, referenceSqrtPriceX96. Pool below: NVDA / NVDAon.
curl -s https://rpc.mainnet.chain.robinhood.com -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{
        "to":"0xd061f665d1c4816787fceaa168fa66c59d3abcc0",
        "data":"0xb9629a414c71fa93d5a448afc030cfec54e1779ed1d2498c905569ee817eb5cadcbdc6fb"
      },"latest"]}'
# rate = (referenceSqrtPriceX96 / 2^96)^2 = 0.99906 NVDAon per NVDA

One account set up all eleven

Everything happened on Monday 26 October, in about an hour:

12:27⁠–⁠12:34 UTCOndo tokens bridged in to one address
12:47:52hook deployed, all roles to that address
12:51:41⁠–⁠12:58:14eleven pools initialized
13:00⁠–⁠13:34one deposit per pool, about $517,000

The address, 0x9d9210ea…4c0e4, is an ordinary account, not a contract. It received the bridged Ondo tokens, holds the hook’s admin, pool-initializer and config-manager roles, created every pool and seeded each with roughly equal value of both tokens, about $42,000 to $54,000 per pool. At the end of 3 November the pools held between 87.4% (GOOGLon) and 100.0% (GMEon) of each Ondo token’s supply on the chain.

The hook is an upgradeable proxy, and Uniswap’s hook list records it that way. So the key behind that one address can change any pool’s exchange rate and replace the hook’s code. That says nothing about intent, but anyone providing liquidity or quoting a price off these pools is trusting that key.


The first week, swap by swap

Dollar figures below use each Robinhood token’s last price before Friday’s 4pm close on its busiest USDG pool:

Swaps, all eleven pools232, from 127 senders
Volumeabout $47,800
Same tokens, main v3 USDG poolsabout $99.4 million
Share through the pegged pools0.05%
Swaps within 1 bp of the reference179 of 232

Most swaps executed at the edge of the band, exactly as the design intends. Two pools moved further. In GOOGL, one 17-token trade on 28 October pushed the price 7.1 basis points below the reference, and two trades minutes later pulled it back. On 29 and 30 October a run of one-way trades took it 5.5 basis points below again. While it was out of the band, trades pushing further paid no fee and trades pushing back paid 1 to 1.8 basis points. The pool ended the week 4.1 basis points below.

GME is the week’s largest trade, and it ran the other way from the announcement’s example. At 05:30 UTC on Wednesday 28 October, one address bridged 838.3 GMEon onto the chain. Four minutes later it swapped 837.9 of them for 851.1 of Robinhood’s GME tokens, a $20,600 trade at prices 13.6 basis points worse than the reference. That emptied the pool’s Robinhood side from 940 tokens to 89 and left its price 26.2 basis points from the reference. Only one later trade, of 0.11 tokens, pushed back, so the gap stayed open through the end of the week: a 25-basis-point edge for anyone holding Robinhood GME tokens who had a use for GMEon.


The weekend

Robinhood’s window closed at 01:00 UTC on Saturday 31 October and reopened at 01:00 UTC on Monday 2 November, after Europe had left summer time. That is 48 of the 203 hours we observed. In the pegged pools:

Weekend swaps16 of 232
Robinhood → Ondo token$2,222
…swapped straight back (QQQ)$2,019
Net, mostly one CRCL tradeabout $200
Ondo tokens bridged in or outnone

The announcement’s trade ends with a bridge and a redemption. Not a single Ondo token was minted or burned on Robinhood Chain over the weekend. In fact none was after 09:47 UTC on 28 October.

The likely reason is that the discount never opened. The Robinhood tokens’ busiest USDG markets are Uniswap v3 pools, and the busiest one for each token carried $99.4 million between them in the same week. Over the weekend their volume fell to 3.0% of the week’s total, in 24% of its hours. Excluding trades under $10, whose prices are rounding noise, here is where each token traded relative to its Friday 4pm price:

NVDAavg −0.13% · low −1.13%
METAavg −0.14% · low −0.79%
GMEavg −0.22% · low −0.94%
AAPLavg −0.09% · low −0.49%
TSLA · SPYavg +0.05% · +0.14%
QQQ · CRCLavg +0.54% · +0.53%
GOOGL · SPCXavg +1.06% · +1.79%
MSTRavg +2.29% · high +3.26%

In 8 of the 11, the weekend average sat between Friday’s close and the first hour of Monday’s session: the market pricing weekend news before the open. NVDA, META and GME averaged 0.13% to 0.22% below Friday. That is before the v3 pool’s own fee, the bridge and Ondo’s off-hours spread, which its docs say can be wider. The loop had nothing to capture.


What would make the two tokens diverge

Two limits matter when a real gap does open. The first is capacity. The pools hold almost every Ondo token on the chain, so the trade can only take what a pool holds, roughly $21,000 to $27,000 of Ondo tokens per stock at launch. GME shows what happens next: one trade empties a side and the pool stops correcting.

The second is the stored rate. The hook does not know when either issuer’s shares-per-token figure changes, for example on an ex-dividend date. Until the config manager updates the reference, the pool keeps quoting the old ratio. Because the hook charges nothing to swaps that move the price away from the reference, the pool can be traded to the new ratio for free, and its liquidity providers absorb the difference.

The token pages for both issuers’ contracts on this chain are in our Robinhood Chain token list, and reading the chain directly covers the RPC and explorer used here.


What this does not show

This is one week and one weekend. Dollar values come from on-chain USDG prices, not from the stock market, and there is no on-chain fair value for a stock on a Saturday. We could check the reference rate against both issuers for only three of the eleven pools, because Ondo’s oracle did not answer for the other eight. Those eight are reported as configured. Block times were interpolated between samples taken every 2,500 blocks, which is accurate to about ten seconds. We name addresses, not the people or companies behind them.


Two Tokens, One Stock: Questions People Actually Ask

What is the difference between NVDAon and Robinhood’s NVDA token?

They are issued by different companies under different terms. Robinhood Stock Tokens are debt securities issued by Robinhood Assets (Jersey) Limited, minted and redeemed only by an authorised participant during a weekday window. Ondo Stocks are issued by Ondo Global Markets (BVI) Limited and can be minted and redeemed by eligible users on Ethereum, BNB Chain and Solana, including on weekends for the eleven tickers paired on Robinhood Chain. Neither is offered to US persons.

Can Robinhood stock tokens be redeemed on weekends?

No. Robinhood’s tokenization window runs from Monday 02:00 to Saturday 02:00 CET; outside it, no tokens are minted or burned. The tokens still trade on chain over the weekend, but their supply cannot change until Monday.

Why is the exchange rate between the two tokens not exactly 1?

Each issuer adjusts its own shares-per-token figure for dividends and corporate actions, so one Ondo token and one Robinhood token for the same stock can represent slightly different amounts of it. Each pool stores a reference rate set when it was created: 1.0 for SPCX, MSTR, CRCL and TSLA, and between 0.98315 (GME) and 0.99906 (NVDA) Ondo tokens per Robinhood token for the other seven.

Did Robinhood stock tokens trade at a discount on the weekend of 31 October?

Not by enough to matter. On each token’s busiest USDG pool, excluding trades under $10, weekend prices stayed within 1.13% below and 3.26% above Friday’s 4pm price. In 8 of 11 tokens the weekend average sat between Friday’s close and Monday’s first hour, which is the market pricing weekend news. The other three averaged 0.13% to 0.22% below Friday.

Who sets the StablePair reference price?

Whoever holds the hook’s config-manager role can change any pool’s reference with updateFeeConfig. On Robinhood Chain all three of the hook’s roles, including the right to upgrade its code, were granted to one ordinary account when it was deployed, and no reference changed through 3 November 2026.


The one-line version

Eleven pools pin Ondo and Robinhood tokens for the same stock to a rate one account set and can change. In their first week they carried 0.05% of those tokens’ trading, and the weekend discount they were built to absorb never appeared.

Sources: Ondo’s 27 October announcement, off-hours trading and eligibility docs; Robinhood’s Stock Tokens docs; Uniswap’s StablePair specification at commit fa163e5c and hook-list entry. Pool, swap, deposit, transfer and role events were read from rpc.mainnet.chain.robinhood.com, from the Ondo tokens’ arrival on 26 October to block 105,464,942 (3 November, 23:59:59 UTC). Ondo’s multipliers were read from its oracle on Ethereum.

xroot.devOn-chain research, published in full
𝕏 @xrootdev
← Back to all notes