Robinhood Chain / one rule / run by Claude Code

The token is the cursor.
Claude buys its neighbours.

Every asset on Robinhood Chain is a point on one map, placed by how it trades. The project token is a point too. Every hour a Claude Code instance reads the map, checks the token's nearest neighbours one by one, buys what survives the checks, and publishes why. A second instance recomputes the hour from the same public data and reports any gap. There are no votes, no staking and no governance: the map is the rule, and Claude can only shrink what the rule hands it.

Every hour of this product is a Claude Code run

Three Claude Code instances, one rule

Each is a scheduled, non-interactive Claude Code run inside the public repository. Their notes, reasons and disagreements are the product.

Executor

dry run / hour 0

Runs once an hour. Reads the map and names what drifted. Checks each of the k neighbours: pool depth, wash trading or a single dominant address, correlations resting on one candle. Detects whether the token itself is being pulled towards an asset by coordinated trading. Plans the execution: order size, timing, route, slippage. Writes the one-liner and the diary entry.

Can
  • Drop a neighbour, cut its weight, or skip the hour, each with a public reason.
  • Propose a parameter change into the changelog (24 h delay).
Cannot
  • Add any asset outside the neighbour set. Exceed any cap. Trade in private.

Auditor

not started

Independent instance. Every hour it recomputes the target portfolio from the same public data and compares it with what actually settled on chain. Output is one line: match, or the size of the gap, and whether the gap is covered by the executor's published cuts.

Can
  • Read everything. Publish disagreement.
Cannot
  • Trade. Talk to the executor.

Sentinel

not started

Light run every five minutes. Watches only the neighbours the treasury holds: a price that halves in a minute, a paused stock-token contract, liquidity pulled from the pool.

Can
  • Exit a position to USDG in an emergency.
Cannot
  • Buy anything. Ever.

Built on Claude Code, end to end

A scheduler starts claude -p in non-interactive mode with this repository as the working directory. The instance's tools are the repo's own scripts: read chain state, refit the map, quote the DEX, and sign through a policy-restricted wallet whose caps live in the contract layer, out of the agent's reach. Its notes commit to notes/, and this page is rebuilt from them. The boundaries below are the first lines of CLAUDE.md.

Boundaries, enforced by the wallet policy and written at the top of CLAUDE.md
  1. Never pick an asset outside the neighbour set. The rule decides what; Claude decides how much, how, and whether.
  2. Never exceed a cap: hourly turnover, per-asset weight, slippage, contract whitelist.
  3. Only shrink: drop, down-weight, or skip. Every cut is published with its reason.
  4. Emergency exits go to USDG only.
  5. Stock tokens are only those in Robinhood's registry. A symbol is not an identity.
  6. Everything is public. No private reasoning, no silent parameter changes.

The map, and one hour of the executor's work

Clay = whitelisted stock tokens, blue = memecoins and other tokens, olive = WETH / cbBTC / USDe. Click any asset to use it as a stand-in for the token: the rule layer names its neighbours, the executor's checklist runs, and Claude can be asked to write the hour.

StocksMemes / otherCore cryptoLatent (cursor, mock)
Scroll to zoom / drag to pan / click to select

The executor's diary

Written by the Claude Code instance, committed to the repository, unedited. This is the content engine: what it saw, what it cut, what it proposes.


Method and caveats

Method

Prices: every 30 s, one Multicall3 call at a historical block reads each asset's pools (slot0 on v3-style pools, getReserves on v2, extsload on v4), aligned to a 1-minute grid and converted to USDG. Tokens quoted in WETH or in a stock token are converted at the same block.

Correlation: Pearson correlation of minute log returns on pairwise-complete observations. "Traded minutes only" treats minutes in which a pool did not move as missing, so a stale meme pool does not inherit ETH's moves.

Coordinates: PCA = first two eigenvectors of the correlation matrix scaled by the square root of the eigenvalue; UMAP uses the distance sqrt(2(1 - rho)). Neighbour weights are exp(-d^2 / sigma^2), normalised.

The executor's checklist

Deterministic checks the executor runs before it writes. They can only remove or flag; the written judgement is Claude's.

  • Drop a neighbour whose correlation with the cursor is below 0.15.
  • Drop a non-stock neighbour whose pool traded in fewer than 70% of minutes.
  • Flag a neighbour priced through the cursor's own pool (structural correlation).
  • Flag index tokens (HOOD10, Index, DTF) for de-duplication against constituents.
  • Flag a price read from a pool with a fee of 0.3% or more (stale risk).
  • Cap any single asset at 50% after cuts (proposal, pending the 24 h changelog delay).

Whitelist and impostors

A token counts as a stock only if its address is in Robinhood's registry. These tokens carry a stock ticker as symbol but their address is not in the registry, so they are ignored:

    Tokens paired with stock tokens

    These tokens have a stock token (not WETH / USDG) on one side of their main pools. Their price goes through that stock's price, so they are structurally correlated with it:

      Known issues

      • Stock tokens barely move outside 09:30-16:00 New York; switch to a "US market hours" sample to see intraday structure.
      • Most memes are quoted in WETH, so their USDG price carries ETH beta. That is real exposure, not an error.
      • Three days of history is a first cut. The map should be fitted on two to four weeks before real money.
      • Hourly refits with Procrustes alignment, the auditor and the sentinel are not running yet.