Skip to content

Tokenized-equity arbitrage · Robinhood Chain

Discover the spread.Verify the route.

Explore tokenized-equity pools, simulate arbitrage routes, and execute supported opportunities with transparent costs and on-chain receipts.

Robinhood Chain · checkingreading network status…reading pools…executor … @RonStocksRH

01 · Three ribbons

Every route is folded from three parts.

A settlement asset, a pool to buy in, a pool to sell in. The R is folded from the same three ribbons — nothing more, nothing hidden.

02 · Two compatible pools

Two pools, one contract.

The bowl and the leg become paths: two verified pools that price the exact same token contract. A matching ticker is not enough; wrapped or differently issued look-alikes are excluded.

Readingreading the verified pool set…

Pool A
Pool A
Pool B
Pool B
Settles in
USDG

03 · Simulation

The paths converge through a simulation.

Each leg is quoted on-chain at one block, every cost is itemised, and the exact executor call is simulated from your address. Indicative spread, executable quote and simulated net stay separate numbers.

Scanningreading pool state…

04 · Receipt

It resolves into a receipt.

Success exists only after a receipt with status success. The result is decoded from the CycleExecuted event — never the quote — and a reverted route still costs gas, which is said out loud.

Readingreading the verified pool set…

01Engine walkthrough

Discover, inspect, simulate, review, sign, verify.

Six stages, each checking the one before it. The boxes carry the two depth-verified pools of the widest-spread asset at the latest block: identifiers, never a price. Nothing later in the flow is enabled by anything earlier being assumed.
  1. 01
    USDG
    settlement token
  2. 02
    Pool A
    verified pool A
  3. 03
    Pool B
    verified pool B
  4. 04
    Costs
    itemised at one block
  5. 05
    Simulation
    exact executor call
  6. 06
    Receipt
    executor not deployed

reading the verified pool set…

Open TerminalOne transaction · atomic · executor not deployed, preview simulation only
  1. 01 · Discover

    Discover verified pools

    Pools come from the canonical Uniswap V2 and V3 factories for issuer-verified Stock Tokens, USDG and WETH — read at one block, depth-probed with a real quote.

  2. 02 · Inspect

    Inspect the same contract

    Prices are compared for the exact same token contract on the same chain. A matching ticker proves nothing; wrapped or differently issued look-alikes are excluded.

  3. 03 · Simulate

    Simulate the full route

    Each leg is quoted on-chain, every cost is itemised — fees, impact, gas, minimum return — and the exact executor call is simulated from your address.

  4. 04 · Review

    Review before signing

    Network, input, exact allowance, executor address, route, minimum acceptable return, slippage, deadline and gas are laid out before a wallet opens.

  5. 05 · Sign

    Sign the exact bytes

    The wallet receives the calldata that was simulated twice moments before. Approvals are exact-amount. RonStocks never signs for you.

  6. 06 · Verify

    Verify from the receipt

    Success exists only after a receipt with status success; the result is decoded from the CycleExecuted event, never from the quote.

Token

$RONS

The contract address is published here, by /api/token and on @RonStocksRH only, after an on-chain check on Robinhood Chain. Until it appears in all three places there is no official $RONS.

RonStocks works without it. Scanning, quoting, simulation and execution never touch $RONS, and no fee, discount or reward depends on holding it. Once live, the facts below are read from the chain at a stated block; nothing is estimated in their place.

Reading $RONS from /api/token…

What $RONS is not used for: it does not unlock features, discount fees, pay rewards or dividends, fund a treasury or buybacks, or carry governance, and nothing in RonStocks reads a $RONS balance. The only facts this site publishes about it are the ones read from the chain above, at a stated block. Nothing here is a promise of value or return.

02Market preview

The market, measured at one block.

The scanner reads verified pools at one block, depth-probes them with a real quote and measures the spread between two pools of the same token contract. A raw spread is a signal, never an executable return — and when nothing is priced in two pools, the frame says so.
  • · Indicative price, executable quote, gross spread and estimated net are separate numbers, and are labelled as such.
  • · Missing data reads as unavailable, never as zero.
  • · Everything here works without a wallet.
Open Terminal
OpportunitiesPoolsWatchlistActivityStatus

The preview reads the chain once it scrolls into view.

03Costs and simulation

Every cost, itemised.

