Novel Interface Designs for Prediction Markets
Problems and potential design solutions for market interfaces
The interfaces of Polymarket and Kalshi have remained functionally identical since 2022, copying familiar exchange designs rather than building novel interfaces from first principles.
This is what Polymarket and Kalshi looked like in 2022:


Three years later, their interfaces are almost identical:


While this made sense initially for early user acquisition, the lack of any meaningful changes directly affects market efficiency, liquidity provision, and price discovery. Opinionated frontends and aggregators should differentiate themselves along different axes to develop specific tools that people want.
Third-party frontends have similarly failed to innovate thus far, despite the clear opportunity. Prediction markets are still awaiting their native trading interfaces.
In this post, I outline six problems with prediction market interfaces today. For each problem, I offer commentary and a solution.
Note that the scope of this post is limited to the specific market event pages, not the global interface.
Core Interface Problems and Solutions
There are six main problems with the interfaces today:
- Problem: There is no way to view current or historical market depth or understand the confidence one should have in the market.
Prediction market platforms typically use the midpoint price as the price they tout as the probability of an event occurring, regardless of the spread:

(Prediction market platforms are incentivized to deceive users in this manner because the vast majority of markets are not liquid enough to output any meaningful information.)
Solution: Offer a historical chart with liquidity levels at a specific point in time.

- Problem: There is no intuitive context mapping between prediction market prices and real world events.
While Polymarket has started to do this for select markets, it is unclear and not intuitive for most users. Price changes should be contextualized with specific news events.
The graphs can be user-generated where users are able to add annotations to the graphs where everybody else can vote on.
Solution: Overlay specific news events on the market graph.

- Problem: Every market uses identical YES/NO interfaces regardless of underlying question structure, forcing unnecessary cognitive translation.
The market pages themselves are completely standardized. A market showing a sports game shows the same YES/NO feed as the market for the number of Elon tweets and AGI timelines.
Solution: Display standardized interfaces across question types: price predictions, ranking interfaces, calendars, percentage ranges, geographies.
- What will Bitcoin's price be by the end of the year?

Inspired by Euphoria
Similar specialized interfaces can be made for other question types:
- What will inflation be in Q3?
- Map-based UI for geographical questions
- Ranking interfaces (1st, 2nd, 3rd)
- Calendar interfaces for release dates
- Problem: Portfolio PnL is displayed based on midpoint price.
When a user holds shares across event markets, the USD value displayed on the UI does not match what would occur if the user were to market sell their positions at that point in time. While many other traditional and crypto exchanges operate in a similar fashion, the illiquidity of prediction markets make this especially pernicious.
Solution: Allow a toggle for users to incorporate a mark-to-market portfolio instead of using midpoints.
- Problem: Insufficient funds trigger multi-screen portfolio liquidation flows.
If a user has $80 of cash and wants to submit a $100 buy order, the user is forced to navigate to their portfolio page and decide which position to sell.
Solution: Offer a pop-up that allows the user to confirm selling their shares in the highest liquidity, lowest slippage markets automatically.
- Problem: Chat is unusable given the signal to noise ratio.
Solution: Include the ability to sort comments by aggregate PnL and category-specific PnL.
Popularity prediction hash: 25c3236575b1d12d5da4fa8a530b00363f2dd64ef408f22c10d29db4a4ed1f56