Tax basics · Kalshi

Prediction Market Cost Basis for Taxes: FIFO Lots

Prediction market cost basis explained: how FIFO matches a sale to a purchase, where fees go, what settlement does, and what each venue shows.

By Owen Monagan14 min read
Published
On this page

The cost basis of a prediction market contract is what you paid, fee included. When one contract was bought twice or more, first in, first out (FIFO) means a sale closes the oldest purchase. The FIFO rule was written for stock. As of October 2026, there is no IRS guidance on event contracts. For people filing under Section 1256, order doesn't matter: open positions count as sold at their December 31 value, and every gain splits 60/40.

What is cost basis on a prediction market contract?

Cost basis on a prediction market contract is what you paid to buy it: the price times the number of contracts, plus the fee on that purchase. The tax code starts basis at cost under Section 1012. The Form 8949 instructions count purchase costs such as commissions as part of it.

Each purchase is its own lot. A lot is one buy of a contract, with its own price, date and fee. This guide carries one example all the way through: two buys of the same YES contract in 2026, then one sale. The sale closes the oldest lot first.

StepDateWhat happenedContractsPriceExample feeCost basis of the lot
Lot AMar 2Bought YES10040¢$1.68$41.68
Lot BJun 1Bought YES10060¢$1.68$61.68
SaleSep 15Sold YES10070¢$1.47closes Lot A

The example fees use the taker formula on Kalshi's fee schedule. Your own fills carry the fee you actually paid.

The sale brings in $70. Take away Lot A's $41.68 and the $1.47 sale fee, and the gain is $26.85. Lot B stays open, still at its $61.68 cost.

YES and NO each have their own cost basis

YES and NO on the same market are two different contracts, so each side keeps its own lots. A sale of YES closes the oldest YES lot. It never touches a NO lot, and a lot in one market never closes against another market.

Kalshi records a trade by the side it leaves you holding. In Kalshi's fill data, selling 100 YES shows up as a NO fill. Buying NO while you hold YES is therefore a sale of your oldest YES lots, not a second position. The Kalshi data guide shows those fill fields.

Where fees go

A fee paid on a purchase goes into that lot's cost basis. A fee paid on a sale comes off the sale proceeds. That is the split in IRS Publication 550, which adds commissions to what you paid and subtracts selling expenses from what you received.

Some filings put both fees in the cost column instead. In the example, that shows proceeds of $70.00 and a cost of $43.15. The gain is $26.85 either way.

The venues describe their own figures in four different ways:

  • Kalshi: its profit and loss figure includes fees and any rebates.
  • Polymarket US: a position's cost includes the fee paid when buying. It doesn't say where a sale fee goes.
  • Webull: fees are added to the cost of a buy and taken off the proceeds of a sale.
  • Robinhood: the in-app profit and loss leaves fees out. The annual statement lists them.

Whatever the venue shows, each fee belongs to the trade that paid it.

How does FIFO work for prediction market trades?

FIFO charges each sale to the earliest purchase of the same contract that is still open. In the example, the September 15 sale closes Lot A, bought March 2, and leaves Lot B, bought June 1. The sale takes Lot A's cost basis and Lot A's purchase date with it.

The rule comes from Treasury Regulation 1.1012-1(c). When a seller doesn't name which shares were sold, the sale is charged to the earliest lot. The regulation is written for shares of stock and extends to bonds.

Kalshi names its method. Its help center says: "We use the First-In-First-Out (FIFO) accounting method to compute profits and losses."

The order changes the numbers on only one of the common routes. For people filing on the standard capital route, it can move gain from one year to the next. For people filing under Section 1256, it drops out. The Section 1256 section below runs both routes through the same example.

A partial sale splits a lot

A sale smaller than the oldest lot closes only part of it. Realize splits the lot's cost basis and its purchase fee by the number of contracts sold.

