actfap

Original research / October 2026 / 11 min read

The longshot gap, and the spread that swallows it

The academic literature reports that prediction-market longshots are mispriced. We checked it on 12,755 settled Kalshi contracts, priced a day before they closed, and then did the part nobody had done: measured what reaching the mispricing would have cost at the same price, at the same moment, out of the same rows. In 10 price buckets out of 10, the cost was larger than the gap.

Written and reviewed by Alexander Korsager · last reviewed October 5, 2026 · corrections

The finding

0 of 10

price buckets where the mispricing was bigger than what it cost to reach it

0
Gap bigger than the cost of reaching it
10
Gap smaller than the cost of reaching it

The numbers behind it

12,755
Settled contracts priced a day before they closed
14.3c
Mean half-spread at the coin-flip end of the board
3.6c
Largest mispricing found anywhere in the sample

What we found

The findings, in 5 sentences

  1. In all 10 price buckets, on both cuts of the sample, the cost of entering was larger than the size of the mispricing. Not one bucket passed the test this study registered in advance, and the test is not close to passing anywhere: the net edge is negative in all 20 bucket-and-cut combinations we computed.
  2. The reason is the spread, not the fee. At the coin-flip end of the board the mean half-spread alone was 14.3c per contract, against an exchange fee of 1.7c. The largest mispricing found anywhere in the sample was 3.6c.
  3. We could not confirm the favorite-longshot bias on this sample. On the headline cut, 9 of 10 buckets settled at a rate statistically indistinguishable from their own quoted price, and the single exception is what chance alone produces about 40% of the time across ten intervals.
  4. The two cuts disagree at exactly the end of the board the bias is about. Over every priced market the lowest buckets settled slightly below their price; taking one market per event they settled slightly above it. Neither movement is significant, and we report the disagreement rather than the cut that looks more like the published result.
  5. This is a measurement of sports contracts. 89% of the sample is Sports, and 45 contracts are political, so nothing here tests the political-market compression the published literature reports most robustly.

For journalists and researchers

Every figure on this page is read from a published result set rather than typed, and the data behind it is yours to download. Republish what you find, including commercially, with credit.

Found an error, or need a figure this page does not print? We would rather hear about it than not: how we handle corrections.

A prediction-market contract trading at 5 cents is a claim that the thing happens about one time in twenty. A well-known result says such contracts settle YES less often than that, and that contracts near the top of the price range settle YES more often: the favorite-longshot bias, familiar from racetrack odds and from sportsbook longshots. It has been reported on this exchange, and it is reported on constantly.

That finding is not ours and this study does not claim it. What nobody had published is the second half of the question, and it is the half that decides whether the first half matters to anyone: what does it cost to reach that mispricing, on the same exchange, at the same price, at the same moment? A gap of half a cent sitting behind a cost of five cents is not an anomaly a reader can do anything with, and the two numbers had never been printed beside each other.

So we measured both out of the same rows. Every settled binary market on Kalshi closing in the 90 days to 2026-10-01 was enumerated through the public API, 5,011,948 of them. 304,714 met the eligibility rules this study fixed in writing before it ran, we drew a seeded uniform 60,000 of those and asked the exchange for reference prices on the first 15,000, and 12,755 across 9,970 events carried a real two-sided quote at least a day before they closed. For each one we have the price the market was asking, the spread a buyer had to cross to take it, and how the thing actually turned out.

The answer is the one this study predicted in advance, and it is more lopsided than we expected. There is no price range on this board where the mispricing was bigger than the cost of reaching it. There is no price range where it was close. And the thing standing in the way is not the fee the exchange publishes and gets argued about, it is the bid-ask spread that no fee page mentions.

The method

A price, a settlement rate and a cost, all in cents

The comparison only works if all three quantities are in the same unit, so here is the arithmetic once, in full.

A binary contract on this exchange settles at exactly $1.00. A contract quoted at 42 cents is therefore both a price and a probability: it says this happens about 42% of the time. Group together every contract quoted near 42 cents, count how many actually settled YES, and express that share in cents per contract, and the two numbers sit on one scale. The distance between them is the gap, and it is the mispricing.

