How Quant Desk works
Robinhood Chain carries Chainlink price feeds for six tokenized stocks and for ETH. A feed is a contract that remembers every round it ever published. Quant Desk reads those rounds and turns them into backtests you can run in the browser.
What it is
A lab, not a fund. You pick a basket of stocks, a weighting rule, a rebalance cadence and a window, and the page computes how that basket would have moved against ETH and SPY, the stock $QDESK trades in, over the exact days the feeds recorded. There is no wallet, no deposit and no execution: the only thing on chain is the price history and the $QDESK coin.
The feeds
Reading history
latestRoundData() gives the current round id. Round ids carry a phase in the top 64 bits and a counter in the bottom 64; the counter is walked back one at a time with getRoundData(id), one hundred ids per multicall, until the window is covered or the phase runs out. Rounds with a non-positive answer are skipped. Verified on chain: NVDA has hundreds of rounds in the current phase covering the last two months, TSLA more.
GET /api/history?symbol=NVDA&days=60
{ symbol, feed, decimals, phase, points: [[unixSeconds, price], ...], rounds, from, to }
The server keeps each answer in Redis for an hour. History does not change, it only grows, so an hour is more than enough.
Rounds to days
Feeds publish on deviation and heartbeat, not on a clock, so rounds are irregular. Each UTC day takes the last round published that day as its close. A day with no round keeps the previous close. Stock feeds are quiet on weekends, so weekend returns for stocks are zero while ETH keeps moving; the correlation table shows the effect.
Strategies
Between rebalances the units are fixed, so the weights drift with prices. ETH and SPY are shown as plain buy and hold over the same days.
Statistics
Limits
- No fees, slippage, borrowing, dividends or splits.
- The window is bounded by what the feeds hold in their current phase, about two to three months.
- The tokens on the chain track the feeds, not an exchange order book.
- A backtest describes the past. It is not a forecast and not advice.
What runs where
The browser fetches one JSON per feed from the site's own API and does all the arithmetic locally. The API reads the chain through a private endpoint, at most a few dozen multicalls per feed per hour, and caches the result. Nothing polls the chain in the background.
$QDESK / SPY
Every number in the lab is read against the S&P 500, so the coin is too. Pons lets a coin launch paired with a stock token instead of ETH, and $QDESK launches paired with SPY: you buy it with SPY, the bonding curve holds SPY, and when the curve fills the pool it graduates into is $QDESK/SPY.
That makes the $QDESK chart a relative one. A coin quoted in ETH moves with ETH; a coin quoted in SPY moves only when it runs ahead of the index or falls behind it, which is the one question a backtest here answers.
Why SPY and not a single stock: the lab benchmarks against SPY already, SPY has the deepest stock pool on the chain, and an index does not tie the coin to one company's earnings. QQQ and NVDA were accepted on the same fork (11.146 QQQ and 41.6 NVDA to graduate). The pair is one line in config.js; after launch the site reads the real pair and threshold from Pons instead.
$QDESK
A Pons coin on Robinhood Chain, quoted in SPY. It has no rights over the lab and the lab has no dependence on it.