Say the September 15 sale were 50 contracts instead of 100. It closes half of Lot A: $20.00 of price plus half of the $1.68 fee, or $20.84 of cost basis. The other 50 contracts of Lot A stay open at $20.84. Lot B isn't touched.

Each lot keeps its own purchase date after a split. The 50 contracts left in Lot A are still dated March 2. That date matters for people filing on the standard capital route, where a lot held more than one year is long-term. FIFO decides which dates are sold first.

How lots become Form 8949 rows

For people filing on the standard capital route, each lot a sale closes becomes a row on Form 8949. The September 15 sale is one row: proceeds of $70.00 against Lot A's cost.

None of the venues in this guide says it sends a Form 1099-B for event contract trades. With no Form 1099-B or Form 1099-DA, the Form 8949 instructions put the rows under box C for short-term and box F for long-term. A sale that closes lots bought on several dates can go on one row with "VARIOUS" as the purchase date. The short-term and long-term parts still go on separate rows.

The capital gains guide fills in Form 8949 column by column.

Is the average price in a prediction market app the same as FIFO cost basis?

No. An average price blends every purchase still in a position. FIFO cost basis is the cost of the one lot a sale closes. The two give different numbers for the same sale.

The same sale under an average price

In the example, Lot A cost 40¢ a contract and Lot B cost 60¢. The average across the 200 contracts is 50¢. Here is the September 15 sale of 100 at 70¢ both ways, without fees:

FigureFIFOAverage price
Cost of the 100 sold$40.00 (Lot A)$50.00
Gain on the sale$30.00$20.00
Cost of the 100 still open$60.00 (Lot B)$50.00

The average moves $10 of gain off this sale and onto the contracts still open. If those close in the same year, the year's total comes out the same.

The IRS allows an average for a narrow set of holdings. Publication 550 limits the average price per share to certain mutual fund shares. The Form 8949 instructions limit average basis to identical shares in a mutual fund or a dividend reinvestment plan. Both texts are about shares.

What each venue calls its cost basis

Each venue labels its own figure, and most show an average. Five venues describe theirs this way:

  • Polymarket US: the portfolio shows an average entry price. Its trader guide lists cost basis as the average entry price and total cost.
  • Novig: its API derives an average entry price from the net dollars paid for a position.
  • Coinbase: each open prediction position shows an average fill price.
  • Webull: each event contract position shows a "cost basis". Webull doesn't say how it is figured.
  • Robinhood: its help center says "Average cost isn't the same as the tax cost basis." That article is written about shares and names no method for event contracts.

Kalshi is the exception: its help center says its profit and loss uses FIFO. Its positions API reports a position's total cost, with no per-lot figure.

A position's average shows where the whole position stands. Form 8949 is figured lot by lot.

What is the cost basis of a prediction market contract that settles?

A contract that settles keeps the cost basis of its lot. Settlement counts as the closing sale, at $1 a contract if it wins and $0 if it loses. The gain or loss is that payout minus the lot's cost.

In the example, Lot B is still open: 100 YES contracts at a cost of $61.68. Say the market settles on November 10:

OutcomePayoutLot B's costGain or loss
YES wins$100.00$61.68$38.32
YES loses$0.00$61.68($61.68)

Kalshi charges no fee at settlement, so nothing comes off the payout. Settlement closes every lot still open in that market at once. FIFO only decides the order when some lots are sold first.

For people filing under Section 1256, a lot open on December 31 counts as sold at that day's value. Settlement is then measured from that value. The December 31 guide works that through.

Can you pick which lots a prediction market sale closes?

The IRS rules on picking lots name stock, bonds and digital assets. Event contracts are not among them. Picking the lot a sale closes is called specific identification. Without it, those rules fall back to FIFO.

What the IRS rule names

Treasury Regulation 1.1012-1(c) sets out how a seller identifies a lot. It has two steps when a broker holds the shares:

  1. At the time of the sale, the seller tells the broker which shares to sell.
  2. Within a reasonable time, the broker confirms that choice in writing.

