I'm a Stock Trader

How we built this — and how we landed on what we run today

The honest version

This is an experiment, run in the open. That promise only means something if we show our work — including the parts that didn’t go to plan. Here’s the whole path, start to finish, in plain language.

Where we started

The idea was simple to say and hard to do: build an automated system that picks a small number of stock trades and, over time, does better than just buying the S&P 500 and holding it. We didn’t want one magic indicator. We built three separate “engines,” each looking for a different kind of opportunity:

Every signal the system produced was meant to be tradeable, transparent, and graded against the same benchmark: the S&P 500.

The part we’d rather skip — but won’t

When we first put the system through its paces, the early trades lost. Not one or two — the first handful went against us, in a row. This was private testing, with nobody following along yet — but it stung all the same, and it turned out to be the most useful thing that could have happened, because it forced us to stop admiring the design and actually take it apart.

A losing streak early on is either a reason to quit or a reason to dig. We dug.

What we found when we dug in

Three problems, and they compounded on each other.

1. The list of stocks was far too small

We were only looking at 66 hand-picked, recognizable names. The original reason was “keep it familiar and keep costs down” — but that reasoning didn’t hold up. Our data plan is flat-rate; scanning thousands of stocks costs the same as scanning sixty. Worse, a tiny list quietly broke two of our three engines. The Relative Strength engine ranks stocks against the rest of the field — and the “strongest of 66” is close to meaningless. The Breakout engine needs a deep pool to find clean setups, and in a three-year test on the small list it fired zero times.

2. One engine was quietly winning every day

The three engines scored opportunities on different scales, and we were simply taking the highest score. But Breakout ran “hot” — its numbers were systematically higher — so it won almost every day and the other two barely got a turn. We were running three engines but effectively listening to one. We fixed the scoring so the three are compared on a level playing field.

3. We were using the same tool in every kind of market

When we finally tested the engines across different market conditions, a clear pattern showed up: each engine is good in a specific environment and poor in others. Mean Reversion does its best work in shaky, falling markets. Relative Strength wants a healthy uptrend. Running all three full-blast regardless of the weather guaranteed we’d use the wrong tool a good share of the time.

The rebuild

So we rebuilt the front half of the system as a funnel — wide at the top, narrow at the bottom:

The insight that changed everything

Even with the rebuild, one number kept nagging: we were still trailing the S&P 500. The reason wasn’t the trades — it was the cash sitting between trades. A careful system only holds a few positions at a time, so most of the money was sitting idle, earning nothing, while the market marched higher. In a rising market, idle cash is a slow leak.

Our edge wasn’t broken. Our idle cash was the problem.

The fix is the piece we’re proudest of for being so boring: when we’re not in a trade, the money isn’t in cash — it’s parked in the S&P 500 itself. When an engine finds something worth doing, we sell just enough of that parked position to fund the new trade. When the trade closes, the money goes back to riding the market. We stay invested by default and step out only for a specific reason.

How we proved it — before risking anything

We have a rule: an engine doesn’t go live just because it looks good in the past. Anyone can find a strategy that would have worked if they’re allowed to peek at the answers. So we tune each engine on an early slice of history and then grade it on a later slice it has never seen. If it can’t stay profitable on data it wasn’t built around, it doesn’t earn a seat.

On that held-out test, here’s how the engines landed:

With idle cash parked in the market and the engines routed by condition, the rebuilt system backtests to about +26.4% a year versus roughly +21.6% for buying and holding the S&P 500 over the same stretch — a difference of about +4.8% a year. You can see the year-by-year on our backtested results page.

Where we landed — and what we’re honest about

What we run today is the system above: a deep universe, a daily funnel that narrows to what’s in play, engines routed by the market’s condition, idle cash kept invested in the S&P 500, and a hard rule that nothing goes live until it proves itself on data it never saw.

And the honest caveats, because this is an experiment and not a sales pitch:

That’s the whole story so far. If you want to follow along, the backtested results show how the system grades out, and every signal we publish is the same system, working in the open.

About this page. The performance figures referenced here are backtested and hypothetical — they show what our rebuilt system would have done on historical data, not trades we actually placed. Backtests benefit from hindsight and from using today’s surviving companies. When we trade, it is in a paper (simulated) account, not with real money. Nothing on this page is investment advice or a recommendation to buy or sell any security. Past and hypothetical performance does not guarantee future results.