Inspiration
When a Fed official speaks, billions of dollars move on their words, and prediction markets like Kalshi and Polymarket turn those words into live odds on the next rate decision. But the same sentence means different things from different people: a dove saying "let's cut" is background noise, while a hawk saying it is news. We wanted a tool that measures both halves: how surprising a speech was for that speaker, and whether the markets actually reacted.
What it does
Tradio reads a Fed speech, scores every paragraph from dovish to hawkish, and compares it with that speaker's own past speeches to get a surprise score (a z-score). It then replays the real minute-by-minute Kalshi prices and trades around the moment the text was released and gives each market an honest verdict: reacted (and how fast), no reaction expected, or "can't tell" when the market was too thin to judge.
Our demo compares Michelle Bowman on June 23, 2025 (the Fed's most hawkish governor backing a July cut, z = -3.5; the chance of a July cut rose from 14.5% to about 22% within minutes) with Christopher Waller on July 17, 2025 (a dove saying the same thing, also a big surprise against his own history, but the market barely moved because it was already priced in). We also replay Kevin Warsh at Jackson Hole in 2026.
Around that core:
- An Insights tab runs the same pipeline across 206 Fed speeches in Snowflake: active Kalshi contracts reacted 30.5% of the time after a big surprise versus 9.3% after a small one.
- A Live tab listens to a speech in real time (ElevenLabs speech-to-text), scores it with Gemini, and watches Kalshi's next rate-decision contracts as it happens. A practice mode replays a past speech as if it were live.
- A simulated $100,000 account shows what a rule-based bot, built from the other speeches, would have done. It made $277 on one simulated trade, which illustrates the rules and is not a track record.
- The core result files are fingerprinted and anchored on Solana so nobody can quietly edit them afterwards.
It is live at https://tradio.gay
How we built it
- Scoring: Gemini scores each policy-outlook paragraph with a fixed rubric. We built a baseline for each speaker from their past speeches, and the z-score is the distance from that baseline.
- Market data: Kalshi's public historical endpoints give 1-minute candles and individual trades. Polymarket is shown as indicative only.
- Reaction analytics: an alarm when the price leaves its pre-speech range, confirmed by a real trade, with timing for when half and 90% of the move happened. Thin markets are classed as "can't tell".
- Snowflake: six tables (speeches, reactions, paragraphs, quotes, trades, model predictions) and SQL that produces the Insights panel.
- Solana: a SHA-256 fingerprint of 418 result files, recorded in a devnet memo transaction, with a command that re-checks the files against it.
- ElevenLabs: Scribe v2 Realtime transcribes live audio for the Live tab.
- The page: plain HTML, JavaScript and CSS reading precomputed data files, so the demo works fully offline. It is hosted as a static site on Porkbun.
- Team: four of us split market data, reaction analytics, surprise scoring and the interface.
Challenges we ran into
- Polymarket history was unreliable. The same contract returned contradictory values depending on the query window, so we label it indicative and never use it for timing claims.
- Our own prediction partly failed. We expected Waller's speech to be a non-event, but the text scored as a big surprise. The answer was that the market had already heard it, so we changed the story instead of hiding the result.
- Thin markets. Some contracts barely trade. Calling them "slow" would be wrong, so we built the "can't tell" verdict.
- Speech text arrives all at once. The prepared remarks were released together, so we never animate or claim that a single sentence moved the price.
- Realistic trade sizes. Only 151 contracts traded in the bot's entry minute, so we capped the bot's size by the volume that actually traded.
- Connecting Snowflake. Token and browser logins failed; key-pair login worked.
Accomplishments that we're proud of
- A full replay of three real events, with real prices, that runs end to end with no internet.
- A result that holds up beyond two speeches: a pattern across 206 speeches, labelled as a pattern and not proof of cause.
- A tool that says "can't tell" and shows its own failures instead of overselling.
- Results that can be independently re-checked against a fingerprint on Solana.
- Shipping a live site on our own domain.
What we learned
- Being surprising for the speaker is not the same as being surprising to the market, and the gap between those is the interesting part.
- Market data needs careful handling: quote timestamps, thin liquidity and unreliable history all change the conclusion.
- Honest limits make a project more credible, not less.
- Observational statistics show a pattern, and we should say so out loud.
What's next for Tradio
- Run Live on a real Fed speech and save it as another replay.
- Add more speakers and events, and sharpen each speaker's baseline.
- Improve the prediction model until it beats a simple base rate by a clear margin; today it does not yet.
- Include the bot's backtest files in the Solana fingerprint.
- Load the minute-level market data into Tiger Data for time-series queries.
- Send alerts when a live speech crosses the surprise threshold.
Built With
- elevenlabs
- finance
- gemini
- money
- snowflake
Log in or sign up for Devpost to join the conversation.