Bet A Day: An App for Practicing Decisions Under Uncertainty

Over Christmas break, I also built an iOS app called Bet A Day. The pitch is simple: make one stock market prediction per day, then reflect on whether your decision was good or bad, independent of whether you won or lost.

It’s not a trading app. No real money changes hands. The stock market is just a convenient source of daily outcomes with enough uncertainty to make things interesting.

The Problem I Wanted to Solve

I’ve written before about resulting, the tendency to judge decisions by their outcomes rather than their quality at the time they were made. It’s one of those cognitive biases that sounds easy to avoid in theory but is surprisingly hard to escape in practice.

The issue is that we rarely get clean feedback on our decisions. When something works out, we assume we were smart. When it doesn’t, we assume we were unlucky or that the situation was uniquely difficult. We rewrite history in our heads to make our past selves look more reasonable than they were.

Decision journals are one way to combat this. Writing down your reasoning before you know the outcome creates a paper trail that prevents hindsight bias from rewriting history. But keeping a decision journal requires discipline, and most of the decisions we make don’t have clean, measurable outcomes.

I wanted something that would force me to practice the full loop: make a prediction, commit to it, see the outcome, then honestly assess whether my reasoning was sound.

How Bet A Day Works

The app has one constraint that makes everything else work: you can only make one bet per day.

Bet A Day app showing a pending PLTR long bet before market open with countdown timerA pending bet before market open. You can edit until the bell rings.

Before market open, you pick a stock ticker, decide whether you’re going long or short, and write down your reasoning. Why do you think this stock will go up or down today? Once the market opens at 9:30 AM ET, your bet is locked. No edits, no second-guessing.

Bet A Day app showing an active PLTR bet down 9.51% during market hoursDuring market hours, you watch the position play out. This one isn't going well.

During market hours, you can watch the position. Green means you’re winning, red means you’re losing. At 4:00 PM, the market closes and your result is final.

Then comes the important part: retrospection.

The Four Quadrants

After each bet resolves, you tag it with one of four labels:

Bet A Day retrospective analysis screen showing decision quality tags and analysis text fieldThe retrospective screen. Was this a good decision, bad decision, lucky win, or unlucky loss?

Good Decision - Your reasoning was sound. You gathered appropriate information, weighted risks properly, and made a defensible call. The outcome doesn’t matter for this assessment.

Bad Decision - You traded emotionally, ignored information you should have considered, or made a call you can’t justify in hindsight. Again, outcome doesn’t matter.

Lucky Win - You won, but you know your reasoning was weak. The market moved your direction despite your analysis, not because of it.

Unlucky Loss - Your reasoning was solid, but the outcome went against you. These happen. A 60% edge still loses 40% of the time.

This is where the real learning happens. Most people have no trouble identifying bad decisions that lost money or good decisions that made money. The hard part is being honest about lucky wins and unlucky losses.

That lucky win where you bought NVDA on a hunch and it popped 5%? If you can’t articulate why that was a good decision independent of the outcome, it wasn’t. You just got bailed out by randomness.

Why the Stock Market?

The stock market has a few properties that make it useful for this exercise:

Daily resolution. You get a clear outcome every single day. No waiting months to find out if your decision was right.

Enough uncertainty to matter. Even with perfect analysis, daily stock movements have a huge uncertain component. This forces you to confront the difference between decision quality and outcomes.

Bet A Day track record screen showing cumulative performance chart and statisticsThe track record view. Hypothetical $1-per-bet account growth over time.

Quantifiable results. The app tracks your hypothetical P&L over time. If you’re actually developing an edge, it should show up in the numbers. If you’re not, that should be obvious too.

Bet A Day history showing list of past bets with tickers, directions, and outcomesEvery bet is logged with your original reasoning, so you can't rewrite history.

Forced commitment. Once the market opens, you can’t change your bet. This prevents the kind of wishy-washy retrospective editing we do with most decisions.

The point is practicing the skill of separating your analysis of a decision from your reaction to its outcome. The market is just a convenient training ground.

What I’m Watching For

After a few weeks of using the app, some patterns should emerge:

Am I actually developing an edge? The app tracks cumulative performance. If I’m consistently beating random chance over dozens of bets, that’s evidence my analysis has some value. If I’m hovering around zero or negative (likely), I should probably reflect on how I’m coming to these decisions.

Which types of bets work for me? I have theories about what setups I’m good at identifying. The data will tell me if those theories are true.

Am I being honest in my retrospections? This is the hard one. It’s tempting to tag every win as a good decision and every loss as unlucky. If my retrospection tags don’t correlate at all with my actual reasoning quality, I’m fooling myself.

This last point connects back to the distinction between data-driven and data-justified decisions. The app generates data about my decision-making. The question is whether I’ll use that data to actually improve, or just to construct a narrative where I’m already good at this.

The Uncomfortable Truth

The thing about practicing decisions under uncertainty is that you have to actually be uncertain. If you already know you’re going to win, there’s nothing to learn.

That means accepting that good process doesn’t guarantee good outcomes. It means being willing to look at a week where you lost money and honestly assess that some of those were good decisions. It means being willing to look at a week where you made money and admit that some of those were lucky wins you shouldn’t count on repeating.

Most of us hate this. We want our results to reflect our effort and skill. We want the universe to be fair in a way that makes our wins meaningful.

But decisions under uncertainty don’t work that way. Sometimes you do everything right and lose. Sometimes you do everything wrong and win. The skill is in improving your process over time, not in controlling any individual outcome.

That’s what Bet A Day is for: practicing the discipline of evaluating decisions honestly, outcome by outcome, until the habit becomes automatic.

Technical Notes

The app is built with SwiftUI and SwiftData, using Yahoo Finance for price data. Everything stays local on your device. I built it to work on my own resulting biases, but if you find that interesting too, it’s out here.