I've tried every habit tracker. Streaks, check boxes, heatmaps, gentle nudges. They all work for about two weeks before I start lying to myself — "I'll double up tomorrow" — and the whole thing collapses. The problem isn't that I don't know what I should be doing. It's that nothing actually hurts when I stop.
So at about 10 PM on a Tuesday, I asked a different question: what if missing a habit felt like watching your portfolio crater in real time?
The core insight
Financial markets are psychologically brutal in a way no habit app has ever matched. A red day on your brokerage dashboard activates a part of your brain that a crossed-out checkbox simply cannot reach. Loss aversion is a documented cognitive bias — and I wanted to weaponize it for good.
The insight was simple: model a person's consistency as a stock price. Every completed habit is a buy signal. Every missed day is a market correction. Your "personal stock" opens at IPO price on day one and discovers its value based entirely on whether you show up.
I called the concept $YOU.
How the price engine works
The trickiest part was the pricing model. I didn't want it to be purely additive (boring) or punishingly volatile (demoralizing). I landed on a weighted composite with streak multipliers:
function calculateDailyDelta(habits: Habit[], completions: boolean[]): number {
const BASE_MOVE = 2.5; // percent per habit
return habits.reduce((delta, habit, i) => {
const streakBonus = Math.log1p(habit.streak) * 0.4;
const direction = completions[i] ? 1 : -1.8; // asymmetric: losses hurt more
return delta + direction * (habit.weight * BASE_MOVE + streakBonus);
}, 0);
}The asymmetry (-1.8 vs +1) is intentional. In real markets, drawdowns are faster than recoveries. It mirrors how habits actually work — a 22-day running streak takes weeks to build, and you can erase your price momentum in three lazy days. That felt honest.
Streak bonuses use log1p so early streaks feel exciting but you don't just rocket to infinity. Day 30 gives you a meaningful edge; day 200 gives a smaller incremental advantage. Diminishing returns, like most things in life.
The social layer: friend investors
The feature I almost cut — and didn't — was "friend investors." Instead of a real money mechanic, friends send encouragement that renders as buy orders on your chart's activity feed.
🐂 @alex_dev bought 50 shares of $MAYA — "Morning runs are hard. Keep going."It sounds gimmicky. But when I showed early mockups to people, this was the thing that made them go quiet for a second. Knowing that someone is watching your chart creates accountability in a way that sharing a streak screenshot never does. Their attention is the investment. The feed just makes it visible.
What surprised me
1. The empty state matters more than everything else.
I spent an embarrassing amount of time on what happens before you add a single habit. A flatlined chart labeled $YOU. A badge that says IPO PENDING. Ghost investor silhouettes with the caption: "3 friends are watching. Don't disappoint them." That screen sets the whole emotional contract of the product. Get it wrong and nobody adds their first habit.
2. The Bloomberg Terminal aesthetic is load-bearing.
I went dark (#0D0F14 background), monospace fonts for every number, bull green (#00D4AA) and bear red (#FF4757). Not as decoration — as signal. When the UI reads like a trading terminal, your brain subconsciously treats your habits like assets. The visual language is doing behavioral work. Swap it for a pastel wellness theme and the whole thing collapses into just another app.
What I'd do next
The MVP recalculates at end of day. I want intraday movement: complete your morning run at 6 AM and watch your price tick up immediately. The dopamine hit should be immediate, not deferred.
I also want earnings season — a weekly summary that renders like an actual earnings report. Did $YOU beat analyst expectations (your past-self's projected streak)? That framing turns weekly review from a chore into something you actually want to open.
The harder thing I'm sitting with: how do you prevent loss aversion from becoming genuinely unhealthy? I added a concept for "trading halts" — if your price drops below a floor, the chart locks and shows a recovery message instead of a crater. I'm not sure that's the right answer, but it's the start of one.
One night. One weird idea. One chart that made me actually go for a run the next morning because I didn't want to see it drop.
If you've ever rage-kept a streak going just to protect a number, you already understand this product.
Drop me a line if you build a streak worth investing in.