A standing instruction counts as made at the time of each sale. The rule is written for stock, and a later paragraph applies it to bonds. Digital assets held at a broker have their own FIFO rule in the same regulation.

Broker reporting follows the same pattern. Under Section 6045(g), a broker that reports basis on a covered security uses FIFO unless the customer identifies the lot. The regulation's list of covered securities has five kinds:

  • stock
  • debt
  • certain options
  • securities futures contracts
  • digital assets and forwards on them

Commodity contracts join the list only if the Treasury Secretary determines basis reporting fits them.

What Realize matches

Realize matches every sale first in, first out. Each market outcome has its own queue of lots, and each venue account is matched on its own. Realize does not model specific identification, an average cost or any other method. Every route Realize prices starts from the same fills.

Does FIFO matter under Section 1256?

No, not for people filing under Section 1256. Lot order can move two things: the year a gain lands in, and whether it is short-term or long-term. Section 1256 takes both away. For people filing on the standard capital route, the order can change both.

Section 1256: why the order drops out

For people filing under Section 1256, every position still open on December 31 counts as sold at that day's value. Each year's total is then everything closed that year plus the change in value of everything still open, whichever lot a sale closed. The December 31 guide shows how the mark works.

The split doesn't depend on the lot either. Section 1256 treats 60% of each gain or loss as long-term and 40% as short-term, however long the contract was held. The 60/40 rule guide and the Form 6781 guide cover how that split is filed.

Take the example with one change: Lot B is still open on December 31, 2026, when the price is 80¢. It settles YES on February 10, 2027. Without fees, the 2026 total is $50 under FIFO and $50 under an average price. The 2027 total is $20 either way.

Standard capital: where the order changes the numbers

For people filing on the standard capital route, nothing is marked at year end. A lot keeps its real cost until it is sold or settles, so the order decides which cost lands in which year. Here is the same example, without fees:

YearWhat closesFIFOAverage price
2026Sale of 100 at 70¢ on Sep 15$30$20
2027Settlement of 100 at $1 on Feb 10$40$50
Total$70$70

The total is the same. The order moves $10 of gain from 2026 into 2027.

In 2026, the example shows $50 under Section 1256 and $30 on the standard capital route. In 2027 it is $20 and $40.

Lot order also sets the holding period. Had the September 15 sale come on April 15, 2027 instead, FIFO would close Lot A, bought March 2, 2026. That is more than one year, so the gain would be long-term. A sale that closed Lot B, bought June 1, 2026, would still be short-term that day.

Do wash sale rules apply to prediction market contracts?

The wash sale rule in Section 1091 disallows a loss on "stock or securities" in one case. That case is a purchase of substantially identical stock or securities within 30 days before or after the sale. It also reaches contracts and options to buy or sell stock or securities. Publication 550 says the rules do not apply to losses on commodity futures contracts.

Section 1256 contracts have their own year-end mark under Section 1256. Realize's numbers include no wash sale adjustment.

What cost basis does each venue show?

Only Kalshi names a lot method for event contracts: its profit and loss uses FIFO. The other five venues in this guide show an average or a single cost figure. None of the six says it sends a tax form with a cost basis for event contract trades.

VenueWhat it showsMethod namedFeesForm for event contract tradesChecked
KalshiYearly profit and loss, and a file with one row per closed lotFIFO, for profit and lossIncluded in profit and loss, with rebatesNone; its 1099-B covers crypto transfers onlyOct 8 to 27, 2026
Polymarket USAverage entry price; a cost basis field on each trade, sometimes emptyNoneBuy fee in the position's cost; sale fee not statedAgreement consents to electronic delivery of a 1099-B; none committedOct 25 to 27, 2026
RobinhoodAnnual statement with costs, proceeds, fees and net profit and lossNone for event contractsListed on the annual statement; left out of in-app profit and lossNo 1099 for event contractsOct 27, 2026
CoinbaseAverage fill price on each open positionNoneGeneral tax page puts US trading fees in cost basis; prediction markets not named1099-B criteria don't name prediction marketsOct 27, 2026
NovigAverage entry price, from net dollars paidNoneNot described in its docs1099-MISC on net redemptions, not trading profitOct 25 to 27, 2026
WebullA "cost basis" on each positionNoneAdded to cost on a buy, taken off proceeds on a saleTax pages name no form for event contractsOct 27, 2026

