Kalshi now lists an up-or-down contract every fifteen minutes across twelve different underlyings. Nearly every third-party explainer treats them as one product with one settlement mechanism. They are not. Settlement source is set by asset class, and getting it wrong means checking the wrong number to see whether you won.
This page is the source table, pulled live from api.elections.kalshi.com rather than from anyone's summary. If you only take one thing: crypto settles on CF Benchmarks, commodities settle on Pyth, and the S&P series does not name a source at all.
The settlement table
Every row below came from GET /trade-api/v2/series/ on August 6, 2026. The "source" column is Kalshi's own settlement_sources[].name, quoted exactly.
| Series | Asset class | Settlement source |
|---|---|---|
| KXBTC15M | Crypto | CF Benchmarks |
| KXETH15M | Crypto | CF Benchmarks |
| KXXRP15M | Crypto | CF Benchmarks |
| KXSOL15M | Crypto | CF Benchmarks |
| KXDOGE15M | Crypto | CF Benchmarks |
| KXBNB15M | Crypto | CF Benchmarks |
| KXHYPE15M | Crypto | CF Benchmarks |
| KXADA15M | Crypto | CF Benchmarks |
| KXGOLD15M | Commodities | Pyth — Gold |
| KXSILVER15M | Commodities | Pyth — Silver |
| KXWTI15M | Commodities | Pyth — WTI |
| KXINX15M | Financials | "For example, Google Finance" |
Verify any row yourself in one line:
curl -s "https://api.elections.kalshi.com/trade-api/v2/series/KXGOLD15M" \
| jq '.series.settlement_sources'
That last row is not a typo on our end. Kalshi's API returns the literal string "For example, Google Finance" as the settlement source for its 15-minute S&P 500 series — a drafting placeholder that appears to have shipped. We are not drawing a conclusion from it beyond the obvious one: if you are trading KXINX15M, you cannot tell from the API which print resolves your contract, and that is worth knowing before you size anything.
Why the crypto answer keeps getting applied to gold
Ask an AI assistant how Kalshi's 15-minute gold markets settle today and there is a good chance you get "a 60-second average of the CF Benchmarks Real-Time Index." That answer is correct — for bitcoin. It is wrong for gold, silver and WTI.
The reason is that Kalshi's own help-centre documentation for 15-minute markets is written around crypto, because crypto is where the product launched. Metals arrived on August 3, 2026. Pattern-matching from the existing documentation lands on the crypto mechanism, and nothing in the public record contradicts it — which is precisely the gap this page exists to close.
The two most-cited third-party pages both have the same problem from opposite directions. One of the top-ranking guides to Kalshi 15-minute markets still lists as a drawback that "15-minute markets are only available for cryptocurrencies" — written before the metals launch and not updated since. A well-known backtest resource describes 15-minute settlement using a daily-series ticker and attributes the mechanism to the market's own strike rather than the index. Neither is malicious; both predate or misread the product. But between them they are most of what a search engine has to work with.
The tie rule: flat resolves YES
Kalshi's contract terms for a gold window read, verbatim:
> If the close price of the 1-minute candlestick for Gold on Aug 7, 2026 at 12:00 AM EDT is at least the close price of the 1-minute Pyth GOLD candlestick at 11:45 PM EDT on August 6, 2026, then the market resolves to Yes.
"Is at least." An exact tie resolves YES, not NO. Over a fifteen-minute window on a metal that moves in cents, an exact match on a rounded print is not the vanishing edge case it would be over a week. Gold rounds to 2 decimal places, silver to 3 — so silver ties are rarer than gold ties, purely because the reference carries an extra digit.
This is a small structural tilt toward YES that no fair-value model built on a continuous distribution will capture, because a continuous distribution assigns zero probability to an exact tie. In practice the probability is small but not zero, and it belongs to the YES holder.
The candle convention that will cost you a resolution
This is the one worth reading twice. Verbatim from the contract terms:
> The settlement value is rounded to the nearest 2 decimal places. When confirming the settlement value, note the close price for the 1-minute candlestick at a given time is the price at the end of the immediately preceding one-minute interval. For example, the candlestick timestamped 4:59 PM reflects trading during 4:59:00 PM to 4:59:59 PM and closes at 5:00:00 PM.
A candle is labelled by the minute it opens. So the print that settles a window ending at 5:00 PM comes off the candle labelled 4:59 PM, not the one labelled 5:00 PM. If you check the 5:00 PM candle you are reading a minute of trading that happened after your contract resolved.
On a slow tape this rarely matters. On a fast one it is the difference between a correct and an incorrect read of your own position, and it is why "I checked and I should have won" arguments about these markets are usually a timestamp error rather than a settlement error.
Feed availability, stated honestly
One more thing nobody has published, and it cuts against the neat version of this story.
Kalshi links its metals settlement to the symbols Metal.Index.GOLD/USD and Metal.Index.SILVER/USD. Neither appears in Pyth's public Hermes catalogue. We checked all 3,056 published feeds:
curl -s "https://hermes.pyth.network/v2/price_feeds?query=Metal.Index.GOLD/USD"
# []
The publicly available metals feeds are Metal.XAU/USD and Metal.XAG/USD, which is what every public tool — ours included — actually polls. Same publisher, same asset, and almost certainly the same number to the cent. But it is not demonstrably the same series, so anyone telling you a public price feed is the settlement feed for these contracts is claiming more than the public data supports.
For metals, treat this as a rounding-level concern rather than a directional one. It does not change which side of a window is cheap. It does mean that on a contract decided by the second decimal place, no public tool can promise you the exact settlement print.
WTI is a different and much stranger case
Kalshi names Commodities.Index.PYTHOIL/USD as the settlement source for KXWTI15M, and unlike the metals symbols, that one is in Pyth's public catalogue. So on paper oil looks like the clean case.
It is not. That feed has not published since March 30, 2026. Pulled August 6:
| Pyth feed | Last publish | Price |
|---|---|---|
Commodities.Index.PYTHOIL/USD — Kalshi's named source | 2026-03-30 | $103.27 |
Commodities.USOILSPOT (WTI CFD) | live, seconds old | $75.45 |
Commodities.WTIU6/USD (Aug 2026 future) | live, seconds old | $75.88 |
Metal.XAU/USD — control, known live | live, seconds old | $4,285.00 |
The control row matters: gold and silver publish continuously on the same endpoint, so this is not our query being wrong. The named oil index is simply dormant on the public endpoint, and the stale print it still returns — $103.27 — is roughly 37% above where WTI actually trades.
KXWTI15M is meanwhile a live, actively traded product. Across 200 settled windows it ran a median of about 12,000 contracts per window, which is more than the 15-minute silver market. So Kalshi is evidently resolving these contracts against something current — a private or non-Hermes distribution of that index, most likely — and the public endpoint bearing the same name is not it.
So no public tool can price a KXWTI15M window from the feed Kalshi names. Verify in one line:
curl -s "https://hermes.pyth.network/v2/updates/price/latest?ids[]=0x67784f72e95ac01337edb7d7bd5bbd1c03669101b7068a620df228ed4e52ef14&parsed=true" \
| jq '.parsed[0].price'
So which feed *does* settle it? We measured instead of guessing.
Kalshi publishes the answer, and as far as we can tell nobody has used it. Every settled market carries floor_strike (the reference locked at the window's open), expiration_value (the actual settlement print) and result. The chain is self-consistent — window N's floor_strike equals window N−1's expiration_value, on 199 of 199 consecutive WTI windows. That is ground truth, not inference.
So for each candidate feed we pulled 1-minute bars, took the bar that closes at the window close, and asked the only question that matters: would this feed have called the same YES/NO? Across 200 settled windows per series:
| Series | Candidate feed | Reproduces the settled verdict | Mean price error |
|---|---|---|---|
| KXWTI15M | Commodities.WTIU6/USD — front-month future | 99.5% | $0.007 |
| KXWTI15M | Commodities.WTIV6/USD — next month | 47.4% | $1.55 |
| KXWTI15M | Commodities.USOILSPOT — the WTI CFD | 49.7% | $0.61 |
| KXGOLD15M | Metal.XAU/USD | 99.5% | $0.12 on ~$4,285 |
| KXSILVER15M | Metal.XAG/USD | 99.0% | $0.004 on ~$62 |
KXWTI15M settles on the front-month WTI future. Not the CFD, not the next contract month, and not the dormant index Kalshi names.
The USOILSPOT row is the one to dwell on. It is the obvious choice — it is literally labelled "WTI Light Sweet Crude Oil", it is live, and it prints within a dollar of the market. It also reproduces the settled outcome about half the time, which is another way of saying it is a coin flip. A tool built on it would render confidently, look plausible, and be worthless. That is the whole argument for measuring rather than reasoning about which feed "should" be right.
One caveat that matters if you use this: front-month feeds expire. WTIU6 rolls off on 20 August 2026, after which WTIV6 becomes the front month — and note from the table that yesterday's correct feed scores 47% once it is the wrong contract. Any implementation has to resolve the front month dynamically rather than pin an id. Ours does, and the check is open source in our repo (scripts/validate-15m-settlement-feed.ts) so you can re-run it against whatever is current when you read this.
And on the metals: those 99.5% and 99.0% figures are why our gold and silver tools use Metal.XAU/USD and Metal.XAG/USD even though Kalshi names index symbols that are not public. It is not a guess or a hopeful proxy — it is a measured equivalence on the only metric that decides a contract.
What this means if you are actually trading these
Three practical consequences, in order of how much money they are worth:
1. The fee, not the feed, is what beats you. Kalshi's taker fee on these series is quadratic — 0.07 × P × (1−P) per contract, roughly 1.75¢ at 50¢ and 0.63¢ at 90¢. Round-trip that plus the spread and you are paying something close to 5 percentage points to enter and exit a mid-priced window. Most fifteen-minute gaps are smaller than that. Our Kalshi fee calculator does the exact arithmetic, and the Gold Edge 15-Min and Silver Edge 15-Min tools draw that dead zone on the live board so you can see whether a gap clears it.
2. Check the right candle. One minute earlier than you think.
3. Ties pay YES. Small, real, and free to know.
None of the above is a claim that these markets are beatable. Ninety-six windows a day is ninety-six opportunities to pay a fee, and the honest base case is that the fee band swallows most of what looks like edge. What the table above buys you is the ability to check your own result against the correct number — which is the floor, not the ceiling, of trading anything.
Sources
Everything on this page is reproducible from two public, keyless endpoints:
https://api.elections.kalshi.com/trade-api/v2/series/— settlement sources, asset classhttps://api.elections.kalshi.com/trade-api/v2/markets?series_ticker=—rules_primaryandrules_secondary, quoted above verbatimhttps://hermes.pyth.network/v2/price_feeds— Pyth's public feed catalogue
Pulled August 6, 2026. Kalshi ships new series regularly and has said it is working toward similar contracts on individual stocks, so re-run the first command before relying on the table for a series not listed here. Trade responsibly.
