Two books, one operator. A concentrated long-term portfolio that compounds, and a swing-trading book that runs a defined playbook. Each has its own account, its own rules, and its own measure of whether it's working.
Preserve capital, then compound it at a high rate over a very long time. Everything else on this page is a means to that.
| Annual return | 10 years | 20 years |
|---|---|---|
| 10% the index | 2.6× | 6.7× |
| 15% | 4.0× | 16× |
| 20% | 6.2× | 38× |
| 25% | 9.3× | 87× |
Twice the return isn't twice the money. Over twenty years, 20% a year ends up with almost six times what the index does. That's why the two rules that matter most are: don't take a permanent loss, and don't interrupt the compounding.
Patience and aggression need separate accounts, not a compromise. Blend them and you get a mediocre version of each: the long-term holder who trades around his best position, or the trader who marries a loser. Separate accounts keep each one honest.
Invest in where a business is going, not where it is. Hold the core for years, and trade around it.
The biggest wins come from understanding a business's trajectory early and having the patience to hold through every scare along the way. Concentration is the honest expression of conviction. Forty positions means you don't believe in any of them. A one-person fund with no clients and no redemptions can do what most institutions can't: sit in a few great businesses and wait.
A position only gets big if the business passes at least five of these seven:
| Tier | Size | Requirement |
|---|---|---|
| Starter | 0.5–2% | New idea, still doing the work. |
| Building | 2–5% | Thesis confirming. Passes 3–4 criteria. |
| Core | 5–15% | High conviction. Passes 5 criteria. |
| Max | 15–35% | Exceptional. Passes 6–7 criteria. |
Hard ceiling of 35% in any one name. Conviction alone doesn't earn size. The business has to earn it.
Most rules say when not to buy. This one says when to buy a lot. All three conditions have to be true:
Google at $90 in late 2022, when the consensus was that AI had killed search. Chipotle in 2016, when the brand was supposedly finished. That's when the cash gets used.
Stocks have moved the same way for a century. A catalyst puts a name in play, momentum carries it, and a few repeatable patterns mark the entries.
The edge is being in the stocks that are actually moving and trading the pattern, not the story. The win rate runs 25–30%. It works because losers are cut at one unit of risk while winners run five to twenty. The method follows Kristjan Kullamägi's published setups, rebuilt with my own scanners and rules.
Every trade has two layers. The cause is why the stock is moving and whether that reason is real. The pattern decides exactly where to enter, where the stop goes, and when to get out.
| Real (durable) | Hype (fades) |
|---|---|
| Earnings beat with raised guidance | Move with no fundamental change |
| Analysts raise estimates after the event | Vague announcement, no numbers |
| Signed contract, named customer | Theme only, no revenue attached |
| Sector peers move with it | Single stock, no group confirmation |
| Neglected before the news | Already ran into the event |
A real catalyst on a neglected stock is an episodic pivot. A continuation of a prior real move is a breakout. A vertical move with nothing behind it is a short.
A strong stock rests, then resumes.
A surprise that reprices a company.
A rubber band stretched too far.
These aren't three separate ideas. They're snapshots of one cycle a leader goes through again and again: episodic pivot, first leg, flag, breakout, second leg, flag, climax, and finally a parabolic top. The scanner's job each night is to place every leader somewhere on that cycle. The first and second bases pay best. By the third, most of the move is behind it.
Market, then groups, then leaders, then setups, then risk, then entry. The strongest stocks cluster in the strongest groups.
| Filter | Threshold |
|---|---|
| Universe | The 2,500 most liquid US stocks, re-ranked weekly |
| Liquidity | $30M+ average daily dollar volume, price $5+ |
| Range | Average daily range of 3.5% or more |
| Momentum | Top ~7% on blended 1-, 3- and 6-month returns |
| Group | Ranked within its industry; peers must confirm |
| Market regime | Risk scales down in a weak tape; longs can turn off entirely |
Every swing trade is entered the same way: a buy-stop at the trigger price with the stop-loss attached to the same order.
Most trading damage isn't bad analysis. It's execution: buying the extended candle instead of the level, cancelling the stop right before it fires, and selling winners early to feel better. Willpower doesn't fix that at 3pm. Order types do.
| The mistake | What makes it impossible |
|---|---|
| Chasing | A buy-stop can't fill below the level. If the stock never gets there, there's no trade. |
| No stop | The stop goes live the instant the entry fills. There's never a position without one. |
| Cutting winners | A trailing moving-average stop does the selling. The first close below it ends the trade. |
| Rule | Limit |
|---|---|
| Risk per trade | 0.25–1% of the swing book, rarely more |
| Stop width | Never wider than the stock's average daily range |
| Single position | 30% of the swing book, 10–20% typical |
| Bad day | Down 3%: done for the day |
| Bad week | Down 8%: stop and write a post-mortem |
| Drawdown | 10% cuts size in half · 20% full stop · 30% shuts the strategy down |
| Each setup | Negative expectancy after 50 trades and it's retired |
Every tool I use, I built myself with AI. One person now does what used to take a research desk.
None of it is for sale as signals. It exists to remove every unforced error between an idea and the order ticket.