I didn’t have much time to devote to Toolforest this week, but in the spirit of trying to ship new functionality on a weekly cadence, I went looking for something small but still meaningful.
I found that in my inbox. Gemini has been sending me a steady stream of promotional emails about its prediction markets, offering fee credits and bonuses to come try it out. I already had a Gemini account, two prediction market toolkits, and a market data service running behind them. The path was already worn. Somewhere between the fourth and fifth email it stopped being an advertisement and started being an idea, which I believe is the entire point of the fourth and fifth email.
So I built it, eleven tools in all.
I neglected to look at Gemini volumes
At no stage of deciding to do this did I check how much anyone was trading on Gemini. Here are four markets that all three venues list, which is rarer than it sounds.
As the chart shows, Kalshi runs roughly a thousand times Gemini’s volume across the major markets. The exception is the AI question, where the gap is a factor of twelve.
Then there is the US House. Gemini’s deepest book of all time, 227,116 contracts since it opened, traded just six contracts yesterday.
Polymarket would rival Kalshi’s numbers, but it’s omitted here because it reports dollar volume instead of contracts. There’s no exact comparison without tracking VWAP to convert between them, which I may build out in the future. In the meantime, I’ve updated the toolkits so every volume field declares its units, ensuring nothing quietly adds dollars to contracts.
It is also mostly a sportsbook. Of roughly 4,600 markets I have stored, 3,533 are sports. Politics gets 490, crypto 176, economics 101.
Eight months old
In fairness to Gemini, and to my inbox, this is a very new venue. Prediction markets opened there on December 15, 2025, four days after the CFTC granted its subsidiary a Designated Contract Market licence. Since then it reports more than 100 million contracts traded across upwards of 20,000 traders, and prediction markets revenue of $0.4 million in its first full quarter. Kalshi did $4.54 billion of volume in November alone.
Eight months is not very long to build a book. And I still think a third quote is worth having, for two reasons that survive the volume numbers.
The first is that a third opinion is useful even when it is a thin one, and sometimes especially then. The second is distribution. Gemini has an existing exchange full of people, some of whom are never going to open a Polymarket account, and if event contracts become a normal thing that normal people trade, it will be because they appeared inside an app somebody already had.
Where do the three actually meet?
Not in many places. Polymarket is where long-horizon geopolitics gets priced, with $39.7 million sitting on whether China invades Taiwan by the end of 2026. Kalshi is the regulated one. Gemini is mostly sports. The September Fed decision is one of the few questions all three carry in the same five buckets.
They agree almost exactly on the two outcomes that matter and part company in the tails, which is where thin books usually give themselves away. The missing Kalshi bars are neither zeros nor errors. Kalshi’s books on the two extreme outcomes have an ask and no bid, so there is no midpoint to plot. A bar chart cannot say that out loud, which is why I am saying it here.
The better comparison turned out to be which lab has the best AI model at the end of 2026, which Gemini and Polymarket both run. Gemini prices Claude at 0.675. Polymarket prices Anthropic at 0.665. One cent apart.
Sum each venue’s outcomes, though, and Polymarket’s book adds to 1.047 while Gemini’s adds to 1.025. The small venue looks tighter.
A spread that means nothing, until it does
Every contract in that market came back with a spread of exactly one cent. The 0.675 favourite and the 0.015 no-hoper, same spread. So did every contract in the Fed market. That is not a book responding to liquidity. That is a market maker sitting on every line at one tick, and the tight sum is a quoting convention rather than a verdict.
I wrote this down as a tick floor, which was wrong. Gemini’s golf markets have spreads of one, two, three and four cents, with Scheffler quoted 0.62 bid against 0.66 ask in the FedEx St. Jude top ten. The field does respond to liquidity. It happens that a maker was quoting every line in both markets I picked. The golf markets were live, with play underway, and a maker facing people who could see the broadcast quoted wider or not at all. That is where the real book shows through.
The correct version is duller and more useful. A one-cent spread on Gemini tells you a maker is present. It does not tell you the market is liquid.
The last trade is not the price
On thin contracts, the last executed trade can sit a long way from the live book. Hideki Matsuyama’s last trade in the golf outright was 0.01 against a 0.06 bid and a 0.07 ask. On the Fed event, a 25 basis point hike last traded at 0.24 while the book stood 0.27 to 0.28.
Charting last trade on this venue produces noise with a plausible shape, which is the worst kind. The toolkit now leads with midpoint wherever a book exists and demotes last trade to a secondary field. On Polymarket and Kalshi that distinction was academic. Here it is the whole ballgame.
There is a second case that looks identical and is not. Some contracts have no bid at all, so spread and midpoint are correctly null while a buy and sell value still appear, both equal to the last trade. The temptation is to fill the nulls from those numbers. The right move is the opposite: mark the buy and sell values as indicative and leave the null alone. A null meaning “no two-sided market exists” is doing more work than a number that looks like a quote and is not.
Charts that escape the chat window
I built the image widget last month for satellite imagery, but it also works well for charts.
Prediction market data goes into Google Sheets, Sheets builds the chart, another tool exports it as a hosted image, and the widget renders it in the conversation. Four toolkits, none of which know the others exist, with a spreadsheet ID and an image URL passing between them.
Exported chart URLs also expire after a day, which is fine in a conversation and useless in a blog post, so the images here are static copies. The pipeline is live. These particular pictures are taxidermy.
Three venues now, and they still disagree. That is rather the point of asking three.
As always, ideas and suggestions are welcome at gerrit@toolforest.io.