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.pyfails 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.
- Gap desk, bot, site, this repo -- shipped
- Execution through Minara, one tap on a call, your account signs
- Squeeze meter, full: every stock-paired pool on Robinhood Chain
- The desk pays for itself, on chain, and the people who back it early get the faster board
- 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.
Comments