The cost of reaching it is in the same unit and comes off the same order book. YES and NO share one book, so a resting bid for YES at 40 is the same order as an offer of NO at 60: a taker entering at the offer gives up half the distance between bid and offer, whichever side they take. Add the exchange's published taker fee at that price, and that is the cost. Settlement itself is free here, so a position held to the end pays no exit leg.

Then the test, which was fixed before any of this was computed and is the one choice that decides what the piece says. A bucket's mispricing survives its cost only if the end of its confidence interval nearer the price is still further from the price than the cost is. Clearing zero says the gap is probably real. Clearing the cost says the gap is bigger than what it takes to reach it. Only the second is a statement a reader can use, and a page reporting the first and calling it an edge would be overselling its own numbers.

Clearing zero says the gap is probably real. Clearing the cost says the gap is bigger than what it takes to reach it.

Finding 1

The prices were close to right, and we cannot say the bias is there

Here is the whole board on the headline cut: ten price buckets, what each one was quoted at, what share of it actually settled YES, and the interval around that share.

One market per event: what each price bucket settled at, and what reaching the gap costScroll sideways for every column
Quoted priceMarketsSettled YES95% intervalGapCost to enterNet edgeSmallest gap detectable
1 to 4c4313.9c2.5c to 6.2c+1.2c1.3c−0.0c2.5c
5 to 9c8388.2c6.6c to 10.3c+1.2c2.7c−1.5c4.2c
10 to 19c1,27213.8c12.0c to 15.8c−0.5c5.1c−4.6c6.7c
20 to 34c1,68727.0c25.0c to 29.2c+0.3c6.7c−6.4c8.6c
35 to 49c2,05540.3c38.2c to 42.5c−2.3c16.0c−13.7c17.9c
50 to 64c1,52655.7c53.2c to 58.2c+0.2c13.5c−13.3c15.8c
65 to 79c77072.5c69.2c to 75.5c+0.6c7.4c−6.8c10.3c
80 to 89c37286.0c82.1c to 89.2c+1.7c4.9c−3.2c8.2c
90 to 94c18193.4c88.8c to 96.2c+1.1c2.9c−1.8c6.1c
95 to 99c14097.1c92.9c to 98.9c+0.3c1.4c−1.1c5.4c

Every figure is cents per contract, so a price, a settlement rate and a cost read on one scale. "Gap" is the settled rate minus the mean quoted price: negative means the bucket was overpriced relative to how it settled. "Net edge" is the size of the gap less the cost of reaching it, and a positive net edge is not the same as clearing the test, which asks the interval rather than the point estimate. The last column is the smallest mispricing this bucket could have detected at its own sample size, published so that a null reading can be told apart from a quiet one.

The honest summary of the left half of that table is that the exchange was close to right. 9 of the 10 buckets settled at a rate whose interval contains their own quoted price, which is what a well-calibrated board looks like at this sample size.

One bucket, the 35 to 49c range, has an interval that excludes its price, by 0.2c. It would be easy to lead with that, and it would be wrong. Ten intervals at 95% confidence produce at least one exclusion about 40% of the time when every bucket is priced correctly, so one exclusion out of ten is not evidence of anything. It is what this test does when there is nothing to find. We report it, and we decline to build a finding on it.

The direction is no better supported. The favorite-longshot bias predicts that the low buckets settle below their price. On this cut the two lowest buckets settled slightly above it, +1.2c at 1 to 4c. Over every priced market rather than one per event, those same buckets go the other way. The cuts disagree at exactly the end of the board the bias is supposed to live at, neither movement is significant, and so the correct thing to say is that this sample cannot confirm the effect rather than that it refutes it.

Finding 2

Every gap on the board is smaller than the cost of reaching it

That is the registered question, and the answer does not need a careful reading. Here is each bucket's gap drawn against the cost of entering at that price.

The fee is the number that gets published, compared across venues and argued about. The half-spread alone runs about 8 times as large.
Figure 1. Mispricing against what it costs to reach, by quoted price (one market per event)
Quoted priceGapCost to enterMarkets
1 to 4c+1.2c1.3c431
5 to 9c+1.2c2.7c838
10 to 19c−0.5c5.1c1,272
20 to 34c+0.3c6.7c1,687
35 to 49c−2.3c16.0c2,055
50 to 64c+0.2c13.5c1,526
65 to 79c+0.6c7.4c770
80 to 89c+1.7c4.9c372
90 to 94c+1.1c2.9c181
95 to 99c+0.3c1.4c140

