Chris Dodds

Staff engineer. Writer. I poke at things until they make sense.

Back piece done

I wrote a while back about the back piece I’ve been working on. I was ready to be finished at the time, and wasn’t learning anything more from the discomfort. That held true.

It’s done now, minus the final round of healing. August 2024 to February 2026. Sixty-something hours sitting. The last eight were a slog going over scar tissue and the thin skin of my lower spine. Ladies who get mastectomy cover ups must be made of much stronger stuff than me. I earned this ink though. The little voice in my head that undercuts compliments and warns me I’m flying too close to the sun can’t win this one.

Progression, from first session to last (missing a couple of pics I can’t find at the moment):

Back piece session 1, Aug 2024 Back piece session 2, Sep 2024 Back piece session 3, Oct 2024 Back piece session 4, Nov 2024 Back piece session 5, Jan 2025 Back piece session 6, Mar 2025 Back piece session 7, Apr 2025 Back piece session 8, Jun 2025 Back piece session 9, Jul 2025 Back piece session 10, Sep 2025 Back piece session 11, Oct 2025 Back piece session 12, Jan 2026 Back piece finished, Feb 2026

It’ll settle down a bit once it’s healed. I have a small, silly piece scheduled next month, but nothing more on the books after that. My left arm is probably next though—thinking geometric + organic (leaves, fronds, something like that). We’ll see.

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, “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. 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.