NYSE

New York Sleepless Exchange. A gap desk for every Robinhood Stock Token, running while the real NYSE is closed.

nyse.now · @nysedesk_bot · @slash1sol

What it does

The real NYSE rings the bell at 4PM. Robinhood Stock Tokens keep trading all night in thin pools on Robinhood Chain, and they drift away from the real share price. The oracle is frozen. The pool is not. That distance is the gap.

The desk reads every Stock Token pool on Robinhood Chain, reads the real bid/ask of the same share from Robinhood's own feed, and computes

gap = pool / oracle - 1

Above the line it publishes a call with the contract and both legs. Then it waits for the gap to close and writes the result next to the call. Hit rate, misses, time to close: the scorecard is the product. A call without a result is a tweet.

14:07:11  diff     GME pool 29.54 · oracle 29.15 · gap +1.32% · held 0m
14:07:11  judge    GME gap +1.32% above line 1.0%, depth $694K -> CALL
14:07:11  call     GME · short the gap · short GME pool @29.54 / long GME-PERP @29.15 · stop gap 2.65% · clock started
15:48:31  result   GME gap closed after 101m · opened +1.32% · closed +0.31% · HIT

Why the gap exists, and why it closes

Robinhood mints and burns Stock Tokens at the real share price, but only inside the tokenization window (Monday 02:00 to Saturday 02:00 CET). Outside it the pool is on its own. Stock-paired memecoins (MEME/AMC, BONER/HIMS, AI/NVDA) lock the Stock Token inside meme liquidity, the free float goes thin, and any buyer moves the pool above the oracle. It comes back when the window opens or when someone arbs it. The desk measures both: the gap, and the squeeze that creates it.

Run it

git clone https://github.com/slash1sol1/nyse && cd nyse
pip install -r requirements.txt
cp .env.example .env            # add TELEGRAM_TOKEN, optionally MINARA_API_KEY
python desk.py                  # the loop: tape -> oracle -> diff -> judge -> call / result
python bot.py                   # the same desk in Telegram
python desk.py --once           # one pass, prints the board, exits
pytest                          # 13 tests, including the one that proves it cannot sign

Nothing to fill in by hand. On start the desk pulls every Stock Token address from api.robinhood.com/rhj/assets, reads pool prices and depth from GeckoTerminal, and reads the real bid/ask from api.robinhood.com/rhj/prices/{symbol}. No keys anywhere. MODE=demo runs an offline tape for screenshots and tests; every demo number is labelled demo.

Layers

layer what where
Gap desk pool vs oracle on 24 Stock Tokens, calls above the line, results written back desk.py, nyse/gap.py
Squeeze meter share of each Stock Token's supply locked in stock-paired meme pools nyse/squeeze.py
Night shift session clock, mint window, wider line after the bell, morning receipt nyse/session.py
Bot /board /gap NVDA /watch 0x… /squeeze /night /top bot.py
Site reads data/board.json, live board, scorecard, web terminal nyse.now

Scoring

  • Line: 1.0% in the regular session, 1.5% while the real NYSE is closed. Fills are worse at 3AM.
  • Call opens on the first cross of the line with pool depth above $50K in the top 2%.
  • Hit: gap back inside 0.5% before the stop.
  • Miss: gap widens past 2x entry, or holds for 8 hours.
  • Stops are published with the call, not after.

Data

  • Addresses: api.robinhood.com/rhj/assets, Robinhood's own registry of Stock Tokens on chain 4663, with the corporate-action multiplier.
  • Pools: GeckoTerminal public API, network robinhood: price in the deepest pool, reserve as depth. DexScreener does not index Robinhood pools properly. Direct on-chain reads (nyse/chain.py) use four methods only: eth_call, eth_blockNumber, eth_getLogs, eth_getCode. tests/test_readonly.py fails if anyone adds a signing call.
  • Real price: api.robinhood.com/rhj/prices/{symbol}, the raw bid/ask of the underlying share, mid-point, multiplier applied. Minara Agent API takes over when a key is set; Hyperliquid public API is the fallback.
  • Squeeze: pool reserves against total supply from the mint and burn log.

What it cannot do

Sign. Hold. Move money. Predict. It measures a gap, states an opinion about whether it comes back, and keeps the record of how often it did.

The detector is open. The execution is yours.

Roadmap

An order, not a calendar. See nyse.now/roadmap.

  1. Gap desk, bot, site, this repo -- shipped
  2. Execution through Minara, one tap on a call, your account signs
  3. Squeeze meter, full: every stock-paired pool on Robinhood Chain
  4. The desk pays for itself, on chain, and the people who back it early get the faster board
  5. The agent's own X account: it posts, we don't

Never: custody, signing, or a wallet inside the bot.


Built by @slash1sol with GPT-6 Astra over three weeks inside the Minara stack. MIT.