The upright line on each bar is Priced exactly as it settled.

The shaded band behind each bar is its 95% Wilson interval on the settled rate, carried onto the gap.

Source: actfap.com, original analysis

The tick sits outside the bar in every row. Across both cuts that is 20 bucket-and-cut combinations, and the net edge is negative in all of them: the cost exceeded the size of the gap everywhere, before any question of significance even arises.

The margin is not narrow. At 35 to 49c, where a genuinely uncertain event sits and where the literature's political-market compression would push prices, the gap was −2.3c and entering cost 16.0c. That is a cost roughly 7 times the size of the thing it would have been paid to capture.

And the cost is overwhelmingly the spread rather than the fee. At that same bucket the exchange's published taker fee is 1.7c and the mean half-spread is 14.3c. The fee is the number that gets published, compared across venues and argued about. The half-spread alone runs about 8 times as large.

Finding 3

What this sample could have seen, and why the null is about the cost rather than the sample

A study whose finding is that it found nothing owes the reader a straight answer to the obvious question: would you have seen it if it were there? So every bucket publishes the smallest mispricing that would have cleared the test at its own sample size and its own cost.

That obligation is not a courtesy added afterwards. It was written into this study's registration at the moment the sample was cut down, precisely because a smaller sample widens every interval, and wider intervals make this study's own hypothesis easier to confirm. Buying a cheaper collection without publishing the power it cost would have been putting a thumb on the scale.

Figure 2. What each bucket could have detected, against what it found (one market per event)
Quoted priceSmallest gap detectableGap foundMarkets
1 to 4c2.5c1.2c431
5 to 9c4.2c1.2c838
10 to 19c6.7c0.5c1,272
20 to 34c8.6c0.3c1,687
35 to 49c17.9c2.3c2,055
50 to 64c15.8c0.2c1,526
65 to 79c10.3c0.6c770
80 to 89c8.2c1.7c372
90 to 94c6.1c1.1c181
95 to 99c5.4c0.3c140

Amendment 3 to the pre-registration requires this figure beside every bucket, because the study's own hypothesis is that mispricing does not clear its cost, and a smaller sample makes that easier to conclude. Where the bar sits above the tick, the bucket could not have detected the gap it found even if that gap were exactly right.

Source: actfap.com, original analysis

Read those numbers against the costs in the table above and the result has a shape worth stating plainly. The smallest detectable gap exceeds the cost it has to clear by only one to three cents in most buckets, because the test requires clearing the cost and the cost is the large term. The null here is a fact about the cost of trading, not about our sample size. A sample several times bigger would have narrowed the intervals and changed nothing, because a 16.0c cost needs a mispricing larger than any that appears anywhere in this data.

We also checked whether the conclusion depends on the one cost choice the registration fixed, which is the mean half-spread. It does not. The half-spread on this board is heavily skewed: at 35 to 49c the mean is 14.3c while the median contract's is about 3c, because the bucket holds both tightly quoted markets and effectively unquoted ones. Recomputing every bucket with the median instead of the mean, which is the measure most favourable to finding an edge, still returns 0 of 10 on both cuts. That recomputation is not part of the registered analysis and is reported as a robustness check, not as a result.

Finding 4

Both cuts of the sample give the same answer

Markets inside one event are frequently mutually exclusive. In a ten-candidate event exactly one market settles YES by construction, so those markets are not independent draws and an interval over all of them claims more precision than the data holds. The registration therefore required every figure computed twice, and required a claim to hold in both cuts before it could reach these findings.

The same test on both cuts of the sampleScroll sideways for every column
CutMarketsEventsBuckets whose interval excluded their priceBuckets whose gap also cleared its cost
Every priced market12,7559,9702 of 100 of 10
One market per event9,9709,9701 of 100 of 10

The second cut takes one market per event, because markets inside an event are often mutually exclusive and an interval computed over all of them is narrower than the data supports. It is the headline cut, fixed as such before the data was scored. The right-hand column is the same on both, and it is the study's result.

The two cuts differ on the smaller question and agree exactly on the registered one. The number of buckets whose interval excluded their own price moves from 2 to 1, which is the dependence problem showing up as expected: pooling mutually exclusive markets narrows intervals and manufactures exclusions. The number of buckets whose gap cleared its cost is 0 either way.

