Chris Dodds

Tech Person, Writer, Misc.

Prediction markets are casinos (I checked)

I kept seeing people talk about making bank on Kalshi. It’s a prediction market: you buy contracts on whether something will happen (temperature, TSA numbers, whatever). “I’m just trading on information,” etc. I wanted to see what was actually there, so I had Claude Code build a bot. It also helped with a good deal of the math because I had a football coach for a high school math teacher.

What do?

First, weather, which for the record is a really stupid thing to bet on. Kalshi has temperature markets. Will NYC hit 45°F or above tomorrow, will Austin stay below 85°F, that kind of thing. I pulled GFS (NOAA’s Global Forecast System, via NCEP) weather model runs, bias-corrected against NWS (National Weather Service) history per city, turned that into probabilities for each temperature range, and compared to what the market was charging. When the market overpriced “it will hit this range” (YES) I bought “it won’t” (NO). Pay 40–60¢, collect $1 if the temperature stays outside that range.

First live run was a bloodbath. I (accidentally) had YES and NO both enabled. Twenty trades. 17 YES, 3 NO. The YES trades all lost. The NO trades won. Portfolio went $50 → $16. I turned off YES and re-ran a backtest on 678 past days where we know what actually happened. YES win rate was 12–25% no matter how I set the “minimum edge” cutoff. NO on the same data: 86% win rate, which was too good to be true (can’t trust backtest), but was at least a signal. The model doesn’t predict which bracket will hit but it’s decent at spotting brackets the market overprices. So the only viable strategy was NO-only.

Even then the margins are thin. I added filters:

  • No same-day trading. By then the forecast is stale and you’re betting against thermometers that already know the answer. Win rate was ~80% same-day vs 88% day-ahead.
  • Skip temperature ranges within 3°F of where the model says the high will land (model is worst there)
  • Blacklist cities where the ensemble is garbage. LA marine layer, Miami highs (weird cloud stuff, I think)

When NWS forecast and GFS disagreed by more than 5°F I skipped the trade. With all that I’m currently at 60% win rate live on NO, a few bucks a week on a $50 bankroll. The filters are the edge. More conservative = more profitable per trade.

TSA any better?

While the weather bot was collecting data, I kicked off an investigation of TSA checkpoint volumes, because that is yet another stupid thing you can bet on. Will average daily passengers be above 2.2M, 2.3M, etc. I scraped TSA.gov (daily checkpoint numbers) and built a model with:

  • weighted same-day-of-week rolling average
  • year-over-year anchor
  • holiday filtering

I also added an LLM layer to check for near-term events, but it can only widen uncertainty, never shift the mean. I didn’t play around with it a ton once I realized that the only reasonable trades were going to happen after most of the week’s passenger numbers were reported, and that would be expensive, because everyone would buy at the same time (when those numbers hit).

The other TSA bot guy (Ferraiolo) was pretty pessimistic about this market and that proved out. Not enough people on the other side of the trade. You can only put maybe $20/week in before you’re moving the market. Same structural stuff everywhere: cheap “lottery ticket” contracts lose, pricier ones do a bit better; posting your own price (maker) beats taking someone else’s (taker); fees eat longshots alive.

The house always wins

I looked at other Kalshi categories too. Gas, CPI (consumer price index), whatever. There’s a University College Dublin analysis (Whelan et al., 300K+ contracts) that finds the same thing everywhere. Cheap contracts (under 10¢) lose 60%+ of invested money on average (i.e. capital loss, not just loss rate per trade). Contracts above 50¢ earn small positive returns. So the “edge” isn’t magic. It’s betting on the likely outcome, posting your price and waiting, and not chasing lottery tickets.

The dangerous part is the framing. Prediction markets get sold as information aggregation, “put your money where your mouth is,” sounding rational and humble about uncertainty. That makes it sound like the smart or well-informed win. They don’t. The structure wins. The people buying cheap YES contracts (the longshots, the “maybe this time” bets) are the ones losing 60%+ of their money to fees and stacked odds. People most at risk are those who think they have an edge because they follow the news or did some research. Even my little experiment here probably has an expiration date. I’m no quant, but neither are the people posting about their “earnings.” Unless they got in super early while the market was still flapping around, it’s just survivorship bias.

Because it’s dressed up as trading or forecasting instead of gambling, people who’d never sit down at a blackjack table (a well-played hand has better odds than this) will sink money in thinking they’re doing something rational. It’s a casino with a think-tank aesthetic.

I got the weather bot profitable-ish by turning off half the strategy, blacklisting cities, and adding a pile of filters. It’ll probably make a little money at a glacial pace. If you’re buying YES on the cheap longshot contracts, that’s just straight-up gambling. It was fun to build though and I learned some stat and weather stuff.

Won the 2026 Miami University Press Novella Prize

Remember that exciting thing I couldn’t discuss? It’s official: my novella won the 2026 Miami University Press Novella Prize.

