On Robinhood's event contracts, the crowd is right most of the time. assay is a six-agent desk that finds the few markets where it is predictably wrong, sizes the bet by Kelly, and refuses the rest. Read-only. It never touches funds.
not deployed yetDEPLOYING SOONSix agents scoring a batch of markets, then a paper book. Every row is either read from the market or produced by an agent you can open and read. Nothing here places an order: there is no wallet in the codebase and no --live flag to find.
| market | price | assay | edge | score | verdict |
|---|

One documented inefficiency, corrected in the open. Across a century of betting and prediction markets, longshots are overbet and favorites underbet. Ilsa bends the crowd price back in logit space by a single slope, and prints how far it moved on every card.
k )Each agent does one job and hands its output to the next. Not chatbots passing English around. Click one to read what it actually does.
500 seeded runs, 120 markets each, at the default rules. The offline simulator bakes the target bias into its ground truth, so this measures whether the strategy captures a bias that is actually there, not whether that bias exists in the wild. Labelled simulated on purpose.
The spread is the honest part. A thin edge over a dozen bets is high variance: a third of runs lose even when the edge is real and known. Any version of this that shows a smooth line going up is lying to you.
Bram refuses a proposal until it clears every rule below, and names the one that stopped it. That is the whole design: assay is a sizing-and-refusal engine with an estimate bolted on the front, not an AI that presses BUY.
Robinhood gave everyone the buy button, then event contracts: prediction markets a retail account can actually reach. Robinhood Chain (id 4663) is an Arbitrum Orbit L2 that settles to Ethereum and produces about ten blocks a second. Everything in this row is read from its public RPC in your browser as you look at it.
assay is independent of Robinhood and uses none of its marks. The desk reads public endpoints and nothing else: it holds no key, signs nothing, and cannot spend. If the RPC is unreachable these tiles fall back to a dash rather than a number the desk did not read.
--live flag, because the executor is deliberately left out.