Nansen tells you what a labelled cohort did. Assay measured what that was worth: 12,781 Nansen API calls, 20 tokens, 18 months, six cohorts, three horizons, every claim paired with a drift-matched control, and the whole plan sealed before the first call. None of the eighteen cleared the bar. The same instrument finds a planted edge when there is one; the other page shows it doing so.
Every figure below is the engine's own output over Nansen's historical token flow summary:
10,798 token-days of daily calls for the eighteen verdicts, and the weekly, monthly and whole-range calls for the
window audit, made on 2026-09-19 against a plan sealed on 2026-09-16, scored once per cost and rendered verbatim.
The responses stay private under Nansen's redistribution terms; ledger/study/receipts.jsonl carries
each ledger row's request id and a SHA-256 of its body, so the run can be audited without republishing the data.
Powered by Nansen API.
“Smart money is accumulating SOL.”
not right, not wrongA true statement with no number in it. An agent handed this cannot size a position on it, so it does the only thing left: it treats confidence as edge. Five sources light up, it reads five confirmations, and it takes its largest position on its least independent information.
The object assay_prior hands an
agent for the selected pair, assembled from the same verdict record the server reads. It drops
into a Kelly or Bayesian sizer with no unit surgery, and carries the two numbers that keep the
sizer honest.
| cohort | planted excess | engine measured | miss | p | verdict |
|---|
| segment | weekly windows | inclusive sum within 5% | rank correlation | closest rebuild |
|---|
git clone https://github.com/gryps-finance/assay, then node src/cli.mjs leaderboard
prints these eighteen rows from ledger/study, and node src/cli.mjs audit prints the
window audit. Zero dependencies, Node 18+.
node src/cli.mjs now joins yesterday's Nansen flows to these priors and says trade, hold, skip or
refuse for each. node src/mcp-server.mjs serves the same to Claude or any MCP client, with live
Hyperliquid positioning beside it.
An agent handed a flow signal treats confidence as edge. On these flows, an agent that trades every signal expects to lose money at every cost from 0 to 200 bps; one that checks the prior first declines them all and loses nothing.
node test/make-fixtures.mjs fixtures then node src/run-tournament.mjs --replay fixtures/.
The generator is seeded and byte-for-byte deterministic, so it ships instead of the 35 MB it produces.
A result nobody else can reproduce is a claim, not a finding.
node src/mcp-server.mjs serves four MCP tools, zero dependencies. It refuses to hand
back a signal for a pair it has never assayed, because an agent given an uncalibrated number treats
confidence as edge.
Nansen's labels are the moat. What has never been published is what they are worth in basis points. The priced-out list is a product roadmap, because every line on it converts the moment execution gets cheaper.