Photo: Daniel Brzdęk / Unsplash · Unsplash License
GET /trade-api/v2/markets and rank them locally by volume_24h_fp. Then verify the live bid-ask spread, order-book depth for your intended quantity, expected average fill price and the timestamps of recent trades. High volume alone does not guarantee that your order can execute near the displayed price.An active market has recently traded. A liquid market has enough executable orders near acceptable prices for the quantity you want to buy or sell. Those conditions often overlap, but they are not interchangeable.
A burst of volume can leave an empty book behind. Lifetime volume can remain large after attention moves elsewhere. Open interest can be high even when nobody is currently offering the exit you need. That is why this workflow uses volume only to build a shortlist and uses the current order book to make the execution decision.
liquidity and liquidity_dollars market fields are deprecated and return zero. Do not build a screener around those fields.The objective is not to find the largest number on a market card. It is to answer a narrower question: what price and quantity are executable now?
The market-list endpoint can return open markets with fixed-point fields. Request pages until the cursor is empty, then rank the results in your own code. The endpoint documentation does not expose a server-side sort parameter, so a client-side sort is the auditable approach.
GET /trade-api/v2/markets?status=open&mve_filter=exclude&limit=1000
# Pseudocode after collecting every cursor page:
candidates = sort(markets, key=Decimal(volume_24h_fp), descending=True)
shortlist = candidates[:25]
Use the fixed-point *_fp and *_dollars fields where the API provides them. Converting their string values with decimal arithmetic avoids binary floating-point surprises and preserves fractional contract values.
| Field or check | What it tells you | What it does not tell you |
|---|---|---|
volume_24h_fp | Contracts traded during the reported recent window | Current fill price, current depth or when inside that window the trades occurred |
volume_fp | Cumulative reported volume | Whether the market is active now |
open_interest_fp | Outstanding positions reported for the market | Orders available for your entry or exit |
| Top bid/ask price and size | The best displayed level and quantity at that level | The average price of an order larger than the top level |
| Last traded price | Where a prior transaction occurred | A price currently offered to you |
| Recent-trade timestamps | Whether the volume appears recent and continuous | Future activity or a guaranteed exit |
Compare the best price at which you can immediately buy with the best price at which you can immediately sell the same side. The last trade and midpoint can be useful context, but neither is automatically executable. There is no universal “good” spread: the relevant comparison is spread plus fees and slippage versus your estimated edge.
Sum displayed quantities from the best price outward until you cover the intended contract count. Calculate the volume-weighted average price and record the worst price level touched. Our Kalshi slippage calculator automates this arithmetic for a copied price ladder.
For example, suppose a hypothetical YES book offers 40 contracts at 46¢ and 80 at 49¢. Buying 100 would cost (40 × $0.46) + (60 × $0.49) = $47.80, or 47.8¢ per contract before fees. The 46¢ top quote describes only the first 40 contracts.
Use GET /trade-api/v2/markets/trades with the ticker and cursor pagination. The response includes trade count and timestamp information. Several trades spread through the latest interval are different evidence from the same reported volume concentrated in one old print.
Kalshi's portfolio guide notes that cash-out value depends on available liquidity and that low liquidity can prevent a full sale. Test the exit side as carefully as the entry side. A position you can enter does not come with a guaranteed early exit; settlement may become the only practical path.
Kalshi's order-book documentation explains that API responses return YES bids and NO bids, not conventional ask arrays. The best YES ask is derived from the best NO bid:
best YES ask = $1.00 − best NO bid
If the highest NO bid is 54¢, the implied best YES ask is 46¢. The same complement relationship applies in the opposite direction. Always keep the contract side explicit when comparing prices or aggregating depth.
The numbers below are an illustration, not live Kalshi market data. They show why a volume-only ranking can choose the worse execution candidate.
| Candidate | 24h volume | Current spread | Visible quantity near target price | Interpretation |
|---|---|---|---|---|
| A | 25,000 | 12¢ | 35 contracts | High activity, but expensive and shallow for a 200-contract order |
| B | 8,000 | 3¢ | 450 contracts | Lower activity total, but more executable depth for that order size |
The conclusion can reverse for a 10-contract order or after the book changes. Record the snapshot time and rerun the checks immediately before placing an order.
One event can contain many mutually exclusive or related markets, such as price ranges or candidate outcomes. Event-level attention may be spread unevenly across those markets. Rank and inspect the exact ticker you would trade, and do not assume that total activity across sibling markets is available at your selected strike.
volume_24h_fp only as a shortlist signal?liquidity_dollars data?Use Kalshi's Trending view or request open markets through the API, rank candidates locally by 24-hour volume, and then inspect the live order book. Volume is a discovery signal, not proof that your order can fill near the displayed price.
No. Volume measures contracts traded during a period. Executable liquidity is the quantity currently available at prices you would accept. A market can have high historical or recent volume but a wide current spread or shallow book.
No. Open interest measures outstanding exposure, not orders currently available to trade against. Check the live bid or ask levels and calculate the fill for your intended quantity.
Kalshi's changelog says liquidity and liquidity_dollars were deprecated and return zero. Use current bid and ask information plus the order-book endpoints instead of treating those deprecated fields as liquidity rankings.
There is no universal acceptable spread. Compare the spread and expected slippage with your estimated edge, fees, intended size, time horizon and exit plan. A fixed cutoff can be misleading across differently priced contracts.
Inspect the recent-trades endpoint for timestamps and sizes, then compare that activity with the current order book. A volume total does not tell you whether trading occurred minutes ago or before conditions changed.
Reviewed July 17, 2026:
Not financial advice. This independent site provides educational information only and is not affiliated with Kalshi Inc. Event-contract trading involves risk, including loss of the amount paid. Verify live prices, fees, eligibility and contract rules on Kalshi before acting.