Here is the fuller cut in the same form as the headline one, so the disagreement can be read rather than taken on trust.

Every priced market, for comparison

The same ten buckets over all 12,755 priced markets rather than one per event. The gap column is where the two cuts part company at the low end, and the right-hand columns are where they do not.

Every priced market: what each price bucket settled at, and what reaching the gap costScroll sideways for every column
Quoted priceMarketsSettled YES95% intervalGapCost to enterNet edgeSmallest gap detectable
1 to 4c7242.5c1.6c to 3.9c−0.2c1.3c−1.1c2.3c
5 to 9c1,1917.0c5.7c to 8.6c−0.1c2.8c−2.7c3.9c
10 to 19c1,76613.1c11.6c to 14.7c−1.1c5.1c−4.0c6.5c
20 to 34c2,11625.0c23.2c to 26.9c−1.5c6.9c−5.4c8.6c
35 to 49c2,32739.2c37.3c to 41.2c−3.3c16.0c−12.7c17.8c
50 to 64c1,74455.2c52.9c to 57.5c−0.3c13.9c−13.6c16.1c
65 to 79c1,02373.7c70.9c to 76.3c+1.7c7.9c−6.2c10.4c
80 to 89c53687.9c84.8c to 90.4c+3.6c5.4c−1.8c8.0c
90 to 94c27494.5c91.2c to 96.7c+2.4c3.3c−0.9c6.0c
95 to 99c22096.8c93.6c to 98.5c−0.0c1.5c−1.5c4.6c

Every figure is cents per contract, so a price, a settlement rate and a cost read on one scale. "Gap" is the settled rate minus the mean quoted price: negative means the bucket was overpriced relative to how it settled. "Net edge" is the size of the gap less the cost of reaching it, and a positive net edge is not the same as clearing the test, which asks the interval rather than the point estimate. The last column is the smallest mispricing this bucket could have detected at its own sample size, published so that a null reading can be told apart from a quiet one.

By category, and the scope limit this makes obvious

89% of this sample is sports. That is not a sampling choice: it is what a uniform draw from the settled contracts on this exchange returns, because sports is what the exchange mostly lists and mostly settles. It does, however, bound what the study can say.

The published calibration work this piece checks reports its most robust result in political markets, where prices compress toward 50 cents. This sample contains 45 political contracts. Nothing here tests that result, confirms it or contradicts it, and a reading of this page as a refutation of it would be wrong.

Figure 3. Mean gap and mean cost by market category
CategoryMean gapMean costMarketsMean price
Sports−1.2c9.1c11,30736.7c
Financials+3.6c14.4c63050.6c
Mentions+0.2c4.5c20245.8c
Entertainment−1.8c14.1c15940.7c
Commodities−2.2c3.4c15943.1c
Economics+3.8c9.7c10050.2c
Crypto+3.4c8.8c7141.6c
Politics−0.9c4.3c4540.9c

The upright line on each bar is Priced exactly as it settled.

Exploratory, and labelled as such by the pre-registration: a category's mean gap pools every price together, so a category whose contracts happen to sit at the extremes will show a gap that is really a price effect. No claim on this page rests on this cut.

Source: actfap.com, original analysis

Every category below sports is too small to carry a claim, and the cut pools every price together, so a category whose contracts happen to cluster at the extremes shows a gap that is really a price effect. The pre-registration labelled this cut exploratory before the data was seen, and no finding on this page rests on it.

What this does not say

A quoted midpoint is not a fill. The price here is the middle of a resting book, and the cost model charges half the spread for crossing it. Anyone moving real size pays more than that, so every net edge reported on this page is an upper bound on what was actually available, not an estimate of it.

One exchange, 90 days, one horizon. Nothing here is a claim about prediction markets in general, about Polymarket, about a different holding period, or about any window other than the one named on this page. Polymarket is deliberately absent rather than half-measured: its settlement and fee surfaces are a separate collection problem, and publishing two half-checked datasets in one piece would be worse than publishing one checked one.

The quote test drops the least liquid markets. A market with no two-sided price a day before close cannot enter, and those are the widest ones. That makes the costs on this page lower than the exchange's true costs, which is again the direction that works against this study's own finding rather than for it.