I did a thing!

I’ll share more details as they emerge - cover, release date, all that. For now: this is real, it’s happening, and I’m equal parts thrilled and terrified about people actually reading this thing.

Big thanks to the Miami University Press crew for picking up my odd creature and giving it a home.

More soon. Lots to learn.

Publishing updates

My publishing “system” is picking up steam. First, let’s revisit November:

  • 7 pieces: 1 novella, 3 short creative nonfiction essays, 3 short stories
  • 36 total submissions
  • 14 rejections
  • 2 of those were personalized, the rest were form.
  • 1 of the rejects made it to the second round

Has turned into:

  • 12 pieces: 1 novella, 3 short creative nonfiction essays, 8 short stories
  • 80 total submissions
  • 43 rejections
  • 6 personalized rejections
  • 1 short list
  • 1 long list
  • 1 acceptance
  • 1 thing I can’t talk about yet, but is very exciting.

“This Did Not Matter” didn’t make the short list for Fractured Lit’s Elsewhere Prize, which was a bummer, but expected. I’m shopping it to some more horror/dark-fantasy-focused venues.

The acceptance listed above is one of my weirder pieces - about dissociation and giving up agency. Also a little spicy. It got picked up by BULL. I’ll link to it once it’s live. It got a very binary reaction on CritiqueCircle, which probably means it’s good. :D

The exciting thing which cannot be discussed yet was a big surprise. Soon, my precious. Soon.

Regarding the end-to-end process, I’m finding that:

  • I’m gravitating to a form that’s more than flash, less than short story (1000-2000 words). Some places call it short-short, but most call it flash. Whatever.

  • My general familiarity with mags/journals is maturing and I’ve developed a better sense of fit based on editorial theme. Fewer wasted shots.

  • This is pretty fun. Even if some parts are a slog.

Longlisted for Fractured Lit's 2025 Elsewhere Prize

The public announcement is up. I can talk about it now. One of my fiction pieces, “This Did Not Matter,” has been longlisted for Fractured Lit’s Elsewhere prize.

Visible traction. Huzzah!

I should find out in the next week or two if I make the shortlist and/or win. I’m honestly happy with just being longlisted. The piece is more accessible than most of my writing, but lacks the human-focus and interiority of past winners, so it’s probably at the edge of their taste-band. It’s cold mythic dread, kinda McCarthic. An exhausted djinn destroys the last inhabitants of a dying desert town, then seeks its own end. Rainbows and unicorns…

We’ll see what happens. I’ll share it when I can.

Classic holiday cartoons

Holiday nostalgia isn’t really a thing for me. Maybe it’ll hit me when my kids are older, but right now I just can’t match my wife’s enthusiasm for all the holiday trappings. A chunk of my grinchiness comes from the “classic” holiday cartoons that refuse to die. I disliked them as a kid. I hate them now.

Rudolph There are research papers about how shitty this story is. “They Wouldn’t Let Poor Rudolph Play in Any Reindeer Games”: Individuals on the Autism Spectrum as Social Misfits in Organisations is a great example. The lesson of Rudolph is that difference is only tolerated if it becomes economically useful.

Frosty the Snowman Sentient being melts to death, kids cry. Magician just wants his goddamn hat back.

Santa Claus is Comin’ to Town Orphan overcomes authoritarian regime through capitalism.

The Year Without a Santa Clause Santa is sick of this shit, but gets guilt-tripped into going back to work.

The Little Drummer Boy Kid’s parents murdered. He’s rightfully upset. Learns to love through providing free labor.

How the Grinch Stole Christmas A boundary-respecting introvert is forcibly rehabilitated.

A Charlie Brown Christmas Mediocre child with no growth arc gets treated shitty by his shitty friends. They feel bad and sing at him.

The pattern: traumatized or marginalized characters prove their worth through service, earn conditional acceptance from the group that rejected them, everyone cries. We cargo cult this shit forward without examining whether it’s actually good.

Meanwhile:

A Garfield Christmas Garfield goes to the farm, is cynical. Genuine affection breaks through. Garfield gives Grandma a letter from her dead husband. Nobody earns anything. Nobody proves their worth. Just warmth. I don’t even like Garfield (Garfield Minus Garfield is a treat though) and I like this one.

A Claymation Christmas Celebration Anthropomorphic church bells at Notre Dame strike their own heads with mallets to perform Carol of the Bells. One keeps fucking up, loses his mallet. The conductor (Quasimodo) uses a slingshot. Dinosaur hosts argue about wassailing vs waffling. The California Raisins do Motown carols.

Pure creative joy. No trauma arc. No one has to “learn” anything to be tolerated. Just weird little bells smashing themselves in the face. Impossible to find in-full online.

These don’t get the same traction. Can’t manufacture catharsis. Nobody quotes them at holiday parties. These are the ones I want my kids to remember anyway.