Pool fees, price impact, gas and the protocol fee all come before anything is called a result, and the on-chain minimum is a gross condition that cannot see the gas you pay. Each line says how its number is obtained; the last column shows it for the closest cycle of the latest scan when there is one.
Cost linesreads on scroll
LineHow it is obtainedLatest scan
Raw price spreadProduct of spot rates after pool fees, minus one. Ranking only — never shown as profit.unavailable
Quoted route outputQuoterV2 hop by hop (V2 from same-block reserves). Pool fees and price impact are inside it.unavailable
DEX feesInside the quoted output. Never subtracted a second time.unavailable
Flash-liquidity feeWallet-funded: none. Flash-funded: the first pool is repaid in the settlement token; its swap fee, already in the quote, is the only borrowing cost.unavailable
Protocol feeOf a positive surplus only. Immutable per deployment, capped at 10%; the live value is read from the deployed contract.0% · proposed (executor not deployed)
Gaseth_estimateGas of the actual call in the workspace (a forge-measured model in the scan), times the current gas price. Paid in ETH by your wallet.unavailable
Gas in the settlement tokenOnly from a credible same-block rate: the deepest depth-verified WETH/USDG pool (≥ 10,000 USDG of depth), vetoed if fresh Chainlink data disagrees by more than 2%. Otherwise gas stays in ETH and the net result is marked incomplete.unavailable
Estimated net resultQuoted surplus − protocol fee − gas, when gas could be converted. An estimate at one block.unavailable
Minimum acceptable outcomemax(floor, estimate × (1 − tolerance)), enforced by the contract in the settlement token. The contract cannot see the ETH you pay for gas; the floor defaults to the gas estimate.unavailable

Contract-enforced surplus is denominated in the settlement token and does not account for wallet-paid gas. The interface shows both. Full accounting rules →

04Execution transparency

One contract. Nothing hidden.

Execution is one small, auditable contract: the settlement asset enters and leaves inside a single transaction and never rests anywhere in between. No upgradeability, no arbitrary calls — it plugs into the canonical Uniswap factories and refuses everything it cannot verify itself. Each point below is a property of the source, not a plan.
RonStocksExecutor 1.1.0
  • Atomic cycle over 2–4 canonical Uniswap V2 / V3 pools on one chain
  • Wallet-funded executeFunded, or flash-funded execute
  • Profit is the measured balance increase, never a number a pool reports
  • No arbitrary call targets, no caller-supplied calldata
Guards
  • Deadline and minimum profit enforced by the contract
  • The principal must come back in full — PrincipalNotRecovered otherwise
  • Callbacks only from the one pool expected next, and only once
  • Fee-on-transfer and rebasing behaviour rejected at run time
Fees and roles
  • Protocol fee immutable per deployment, capped at 10% of a positive profit
  • Two-step ownership, a pause switch, a fee recipient that withdraws accrued fees
  • Never holds a caller’s tokens between transactions, never approves anyone
  • A losing cycle reverts: gas can be lost, principal cannot
Verification
  • Bytecode, VERSION, factories and fee cap re-checked on-chain before execution is enabled
  • Exact-amount approvals only; nothing is signed on connect
  • Success exists only after the receipt is decoded
  • Not independently audited
Checking…Reading the executor status.157 Foundry tests · not independently auditedExecutor documentation →

05Verified infrastructure

Verify, don't assume.

Every address comes from an official registry with its provenance recorded and is re-checked on-chain before an integration is enabled. Local, testnet and mainnet are never mixed; a missing dependency disables only the feature that needs it, with the reason shown.

Capabilities · from the live status read

Pool discoveryReading the network and executor status.
Checking…
Executable quotesReading the network and executor status.
Checking…
Transaction simulationReading the network and executor status.
Checking…
Atomic executionReading the network and executor status.
Checking…
Receipt-based activityReading the network and executor status.
Checking…
Full network status →
Network and integration registryChecking
IntegrationStatusSource · verification
Robinhood Chaincheckinghttps://docs.robinhood.com/chain/connecting · live eth_chainId
Uniswap V2 pairsSupported0x8bcE…937f · canonical factory
Uniswap V3 poolsSupported0x1f7d…2EfA · canonical factory · QuoterV2
Stock Token registryVerified195 issuer-listed tokens, each an ERC-1967 beacon proxy of the issuer beacon · snapshot block 71,231,041
Chainlink ETH/USD · USDG/USDCross-check only0x78F3…d3A9 · 0x61B7…9aD2 · vetoes the gas rate, never prices a trade
RonStocksExecutorChecking…no address configured · Reading the network and executor status.

Uniswap v4 pools are listed as an unsupported venue and never routed; the testnet (46630) has no verified DEX deployment and is read-only. Integration record →

// Verify a pool yourself — the same reads the scanner performs (viem)
const pool = await client.readContract({
  address: '0x1f7d7550B1b028f7571E69A784071F0205FD2EfA', // Uniswap V3 factory · Robinhood Chain
  abi: v3FactoryAbi, functionName: 'getPool', args: [STOCK_TOKEN, USDG, 3000],
}) // canonical only if the factory returns the very address you were given

const { result } = await client.simulateContract({
  address: '0x33e885eD0Ec9bF04EcfB19341582aADCb4c8A9E7', // QuoterV2
  abi: quoterV2Abi, functionName: 'quoteExactInputSingle',
  args: [{ tokenIn: USDG, tokenOut: STOCK_TOKEN, amountIn: 1_000_000n, fee: 3000, sqrtPriceLimitX96: 0n }],
}) // result[0] = executable amountOut at this block — pool fee and impact inside

// raw spread = (max − min) / min of spot prices of the SAME token contract: a signal, not a return

Discover the spread.
Verify the route.

Open the terminal to measure verified spreads and simulate complete routes before anything is signed. No wallet is needed until you decide to.

Executor · … · no simulated data