A historical gap is not an available gap. Even where a bucket's mispricing clears its cost in this sample, that is a statement about contracts that have already settled, measured at a midpoint, with the per-order fee round-up left out. It is not a statement that the same gap is there now, or that it could be captured.

This is not advice to trade anything, and the register is the one this site uses everywhere else: what a cost structure does to a claimed edge. The legal status of these contracts, their settlement rules, what happens in a dispute and the protections attached to them are all different from one venue to another and none of it is measured here.

The literature is characterised for direction, not quantity. Two sources that would have been natural to cite were never read directly, one because it returned a rate-limit error and one because it was not fetched, and neither is cited anywhere on this page or in the working files. Where published work is described at all it is described in general terms, which is what the pre-registration committed to.

How we know

Methodology

Written to be read by someone trying to find a hole in it. Where a limit cuts against the study, it is stated here rather than left for a reader to discover.

The plan was committed before the analysis ran

This study was pre-registered. Its question, its dataset boundary, its eligibility rules, its price buckets, its hypothesis and the exact test a bucket has to pass were written down and committed before any price was compared to any outcome, together with what would be published if the result came out null or pointed the other way. Three dated amendments record every change since, each one written before the changed collection ran.

That matters here more than it would on a descriptive piece. This page publishes a hypothesis and a finding in the same document at the same moment, and from the outside that is indistinguishable from running the numbers several ways and keeping the framing that worked. The registration is what makes the difference checkable rather than asserted: the plan has an earlier commit date than the analysis, and the amendments say what was changed, when, and why.

The amendments are not hidden in a footnote because two of them cost the study precision. The collection window was narrowed to 90 days, because pricing an older market against the exchange's current fee schedule would compute a cost nobody ever paid. The eligible set was reduced to a seeded uniform sample, because the design owes one history request per market and the eligible set ran past 300,000, which is more load than this site should put on somebody else's free public endpoint. The quote budget was then cut further, and that third amendment carries an obligation with it: every bucket on this page publishes the smallest mispricing it could have detected, because a smaller sample widens every interval, and wider intervals make this study's own hypothesis easier to confirm.

The capture

Every settled event on Kalshi was walked by cursor through the documented public REST API at api.elections.kalshi.com, with nested markets, from 2026-10-01T03:07:33.383Z. No account, no authentication, and no page of the consumer website: kalshi.com returns a bot challenge to automated access including on its own robots.txt, which was not worked around.

Enumeration goes through events rather than the flat markets listing, and that is a correctness choice rather than a convenience. A probe of the flat settled-markets endpoint returned 200 of 200 rows as auto-generated multivariate combination shards. A study built on it would have measured the exchange's parlay generator instead of the exchange.

The walk saw 5,011,948 settled binary markets closing inside the 90 day window that opens 2026-07-03. 304,714 of them met every eligibility rule except the quote test: a real binary market rather than a combination shard, a settled yes-or-no result, at least 48 hours between opening and closing, and some traded volume. A seeded uniform draw of 60,000 was taken from those, and reference quotes were fetched for a 15,000-market prefix of it.

12,755 markets across 9,970 events carried a genuine two-sided quote at the reference horizon and form this study's universe. Every market in the quote budget was answered by the exchange, so nothing in this universe is missing because a request was refused.

What the reference price is, and why it is not the closing price

A settled market's last traded price has already converged toward its own outcome, so it cannot answer a question about what the market thought before it knew. Using it would measure settlement against itself.

Instead, for every eligible market, hourly candles were read over the window from 48 hours before close to 24 hours before close, and the last candle in that window carrying a two-sided quote supplies the price. In one sentence: the last quoted price at least a day before the market closed. The median market on this page was priced 24.5 hours before it closed.

Twenty-four hours is the horizon because it sits before the late convergence that makes a settled price uninformative. The 24 hour lookback behind it exists so that a thinly traded market is not dropped for having no quote in one particular hour. A quote counts only where the bid is above zero, the offer is below a dollar and the offer is above the bid, which is the identical test the sibling cost study applies, so a market excluded there for having no two-way price is excluded here for the same reason.

What was computed

