Can an AI agent beat Kalshi's San Francisco high temperature market?
A Kalshi San Francisco high temperature bot that buys the cool tail when a low cloud deck sits over SFO, run on paper against the live order book at Kalshi's fees, with every settled bet on this page.
Every day Kalshi lists a ladder of temperature brackets for San Francisco (KXHIGHTSFO), and exactly one wins: which bracket of the day's ladder holds the maximum temperature recorded at San Francisco (CLISFO), as The Weather Company reports it? 67 of those days settled from Aug 24, 2026 to Oct 29, 2026.
If a rule has an edge on San Francisco's daily temperatures, an agent trading it on paper against the live KXHIGHTSFO book at Kalshi's real fees should make money. If it loses, the rule is wrong, however good it sounds. The settled record is the test, and this page is the record.
This is not investment advice. The agent below trades paper contracts, five at a time; its positions exist to benchmark one rule on KXHIGHTSFO, not to recommend it.
From a rule to a record
A backtest of a San Francisco temperature rule tells you what it would have done against prices already known. This page wants the other thing: how the marine-layer idea fares against the KXHIGHTSFO book as it stands, each day at 10:00 AM Pacific, filled at the ask, charged Kalshi's fee (about 1.6¢ a contract at 38¢), and settled when the CLISFO report says so. So the San Francisco agent runs on Windmill like any user's agent, and each bet it places on KXHIGHTSFO is written here as it settles, wins and losses alike.
How the agent works
The agent is the rule below in plain English, on Claude Haiku 5.5, scheduled once a day, at 10:00 AM Pacific. It builds its record in four steps.
1. Read the airport's observations
Every day at 10:00 AM Pacific, it reads the latest KSFO observation on api.weather.gov (/stations/KSFO/observations/latest), then reads today's KXHIGHTSFO ladder, bracket by bracket, with the live ask on each. A KXHIGHTSFO day in the facts below had 6 brackets, listed about 42 hours before the ladder closes at 1:00 AM Pacific time.
2. Filter for the setup
It places nothing unless both of these hold:
- it reports a broken or overcast cloud layer (BKN or OVC) based at 2,000 ft (610 m) or lower
- its ask is 15–60¢
Why this setup: SFO's high fell into the bottom open-ended bracket on 10 of the 67 days below and into the top one on 5; the rule buys that cool tail only when the 10 AM observation reports a low cloud deck over the airport.
3. Size and place
It buys 5 YES on today's lowest KXHIGHTSFO bracket ("X° or below"), on paper against the live KXHIGHTSFO book: a paper order fills only against what the book shows at that price. At about 38¢ a contract, Kalshi's taker fee at KXHIGHTSFO's settings (fee type "quadratic", multiplier 1) is about 1.6¢; the under 40¢ favorites in the price table below paid 1.5¢ on average. So the five contracts cost about $1.98 all in, and pay $5.00 if they win.
4. Hold to settlement and record it
Every position is held until Kalshi settles the day on San Francisco International Airport's official reading, the National Weather Service report CLISFO as The Weather Company reports it, a median 6.2 hours after the ladder closes. The price paid, the fee, the result and the net go into the record below as each bet settles. Most of the daily runs end with no order, and the agent's log keeps those too.
The record: October 30, 2026
Started October 28, 2026; no settled bets yet.
| Metric | Value |
|---|---|
| Started | Oct 28, 2026, 5:48 PM PDT |
| Bets settled | 0 |
| Bets open | 0 |
| Contracts | 0 |
| Won | 0 |
| Net after fees | — |
| Per contract | — |
Nothing is read into the record before thirty settled bets.
It runs this page's starter rule, word for word:
“Every day at 10:00 AM Pacific, read the latest KSFO observation on api.weather.gov (/stations/KSFO/observations/latest): if it reports a broken or overcast cloud layer (BKN or OVC) based at 2,000 ft (610 m) or lower, buy 5 YES on today's lowest KXHIGHTSFO bracket ("X° or below") if its ask is 15–60¢. Otherwise no order. Hold to settlement.”
The market the rule is betting into
Kalshi's API listed 67 settled San Francisco days, from Aug 24, 2026 to Oct 29, 2026: 402 brackets, 6 a day in the median, of which 67 won. The official highs ran from 63°F (Thu, Oct 22) to 94°F (Wed, Sep 9), with a median of 72°F, and on 15 of the 67 days the winner was one of the two open-ended brackets at the ends of the ladder. A median day traded 38,021 contracts across its brackets over the last 7 days.
Each day's ladder was listed about 42 hours before it closed, closed at 1:00 AM Pacific time after the day it is about, and settled a median 6.2 hours after the close, once the official reading was in. Trading runs through the afternoon, while the high is still being set: a rule that buys late in the day knows more, and pays for it in the price.
San Francisco's official highs
The ten newest days:
| Day | Official high | Winning bracket | Brackets | Contracts traded |
|---|---|---|---|---|
| Wed, Oct 28 | 69°F | 69° to 70° | 6 | 31,679 |
| Tue, Oct 27 | 66°F | 66° to 67° | 6 | 38,868 |
| Mon, Oct 26 | 68°F | 68° to 69° | 6 | 33,439 |
| Sun, Oct 25 | 74°F | 73° to 74° | 6 | 55,538 |
| Sat, Oct 24 | 74°F | 74° to 75° | 6 | 51,598 |
| Fri, Oct 23 | 69°F | 69° to 70° | 6 | 38,021 |
| Thu, Oct 22 | 63°F | 63° to 64° | 6 | 35,332 |
| Wed, Oct 21 | 65°F | 65° to 66° | 6 | 57,846 |
| Tue, Oct 20 | 68°F | 68° to 69° | 6 | 37,696 |
| Mon, Oct 19 | 65°F | 65° to 66° | 6 | 72,783 |
The daily low (KXLOWTSFO)
Kalshi also lists San Francisco's daily low as its own series, KXLOWTSFO, on the same station. It settled 67 days from Sun, Aug 23 to Wed, Oct 28, with official lows from 50°F to 66°F. A low is often set in the early morning, so its ladder is a different question from the high's, on the same report.
| Day | Official low | Winning bracket | Brackets | Contracts traded |
|---|---|---|---|---|
| Wed, Oct 28 | 51°F | 51° to 52° | 6 | 2,688 |
| Tue, Oct 27 | 55°F | 55° to 56° | 6 | 2,278 |
| Mon, Oct 26 | 55°F | 54° to 55° | 6 | 10,970 |
| Sun, Oct 25 | 51°F | 51° to 52° | 6 | 5,769 |
| Sat, Oct 24 | 51°F | 50° to 51° | 6 | 4,172 |
| Fri, Oct 23 | 56°F | 56° to 57° | 6 | 4,586 |
| Thu, Oct 22 | 58°F | 58° to 59° | 6 | 4,702 |
| Wed, Oct 21 | 60°F | 59° or above | 6 | 6,533 |
| Tue, Oct 20 | 55°F | 54° to 55° | 6 | 9,036 |
| Mon, Oct 19 | 56°F | 56° to 57° | 6 | 1,929 |
How the 1 PM favorite did
For each of the 48 newest days up to Oct 29, 2026, we read Kalshi's quote 12 hours before the close and took the favorite, the bracket priced highest, at its ask. 48 had a quote at that moment, and the favorite won 29 of them. Breakeven is the price plus Kalshi's taker fee, as a share of the $1 a winning contract pays.
| Favorite's price | Days | Won | Win rate | 95% range | Breakeven after fee | Read |
|---|---|---|---|---|---|---|
| under 40¢ | 4 | 2 | 50% | 15%–85% | 34.0% | inside noise |
| 40–59¢ | 21 | 10 | 48% | 28%–68% | 50.0% | inside noise |
| 60–79¢ | 18 | 12 | 67% | 44%–84% | 71.5% | inside noise |
| 80–99¢ | 5 | 5 | 100% | 57%–100% | 89.1% | inside noise |
Three notes on that table. The under 40¢ band has the widest gap between win rate and breakeven, 50% against 34.0%, and at 4 days its interval runs from 15% to 85%, which includes breakeven. Two of the four bands fell short of breakeven, the 60–79¢ band by the most: 67% against 71.5%. And every band's interval includes breakeven, which is why the last column reads the same four times. In our read of Kalshi's prices, the San Francisco favorite 12 hours before the close is priced about right. Nothing on this page says a buyer of the favorite has an edge.
The rule under test pays 15–60¢ a contract, which puts it in the under 40¢, 40–59¢ and 60–79¢ rows: there the favorite won 24 of 43 days, against breakevens of 34.0%, 50.0% and 71.5%. The rule's own conditions are what the record above tests; these rows are only the market's baseline at its price.
Kalshi's rules, in Kalshi's words
This is the rule of the market that was open (KXHIGHTSFO-26OCT30-T69) when we read Kalshi's API on October 30, 2026, quoted from Kalshi; the series and its full rules are on Kalshi's site. The day and the bracket's bounds change with every market:
“If the maximum temperature recorded at San Francisco (CLISFO) for Oct 30, 2026, is greater than 69° fahrenheit according to The Weather Company, then the market resolves to Yes.”
Kalshi adds, in the same market's rules:
“Not all weather data is the same. While checking a source like AccuWeather or Google Weather may help guide your decision, the official and final value used to determine this market is the maximum/minimum temperature as reported by the Weather Company.”
The series names The Weather Company as its settlement source. Kalshi lists the series with the fee type "quadratic" at a multiplier of 1: a taker pays 1.8¢ a contract at 50¢ before rounding, less toward either end, and a resting order that fills later pays nothing. The fee calculator works out the fee and the breakeven for any price.
The series ticker is KXHIGHTSFO, with a T that the Los Angeles and Austin tickers don't have, and its rules name "San Francisco (CLISFO)": the National Weather Service report headed "The San Francisco Airport climate summary", not a downtown reading. (NWS Bay Area, climate report CLISFO, checked October 28, 2026.)
What success looks like
A positive net per contract after Kalshi's fees over thirty settled bets, with the confidence interval clear of zero, would be a result.
A rule that only matches its price is not one. A contract bought near 38¢ that wins as often as that price says, 38 times in a hundred, loses about 1.6¢ a contract to the fee alone (the under 40¢ favorites in the price table paid 1.5¢), so the line to beat on KXHIGHTSFO is a win rate of about 39.6%, not 38%. Each win at that price nets about 60.4¢ a contract after the fee and each loss costs 39.6¢, so one win covers 1.5 losses.
The rule runs once a day, so thirty settled bets take at least 30 days, and longer when the setup is rare. If the record climbs, the marine-layer idea holds at these prices. If it falls, the idea goes, and the record stays on this page.
Follow along
- This page refreshes every hour from Kalshi's settled data and the agent's own log.
- Copy the San Francisco agent: the button below opens the builder with this KXHIGHTSFO rule, to run as written on paper under your own account, or with your own numbers in place of 15–60¢.
- The fee calculator shows the fee and the breakeven at any price on KXHIGHTSFO.
- The 90-strategy test is the longer version of this exercise: about 90 rules and 4,200 paper bets across ten days.
- The Kalshi markets hub lists the other weather cities and every other market page.
Questions
- What does Kalshi's San Francisco high temperature market settle on?
- On the day's maximum temperature at San Francisco International Airport, as The Weather Company reports it; the rules name the station SFO report (CLISFO). Exactly one bracket of the day's ladder wins.
- What is the fee at 50¢?
- A taker pays 1.8¢ a contract before rounding at 50¢ on this series (fee type "quadratic", multiplier 1), less toward either end. The fee calculator gives the fee and breakeven at any price.
- Is a bot here profitable?
- Nothing on this page says so. The favorite 12 hours before the close won 29 of 48 days in our read of Kalshi's prices, and the table shows each price band against its breakeven: 4 of its 4 bands are inside noise. Run your own rule on paper to see what it does, before you risk money.
- Paper or live?
- Agents trade on paper unless you build them live. Paper orders fill against Kalshi's live order book with Kalshi's fees and settle when the real market settles. To trade real money, connect your own Kalshi API key and build a live agent; your money stays on your Kalshi account.
Other market pages: Los Angeles · Austin · Denver · Philadelphia · Miami · NYC · Chicago · all Kalshi markets