Kalshi cost basis

Kalshi is the one venue that names its lot method. Its Documents page shows yearly profit and loss with and without fees. The download behind it has one row per closed lot, so one position can span several rows. Each row has an entry and exit price, open and close fees, and both timestamps. Kalshi updates the figure on the first of each month.

The Kalshi data guide walks through that file, and the Kalshi forms guide covers what Kalshi does and doesn't send. The Kalshi taxes guide covers the rest of the year.

Polymarket US cost basis

Polymarket US shows an average entry price on screen, as covered above. Its API carries three cost basis facts:

  1. Each trade in the activity feed has a costBasis field, and the field can be empty.
  2. A position ledger records how cost basis changed with each trade, going back to May 1, 2026.
  3. The docs don't say which lots a partial sale closes.

The Polymarket data guide shows those fields, and the Polymarket filing guide shows how a year is built from them.

Robinhood, Coinbase, Novig and Webull cost basis

These four venues name no lot method for event contracts. Robinhood's annual statement lists each event contract trade with its cost, proceeds and fees, and Robinhood says it is "not a substitute tax reporting form". Coinbase and Novig show averages. Webull shows a single cost basis per position. The Robinhood forms, Coinbase forms and Novig data guides cover each one.

How Realize matches lots from your fills

Realize builds lots for Kalshi and Polymarket US from the fills in your connected account. Each sale closes the oldest open lot in the same market and outcome. A buy fee stays on its own lot. A sale fee is split across the lots that sale closes. Settlement closes every remaining lot at the payout, as the closing sale.

Realize builds no lots for Robinhood, Coinbase, Novig or Webull. The guide to how Realize checks its numbers shows the match step by step.

Sources

Questions people ask

Does Kalshi use FIFO?

Yes, for its profit and loss. Kalshi's help center says it uses the first-in, first-out method to compute profits and losses. Its profit and loss download lists entry and exit prices and fees.

Does Kalshi use an average price for cost basis?

Kalshi's documents name FIFO, not an average. Its positions API reports a position's total cost with no per-lot figure. Form 8949 is figured lot by lot.

Do fees count toward cost basis on a prediction market contract?

Yes, for a purchase. A fee paid to buy goes into that lot's cost basis, and a fee paid to sell comes off the proceeds. Some filings put both fees in the cost column, and the gain is the same.

Does Polymarket US give a cost basis?

Polymarket US shows one as an average entry price. Each trade in its API has a cost basis field that can be empty. Its docs don't say which lots a partial sale closes.

Can I use specific identification for event contracts?

The IRS rule on identifying lots names stock, bonds and digital assets, not event contracts. For those, a seller names the lot at the time of sale and the broker confirms it in writing. Realize matches every sale first in, first out.

What happens if I sell part of a position?

The sale closes the oldest lot first, and only as much of it as was sold. Realize splits that lot's cost basis and purchase fee by the number of contracts sold. The rest stays open with its original purchase date.

Do I need a cost basis if my venue sends no 1099-B?

Form 8949 asks for it either way. For people filing on the standard capital route, each closed lot's cost basis, purchase fee included, goes on its own row. With no Form 1099-B or Form 1099-DA, the rows go under box C for short-term and box F for long-term.

Price your year three common ways.

Your estimate is free. Forms for tax year 2026 open for filing in 2027.

Get started