Per market, from the reference candle only: the price, the midpoint of the closing bid and offer in cents, read as the market's own estimate of the probability; the half-spread, half the distance between bid and offer, which is what a taker gives up crossing the book to enter; and the outcome, one if the market settled YES and zero if NO.

Per price bucket: the share of markets settling YES, expressed in cents per contract so it reads against the price on one scale; a 95% Wilson score interval on that share; the gap, settled share less mean price; the cost, mean half-spread plus the exchange's published taker fee at the bucket's mean price; and the net edge, the size of the gap less the cost. Settlement is free on this exchange, so a position held to settlement pays no exit leg.

The fee is deliberately understated. Kalshi's filed schedule rounds its fee up to the next cent per order, so the size of that term depends on order count and roughly doubles the fee near 50 cents on a one-contract order. It is left out here, exactly as the sibling cost study leaves it out, and the direction is the point: leaving it out makes costs look lower, which makes a gap look more likely to survive them, which is the opposite of what this study expected to report. An unmodeled term should err against the study's own finding.

The test a bucket has to pass

Pre-registered, and it is the one methodological choice that decides what this piece says.

A bucket's mispricing survives its cost only if the Wilson bound nearer the price is still further from the price than the cost is. For an overpriced bucket the upper bound has to sit below the price less the cost; for an underpriced bucket the lower bound has to sit above the price plus the cost.

An interval that merely excludes the price is not enough, and the distinction is the whole study. Clearing zero says the gap is probably real. Clearing the cost says the gap is bigger than what it takes to reach it, and only the second is a statement a reader can do anything with. A page that reported the first and called it an edge would be making a claim its own numbers do not support.

Markets inside one event are not independent draws, and every figure is computed twice

In a ten-candidate election event exactly one market settles YES by construction. Those markets are not independent observations, and a Wilson interval computed over all of them is narrower than the data supports, which would make a gap look better established than it is.

So every figure here is computed twice: once over every priced market, and once over a cut taking the single highest-volume market in each event, ties broken by ticker so the cut is deterministic. Per the pre-registration, a claim reaches the findings, the meta description or the outreach brief only if it holds in both. Where the two disagree the one-market-per-event figure is the headline and the disagreement is stated rather than resolved quietly.

The cut is a real cost, not a formality: it reduces 12,755 markets to 9,970, widening every interval. That it is the headline cut rather than the fuller one is the conservative choice, and it is the choice the registration fixed before anyone knew which way the numbers would go.

Validation

The model is pure arithmetic over the committed capture, with no network call, no clock and no randomness beyond the fixed sample seed, so it reproduces exactly. Its own suite holds the bucket edges, the Wilson bounds, the gap, the fee formula against the three points the exchange's filed schedule quotes, the decision rule, and specifically a case that clears zero and fails the cost, which is the one distinction the whole piece turns on.

The page's figures are generated from the run's output rather than typed, and a second suite re-reads that output, asserts the generated copy against it cell for cell, and then re-derives every bucket, every interval and the decision rule from the capture itself with arithmetic written independently of the study's model. A figure that survives regeneration while meaning something different still fails.

The power figure beside each bucket shares the decision rule rather than restating it: it walks every settlement count the bucket could have produced, applies the identical test, and reports the distance from the price of the nearest count that would have passed. A power figure computed from a looser rule than the one that gates the finding would be a second claim nothing checks.

Reproducing it

The capture is committed, so every figure on this page recomputes offline from the published data with no dependence on where the exchange has moved since. The dataset under this page carries each bucket on both cuts.

Re-running the collection live will not reproduce these numbers and is not meant to. Settled markets age out of a 90 day window and candlestick history belongs to the exchange rather than to us. That is exactly why the capture is committed rather than re-fetched, and why the figures are pinned to a stated instant rather than to whatever the exchange looked like when a reader checked.

Sources, data and license

What was computed, the data it came from, and what you may do with it. Everything below is here so this study can be checked rather than taken on trust.

How the figures were produced

