In early July, Kalshi debunked a research piece from the Roosevelt Institute which had a conclusion about “ordinary” users on Kalshi that was derived from a severe methodological error. Despite this line of data analysis being publicly debunked, major media outlets continue to parrot these stories, including a recent Bloomberg piece claiming “retail” lost $294 million on Kalshi. 

To be abundantly clear: “Retail” or “casual” users are not something that is identifiable on Kalshi, even to Kalshi itself. Insinuations otherwise are false. 

These insinuations are fantastic for driving clicks and ad revenue to news publishers, perhaps why they persist after being thoroughly debunked, but they do not represent reality. 

They are borne from a common misconception: that “taker” or “requester” volume is equivalent to “retail/casual” users, and that “maker” or “quoter” volume is equivalent to “professional” users. This is a severe misunderstanding of how the taxonomy works:

Default/GTC/GTT limit orders can rest if not immediately filled. If later filled, they are categorized as the “maker” for that trade in the API. Additionally, if a GTC/GTT app order does not fully execute, any remainder can rest; if a later opposite incoming order hits it, that first order is then reported as the maker. 

Practically, what this means is that many app-based/”casual” trade orders end up categorized as maker trades — maker/taker is a description of order book classification, not necessarily a description of the types of users placing the trades. The report uses it interchangeably with demographics, invalidating the entire report’s results.

This phenomenon is especially prevalent in highly active events. When taker orders arrive very close together, the engine still serializes them: for any emitted trade, one order is the incoming taker and one was the resting maker by the time the match happened. Given how much of Kalshi’s volume comes during these types of events — election days, mid-sporting events, etc. — this represents a pretty serious flaw in this methodology.

Here is a table explaining the errors:

Trade Demographic

API Classification

Author Classification

Standard app order from casual trader

Taker or Maker

“Ordinary user” and “Sophisticated user”

Standard web order from casual trader

Taker or Maker

“Ordinary user” and “Sophisticated user”

Resting order from casual trader

Maker

“Sophisticated user”

Limit order from casual trader

Maker

“Sophisticated user”

Resting orders from semi-advanced traders and mom and pop market makers

Maker

“Sophisticated user”

Limit orders from semi-advanced traders and mom and pop market makers

Taker or Maker

“Ordinary user” and “Sophisticated user” 

Resting orders from institutional market makers

Maker

“Sophisticated user”

High-frequency trades from institutional market makers

Taker or Maker

“Ordinary user” and “Professional user”

Any classification structure that categorizes some standard app orders from casual traders as activity from “sophisticated users” and some high-frequency trades from institutions as activity from “ordinary users” is clearly flawed.

Overall, what the study is trying to measure is the economic differences between casual users and sophisticated users. This is why the findings are invalid. Any sort of narrative attempting to measure the split between "everyday", "ordinary", or "casual" users, and "professional" or "sophisticated" users cannot be determined from Kalshi's trade data.