Live paper portfolio
RSI(14) mean reversion, long only
Across 763 S&P 500 and FTSE 350 companies, RSI was the only one of the four indicators to post a positive out-of-sample Sharpe ratio after costs (0.48). The other three are trend-following, and all three went negative net of what it cost to trade them. RSI still lost to buy & hold, which is why this portfolio publishes both side by side. It is being traded live because a rule that survived one honest test deserves a second one that cannot be re-run.
Read this before the numbers. The first 166 sessions, up to 24 August 2026, were reconstructed when the book was opened on 23 August 2026. They ran through the identical daily sequence — decide on the close, fill at the next open — so no future information touched any decision, but they were not published in advance. Everything from 24 August 2026 onward was recorded forward, one day at a time, and cannot be recomputed.
This is a paper portfolio. No real money is at risk, and nothing here is investment advice. Orders are decided on the close and filled at the next session’s open, paying 8 basis points per side — the same cost model as the research.
Read the exposure figure alongside the return. The portfolio finished 2.5% behind buy & hold while holding an average of just 33% of the book in the market. Matching a fully-invested benchmark from a third of the exposure is a different result from matching it fully invested — better on a risk-adjusted basis, and worse if what you want is compounding.
Track record
Portfolio value against buy & hold
Committed, not yet filled
Orders standing for the next open
Published before they execute. This is the part of a paper track record that cannot be constructed after the fact — whatever is listed here today either fills at tomorrow’s open or is withdrawn on the record.
No orders standing. The strategy is holding its current book into the next session — which for a mean-reversion rule that spends most of its time in cash is the normal state, not an omission.
Open positions
What the book holds right now
The book is entirely in cash. This strategy only holds a name while it is oversold, so flat is a position too.
Closed trades
Every completed round trip, with the reason it was taken
18 completed round trips, 14 of the 18 shown profitable. USD 595.97 paid in trading costs across the life of the book.
| Ticker | Opened | Closed | Entry | Exit | P&L | Return | Why it closed | Record |
|---|---|---|---|---|---|---|---|---|
| PEP | 2026-09-21 | 2026-10-19 | 129.65 | 130.88 | 172 | +0.8% | Closing position — RSI 54.6 — no oversold signal | reconstructed |
| HD | 2026-09-21 | 2026-10-16 | 301.00 | 309.66 | 597 | +2.7% | Closing position — RSI 59.2 — no oversold signal | reconstructed |
| MCD | 2026-09-24 | 2026-10-16 | 239.70 | 244.31 | 384 | +1.8% | Closing position — RSI 51.5 — no oversold signal | reconstructed |
| JNJ | 2026-10-06 | 2026-10-13 | 254.15 | 254.56 | 0 | +0.0% | Closing position — RSI 50.3 — no oversold signal | reconstructed |
| WMT | 2026-08-21 | 2026-09-15 | 103.69 | 108.61 | 993 | +4.6% | Closing position — RSI 52.8 — no oversold signal | reconstructed |
| WMT | 2026-06-01 | 2026-07-30 | 114.46 | 111.34 | -596 | -2.9% | Closing position — RSI 51.5 — no oversold signal | reconstructed |
| CVX | 2026-07-01 | 2026-07-14 | 163.35 | 181.17 | 2263 | +10.7% | Closing position — RSI 57.6 — no oversold signal | reconstructed |
| MSFT | 2026-06-26 | 2026-07-14 | 356.48 | 382.10 | 1477 | +7.0% | Closing position — RSI 51.0 — no oversold signal | reconstructed |
| MCD | 2026-05-11 | 2026-06-10 | 273.97 | 284.32 | 743 | +3.6% | Closing position — RSI 51.9 — no oversold signal | reconstructed |
| JNJ | 2026-04-22 | 2026-05-14 | 224.89 | 229.68 | 407 | +2.0% | Closing position — RSI 52.0 — no oversold signal | reconstructed |
| MCD | 2026-03-25 | 2026-04-20 | 307.97 | 310.05 | 101 | +0.5% | Closing position — RSI 50.2 — no oversold signal | reconstructed |
| PG | 2026-03-25 | 2026-04-20 | 141.61 | 143.89 | 288 | +1.5% | Closing position — RSI 51.4 — no oversold signal | reconstructed |
| MSFT | 2026-02-23 | 2026-04-14 | 393.41 | 386.35 | -384 | -1.9% | Closing position — RSI 51.5 — no oversold signal | reconstructed |
| HD | 2026-03-13 | 2026-04-10 | 339.15 | 338.50 | -71 | -0.4% | Closing position — RSI 50.8 — no oversold signal | reconstructed |
| META | 2026-03-27 | 2026-04-09 | 563.39 | 626.39 | 2110 | +11.0% | Closing position — RSI 53.3 — no oversold signal | reconstructed |
| GOOGL | 2026-03-27 | 2026-04-07 | 277.11 | 302.55 | 1448 | +9.0% | Closing position — RSI 51.0 — no oversold signal | reconstructed |
| AMZN | 2026-02-23 | 2026-03-05 | 208.10 | 215.98 | 716 | +3.6% | Closing position — RSI 51.7 — no oversold signal | reconstructed |
| UNH | 2026-02-23 | 2026-03-03 | 284.70 | 285.13 | -2 | -0.0% | Closing position — RSI 50.2 — no oversold signal | reconstructed |
Order log
Every order, when it was decided and when it was filled
37 orders filled — 19 buys and 18 sells. Every one was decided on a close and filled at the next open, never the same day. Buys outnumber sells because a position can be added to more than once and is then closed in a single sell, and because 0 positions are still open. All of them were reconstructed when the book was opened — no order has yet been filled in the period recorded forward, so none of this was published before it happened.
| Decided | Filled | Ticker | Side | Shares | Price (USD) | Cost (USD) | Why | Record |
|---|---|---|---|---|---|---|---|---|
| 2026-10-16 | 2026-10-19 | PEP | SELL | 168 | 130.88 | 17.59 | Closing position — RSI 54.6 — no oversold signal | reconstructed |
| 2026-10-15 | 2026-10-16 | MCD | SELL | 91 | 244.31 | 17.79 | Closing position — RSI 51.5 — no oversold signal | reconstructed |
| 2026-10-15 | 2026-10-16 | HD | SELL | 73 | 309.66 | 18.08 | Closing position — RSI 59.2 — no oversold signal | reconstructed |
| 2026-10-12 | 2026-10-13 | JNJ | SELL | 84 | 254.56 | 17.11 | Closing position — RSI 50.3 — no oversold signal | reconstructed |
| 2026-10-05 | 2026-10-06 | JNJ | BUY | 84 | 254.15 | 17.08 | Opening position — RSI 29.6 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-09-23 | 2026-09-24 | MCD | BUY | 91 | 239.70 | 17.45 | Opening position — RSI 26.2 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-09-18 | 2026-09-21 | PEP | BUY | 168 | 129.65 | 17.42 | Opening position — RSI 26.4 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-09-18 | 2026-09-21 | HD | BUY | 73 | 301.00 | 17.58 | Opening position — RSI 29.7 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-09-14 | 2026-09-15 | WMT | SELL | 209 | 108.61 | 18.16 | Closing position — RSI 52.8 — no oversold signal | reconstructed |
| 2026-08-20 | 2026-08-21 | WMT | BUY | 209 | 103.69 | 17.34 | Opening position — RSI 29.8 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-07-29 | 2026-07-30 | WMT | SELL | 181 | 111.34 | 16.12 | Closing position — RSI 51.5 — no oversold signal | reconstructed |
| 2026-07-13 | 2026-07-14 | MSFT | SELL | 59 | 382.10 | 18.04 | Closing position — RSI 51.0 — no oversold signal | reconstructed |
| 2026-07-13 | 2026-07-14 | CVX | SELL | 129 | 181.17 | 18.70 | Closing position — RSI 57.6 — no oversold signal | reconstructed |
| 2026-06-30 | 2026-07-01 | CVX | BUY | 129 | 163.35 | 16.86 | Opening position — RSI 28.1 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-06-25 | 2026-06-26 | MSFT | BUY | 59 | 356.48 | 16.83 | Opening position — RSI 28.8 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-06-09 | 2026-06-10 | MCD | SELL | 75 | 284.32 | 17.06 | Closing position — RSI 51.9 — no oversold signal | reconstructed |
| 2026-05-29 | 2026-06-01 | WMT | BUY | 181 | 114.46 | 16.57 | Opening position — RSI 29.0 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-05-13 | 2026-05-14 | JNJ | SELL | 92 | 229.68 | 16.90 | Closing position — RSI 52.0 — no oversold signal | reconstructed |
| 2026-05-08 | 2026-05-11 | MCD | BUY | 75 | 273.97 | 16.44 | Opening position — RSI 25.2 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-04-21 | 2026-04-22 | JNJ | BUY | 92 | 224.89 | 16.55 | Opening position — RSI 28.6 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-04-17 | 2026-04-20 | PG | SELL | 140 | 143.89 | 16.12 | Closing position — RSI 51.4 — no oversold signal | reconstructed |
| 2026-04-17 | 2026-04-20 | MCD | SELL | 64 | 310.05 | 15.87 | Closing position — RSI 50.2 — no oversold signal | reconstructed |
| 2026-04-13 | 2026-04-14 | MSFT | SELL | 50 | 386.35 | 15.45 | Closing position — RSI 51.5 — no oversold signal | reconstructed |
| 2026-04-09 | 2026-04-10 | HD | SELL | 60 | 338.50 | 16.25 | Closing position — RSI 50.8 — no oversold signal | reconstructed |
| 2026-04-08 | 2026-04-09 | META | SELL | 34 | 626.39 | 17.04 | Closing position — RSI 53.3 — no oversold signal | reconstructed |
| 2026-04-06 | 2026-04-07 | META | BUY | 25 | 571.95 | 11.44 | Topping up to target weight — RSI 41.0 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-04-06 | 2026-04-07 | GOOGL | SELL | 58 | 302.55 | 14.04 | Closing position — RSI 51.0 — no oversold signal | reconstructed |
| 2026-03-26 | 2026-03-27 | META | BUY | 9 | 539.60 | 3.89 | Opening position — RSI 25.8 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-03-26 | 2026-03-27 | GOOGL | BUY | 58 | 277.11 | 12.86 | Opening position — RSI 28.3 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-03-24 | 2026-03-25 | PG | BUY | 140 | 141.61 | 15.86 | Opening position — RSI 29.6 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-03-24 | 2026-03-25 | MCD | BUY | 64 | 307.97 | 15.77 | Opening position — RSI 29.9 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-03-12 | 2026-03-13 | HD | BUY | 60 | 339.15 | 16.28 | Opening position — RSI 29.2 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-03-04 | 2026-03-05 | AMZN | SELL | 95 | 215.98 | 16.41 | Closing position — RSI 51.7 — no oversold signal | reconstructed |
| 2026-03-02 | 2026-03-03 | UNH | SELL | 69 | 285.13 | 15.74 | Closing position — RSI 50.2 — no oversold signal | reconstructed |
| 2026-02-20 | 2026-02-23 | UNH | BUY | 69 | 284.70 | 15.72 | Opening position — RSI 43.8 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-02-20 | 2026-02-23 | MSFT | BUY | 50 | 393.41 | 15.74 | Opening position — RSI 32.4 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
| 2026-02-20 | 2026-02-23 | AMZN | BUY | 95 | 208.10 | 15.82 | Opening position — RSI 39.3 — below 30 or holding since it was; waiting for a recovery through 50 | reconstructed |
The rules
Exactly what this portfolio does
- Buy when 14-day RSI closes below 30 (oversold).
- Hold until RSI recovers through 50, then sell.
- Never short. The research tests long/short; this book trades the long leg only, because stock borrow costs are real and this project does not model them.
- Equal weight across every live signal, capped at 20% of the book in any one name.
- Orders are decided on the close and filled at the next session's open.
Universe
20 US large caps, fixed at inception and never changed: AAPL, AMZN, COST, CSCO, CVX, GOOGL, HD, JNJ, JPM, KO, MCD, META, MSFT, NVDA, PEP, PG, UNH, V, WMT, XOM. US only — FTSE names are quoted in pence, and mixing currencies without an FX model would make the portfolio value wrong.
Why long only
The research tests every indicator long and short, because that is how the rule is defined. This book trades the long leg only. Shorting incurs a stock borrow fee that varies by name and by day, and this project does not model it — so a live short book would report a return nobody could actually have earned.
What would falsify this
If the portfolio finishes behind buy & hold on a risk-adjusted basis over a full year of forward recording, the honest conclusion is that the Week 1 result was noise. That conclusion will be published here in the same place as everything else.
Audit it. The complete order book is published as raw data: every fill, every daily mark, and the derived figures shown on this page. Positions are never stored — they are replayed from the fills, so the trade log is the only source of truth.