A measurement over a committed capture, not a model. 5,011,948 settled binary Kalshi markets closing in the 90 days to 2026-10-01 were enumerated by cursor through the public API; 304,714 met the pre-registered eligibility rules, a seeded uniform draw of 60,000 was taken from those, reference quotes were fetched for a 15,000-market prefix of it, and 12,755 across 9,970 events carried a two-sided quote at least 24 hours before close. Each one's reference price, half-spread and settled outcome were then reduced to ten pre-registered price buckets on two cuts, with a 95% Wilson interval on every settled share and the exchange's filed taker fee added to the half-spread as the cost of entry. There is no simulation and no randomness beyond the published sample seed, so the arithmetic reproduces byte for byte from the committed capture on any machine. The capture, the collection code, the pure model, a 28-case unit suite and a second suite that re-derives every published figure from the capture are the study's working files.

The data

One price bucket on one cut of the sample, with its settlement rate, its interval, the cost of entering at that price and the smallest gap it could have detected. The file carries all 20 rows, including those this write-up had no room to show.

Download the full result setCSV, 20 rows

What is in each column
cut
Which cut the row belongs to: every priced market, or one market per event.
price_low_cents
Lowest quoted price in the bucket, inclusive, whole cents.
price_high_cents
Highest quoted price in the bucket, inclusive, whole cents.
markets
Markets in the bucket, all with a two-sided quote a day before close.
settled_yes
Of those, how many settled YES.
settled_cents
Share settling YES, expressed as cents per contract.
mean_price_cents
Mean quoted price in the bucket, cents per contract.
wilson_low_cents
Lower bound of the 95% Wilson score interval on the settled share, cents.
wilson_high_cents
Upper bound of the same interval, cents.
gap_cents
Settled share less mean price, cents. Negative means overpriced relative to settlement.
half_spread_cents
Mean half-spread crossed to enter at the offer, cents.
fee_cents
Kalshi's published taker fee at the bucket's mean price, cents, without the per-order round-up.
cost_cents
Half-spread plus fee: what reaching the gap cost, cents.
net_edge_cents
Size of the gap less the cost, cents. Positive does not mean the bucket passed the test.
detectable_gap_cents
Smallest mispricing that would have cleared the pre-registered test at this bucket's sample size and cost, cents, or "none" where no settlement rate would have.
survives_cost
Whether the Wilson bound nearer the price still clears the cost: the pre-registered test. yes or no.

Where the prices, the outcomes and the fee schedule came from

One public exchange API behind every price and every settlement result on this page, and that exchange's own fee schedule as filed with its regulator. One academic paper, cited for the direction of a published result rather than for any figure, because this study is a primary-data check of that direction rather than a report on someone else's measurement.

actfap has no relationship with Kalshi, with any sportsbook, with any exchange or with any operator, and takes no fee, commission, advertising or placement from any of them. A citation here is provenance, not endorsement. The exchange's consumer website is cited without a link because it refuses automated access, which we did not work around.

  • Kalshi · Trade API v2, settled events and market candlesticks endpoints

    The public REST interface every price, settlement result and traded volume in this study was read from, unauthenticated, as documented.

    https://api.elections.kalshi.com/trade-api/v2/events

    Read directly from the publisher · retrieved 2026-10-01

    The exact capture is committed with the study's working files and published as the dataset under this page. Settled markets age out of a 90 day window, so a later read will not match it.

  • Commodity Futures Trading Commission · KalshiEX LLC rule certification, fee schedule filing

    The filed taker-fee schedule the cost half of this study computes from, including the formula and the per-order round-up this study deliberately omits.

    https://www.cftc.gov/sites/default/files/filings/orgrules/22/09/rule091222kexdcm003.pdf

    Read directly from the publisher · retrieved 2026-09-16

    A regulator-hosted copy of the exchange's own filing, used in preference to any secondary description of the fee.

  • arXiv · Decomposing Crowd Wisdom: Domain-Specific Calibration Dynamics in Prediction Markets (Nam Anh Le, arXiv:2602.19520)

    The published calibration literature this study checks rather than reports. Read for the direction of its stated result, not for any figure: it measures calibration across 353 million trades and 429,000 binary contracts on two exchanges and reports persistent underconfidence in political markets, with prices compressing toward 50 cents.

    https://arxiv.org/abs/2602.19520

    Read directly from the publisher · retrieved 2026-10-01

    Cited for direction only, and no number from it appears on this page. Our sample, horizon, exchange coverage and method are different, so the two are not comparable figure for figure, and this study is a fresh primary-data check rather than a replication of that paper's design.

  • Kalshi · kalshi.com

    The exchange's consumer site, carrying its own fee and product marketing, which this study did not read.

    Third-party reported, not operator-verified · retrieved 2026-10-01

    Not linked: The site returns a bot challenge to automated access, including on robots.txt. We do not work around access controls, so the fee arithmetic was taken from the regulator's copy of the exchange's own filing instead, and the marketing claims are described in general terms rather than quoted.

Last reviewed

October 5, 2026

Next expected update

The cost arithmetic holds until the exchange files a new schedule. The settlement figures do not update at all: they describe one fixed 90 day window of markets that have already settled, which is what the committed capture pins them to.

Follows Kalshi, whose taker-fee schedule changes only by a filing with the CFTC.

Reuse and license

You may copy, republish, adapt and build on this study's data and findings, including commercially, as long as you credit actfap and link back to this page.

Released under the Creative Commons Attribution 4.0 International license. If you find an error in the data, we would rather hear about it than not.

How to cite this

Korsager, A. (2026). The longshot gap, and the spread that swallows it. actfap. https://actfap.com/research/prediction-market-longshot-2026

Questions this study answers

Does the favorite-longshot bias exist on Kalshi?
We could not confirm it on this sample and we are not claiming it is absent. Across 12,755 settled contracts in ten price buckets, 9 of 10 buckets settled at a rate statistically indistinguishable from their own quoted price, the single exception is what ten intervals produce by chance about 40% of the time, and the two cuts of our sample point opposite ways at the low end of the board. Published academic work reports the effect most robustly in political markets, and only 45 of our contracts are political.
If a mispricing were there, could it be captured?
Not at the sizes that appear in this data. The cost of entering ran from 1.3c to 16.0c per contract depending on price, and the largest mispricing anywhere in the sample was 3.6c. In all 20 bucket-and-cut combinations we computed, the cost was larger than the gap. That is before counting the per-order fee round-up we left out, and before the extra cost anyone moving real size would pay.
Why is the bid-ask spread the main cost rather than the fee?
Because the fee is small and published and the spread is large and not. At 35 to 49c the exchange's taker fee works out at 1.7c per contract while the mean half-spread crossed on entry was 14.3c. Venue comparisons are usually made on fee schedules, which is the number that is easy to look up rather than the number that decides what a trade costs.
Why price the contract a day before it closed?
A settled market's last traded price has already moved toward its own outcome, so comparing it to that outcome measures nothing. We read hourly candles over the window from 48 to 24 hours before close and take the last two-sided quote in it, which gives the market's view before the late convergence. The median contract on this page was priced 24.5 hours before it closed.
Was this analysis planned before you saw the result?
Yes, and that is checkable rather than asserted. The question, the eligibility rules, the ten price buckets, the hypothesis and the exact test a bucket had to pass were committed to this repository before any price was compared to any outcome, together with what would be published if the result came out null or pointed the other way. Three dated amendments record every change since, including the two that cost the study precision and the one that obliged us to publish the smallest gap each bucket could have detected.
Does this mean prediction markets are efficient?
No, and it is a narrower result than that. It says that on one exchange, over one 90 day window, in a sample that is mostly sports contracts, priced a day before settlement, no price bucket showed a mispricing larger than the cost of reaching it. Efficiency is a claim about whether the prices are right; this is a claim about whether the distance between the price and the outcome was ever bigger than the spread you would have crossed to act on it.

Put it to work

Run your own numbers through it

More original research

See every study

21+. Available only where regulated.

This is research about whether a documented pricing pattern on a prediction-market exchange is larger than the cost of acting on it, not a view on whether anyone should act on it. A gap measured on contracts that have already settled is not a gap available now, event contracts can lose their entire value, and nothing here is financial or betting advice. actfap carries no affiliate links, no ads, no paid placements and no operator relationships of any kind.

Gambling can cause serious harm. If it is affecting you or someone you know, the National Problem Gambling Helpline is free, confidential and open 24/7, call or text 1-800-MY-RESET (1-800-697-3738), or chat at ncpgambling.org/chat. More on staying in control.

We’d like to use privacy-friendly analytics (Google Analytics, Vercel Analytics and Speed Insights) to see which tools and pages are actually useful, so we can improve them. Nothing is sold, and nothing loads unless you say yes. See our privacy policy for details.