Systematic equity
v2b's pullback in leading industries
RSI(2) pullback in leading industries
What it is
v2b's pullback, entered only in stocks whose sector or industry group is among the strongest, in a sub-book of the DAILY Alpaca paper account. Its $100,000 was set aside in the account from the start, and it joined flat for the session of 2026-10-07, once its code had reproduced every trade of the research rule from 2001 to 2026. It trades on its own positions and value. Its trades come from the account's trade journal.
The rule
- Universe: S&P 500 members closing at $5 or more, with a 63-session median dollar volume of at least $10M and 252 sessions of history, as for v2b.
- Groups: 29 ETFs, 11 for sectors and 18 for industries. At each month's last close, each stock is assigned the one whose daily returns, with the market's part taken out of both, have correlated most with its own over the past 252 sessions. A stock with less than about 400 sessions of history has no group, so it is never entered.
- Leading groups: at each week's last close, the 6 with the highest relative strength, the average of their 21-, 63- and 126-session total returns less SPY's, among those closing above their 50-session average, or all of those when fewer than 6 are. They stand until the next week's last close.
- Entries: buy a stock in a leading group whose RSI(2) is below 10 while its close is above its 200-session average, and only while SPY closes above its own 200-session average; lowest RSI(2) first when more trigger than there are free slots; up to 20 slots of 5% of the sub-book. The rest is cash: there is no SPY core.
- Exits: sell at a close above the 5-session average, after 10 sessions, or when the stock leaves the universe. Neither the groups nor SPY's trend holds an exit back.
- No entries, exits as usual: while SPY is at or below its 200-session average, under the halt, or when the groups cannot be read, as when an ETF's close is missing where they are computed.
- Halt: no new entries once the sub-book's total with dividends and interest has fallen 25% from its peak, which is permanent, or, once it has a year of history, while its trailing-year Sharpe is below −0.5.
- Orders: decided at about 15:40 ET on that day's 5-minute snapshot, only between 15:25 and 15:50 and never on a session that closes early, then netted per symbol with the other sub-books' orders and worked into the close: from 15:55 each rests as a limit order at the midpoint of IEX's quote, and from 15:59 what is left goes at market; nothing is sent after 15:59:45. When its fetch or its decision fails, it decides nothing that session, though an exit carried from an earlier close still goes, and the other sub-books trade as usual.
- Fills: shares one sub-book buys and another sells at the same close meet inside the account at the official close; every leg on the larger side then gets one average of that price and Alpaca's fill. An entry left unfilled, or the unfilled part of one, is dropped and the sub-book holds less; an exit left unfilled goes again at the next close.
| Name | Value | Unit | Where it lives | Pinned by |
|---|---|---|---|---|
| universe.min_price | 5 | USD, as-traded close | syseq/strategy/config.py:13 | tests/test_frozen_params.py:15 |
| universe.min_adv | 10000000 | USD a day, 63-session median | syseq/strategy/config.py:14 | tests/test_frozen_params.py:15 |
| universe.adv_window | 63 | sessions | syseq/strategy/config.py:15 | tests/test_frozen_params.py:15 |
| universe.min_history | 252 | sessions | syseq/strategy/config.py:16 | tests/test_frozen_params.py:15 |
| SECTOR_ETFS | XLB, XLE, XLF, XLI, XLK, XLP, XLU, XLV, XLY, IYR, IYZ | — | syseq/strategy/leading.py:37 | tests/test_leading.py:49 |
| INDUSTRY_ETFS | IGV, SMH, IBB, IHI, XPH, IHF, KRE, IAI, KIE, XOP, OIH, XME, GDX, ITA, IYT, XRT, ITB, FDN | — | syseq/strategy/leading.py:38 | tests/test_leading.py:49 |
| MAP_WINDOW | 252 | sessions of returns a stock's group is matched on | syseq/strategy/leading.py:44 | tests/test_leading.py:49 |
| LEADERS | 6 | leading groups | syseq/strategy/leading.py:41 | tests/test_leading.py:49 |
| RS_SPANS | 21, 63, 126 | sessions of total return, averaged | syseq/strategy/leading.py:42 | tests/test_leading.py:49 |
| GROUP_TREND | 50 | sessions in a group ETF's average | syseq/strategy/leading.py:43 | tests/test_leading.py:49 |
| pullback.trend_sma | 200 | sessions | syseq/strategy/config.py:21 | tests/test_frozen_params.py:15 |
| pullback.rsi_period | 2 | sessions | syseq/strategy/config.py:22 | tests/test_frozen_params.py:15 |
| pullback.rsi_entry_below | 10 | — | syseq/strategy/config.py:23 | tests/test_frozen_params.py:15 |
| pullback.exit_sma | 5 | sessions | syseq/strategy/config.py:24 | tests/test_frozen_params.py:15 |
| pullback.max_hold_sessions | 10 | sessions | syseq/strategy/config.py:25 | tests/test_frozen_params.py:15 |
| pullback.slots | 20 | — | syseq/strategy/config.py:26 | tests/test_frozen_params.py:15 |
| pullback.slot_weight | 0.05 | of the pullback sleeve, here the whole sub-book | syseq/strategy/config.py:27 | tests/test_frozen_params.py:15 |
| pullback_capital | 1 | of the sub-book | syseq/strategy/leading.py:51 | tests/test_leading.py:49 |
| core_capital | 0 | of the sub-book | syseq/strategy/leading.py:51 | tests/test_leading.py:49 |
| core.symbol | SPY | — | syseq/strategy/config.py:32 | tests/test_frozen_params.py:15 |
| core.trend_sma | 200 | sessions in SPY's average, the gate on entries | syseq/strategy/config.py:33 | tests/test_frozen_params.py:15 |
| HALT_DRAWDOWN | −0.25 | the sub-book's fall from its peak | syseq/execution/paper.py:22 | — |
| HALT_SHARPE_12M | −0.5 | trailing-year Sharpe | syseq/execution/paper.py:23 | — |
| WORK_FROM | 15:55 | ET | syseq/execution/close_worker.py:36 | tests/test_close_worker.py:210 |
| LAST_ATTEMPT | 15:59 | ET | syseq/execution/close_worker.py:37 | — |
| LAST_SEND | 15:59:45 | ET | syseq/execution/close_worker.py:38 | — |
| OWNER_COMMISSION | 0.007 | USD a share a side, an estimate | syseq/journal/common.py:13 | tests/test_journal.py:651 |
Its read
Record so far
The book's value — data table
| Session | NAV |
|---|---|
| Oct 7, 2026 | $99,999.31 |
| Oct 8, 2026 | $99,954.47 |
| Oct 9, 2026 | $100,035.69 |
| Oct 12, 2026 | $98,332.59 |
| Oct 13, 2026 | $97,669.40 |
| Oct 14, 2026 | $94,548.49 |
| Oct 15, 2026 | $92,625.28 |
Closed trades — data table
| Closed | Symbol | P&L | Net P&L | Return |
|---|---|---|---|---|
| Oct 13, 2026 | QCOM | −$6.94 | −$7.33 | −0.14% |
| Oct 13, 2026 | TXN | +$102.23 | +$101.99 | +2.14% |
| Oct 15, 2026 | INCY | +$74.89 | +$74.27 | +1.53% |
| Oct 15, 2026 | VRTX | +$243.60 | +$243.46 | +5.02% |
Cost model
Alpaca paper fills, with no commission. In the DAILY account, shares one sub-book buys and another sells at the same close meet inside the account at the official close, and every leg on the larger side gets one average of that price and Alpaca's fill. Alpaca's SEC and CAT fees, charged by the day, are left out. Commission is estimated at $0.007 a share a side, the rate at the owner's own broker: the net P&L is the P&L less it, without dividends; the P&L, the total with dividends, the return and the P&L in basis points of the sub-book are before it. An open trade is marked at the latest official close, before commission, with the dividends paid so far beside it.
Trades
24 trades
| Opened | Closed | Account | Symbol | Side | Size | Entry | Exit | P&L | Net P&L | Return | Unrealized | Held | Exit by | Status | Record |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Oct 15, 2026 | — | DAILY | KEYS | long | 13 | 341.57 | — | — | — | — | +$6.63 | — | — | open | Trade journal (1) |
| Oct 15, 2026 | — | DAILY | SNPS | long | 10 | 468.77 | — | — | — | — | −$6.60 | — | — | open | Trade journal (1) |
| Oct 14, 2026 | — | DAILY | ANET | long | 25 | 195.01 | — | — | — | — | −$235.75 | — | — | open | Trade journal (1) |
| Oct 14, 2026 | — | DAILY | APH | long | 59 | 82.596272 | — | — | — | — | −$65.27 | — | — | open | Trade journal (1) |
| Oct 14, 2026 | — | DAILY | DELL | long | 9 | 505.536667 | — | — | — | — | −$289.32 | — | — | open | Trade journal (1) |
| Oct 13, 2026 | — | DAILY | CDNS | long | 14 | 334.30 | — | — | — | — | −$138.88 | — | — | open | Trade journal (1) |
| Oct 13, 2026 | — | DAILY | FIX | long | 3 | 1,627.97 | — | — | — | — | −$440.10 | — | — | open | Trade journal (1) |
| Oct 13, 2026 | — | DAILY | STX | long | 6 | 748.29 | — | — | — | — | −$344.88 | — | — | open | Trade journal (1) |
| Oct 13, 2026 | Oct 15, 2026 | DAILY | VRTX | long | 10 | 485.18 | 509.54 | +$243.60 | +$243.46 | +5.02% | — | 2 sessions | close>sma_exit | closed | Trade journal (1) |
| Oct 12, 2026 | Oct 15, 2026 | DAILY | INCY | long | 44 | 111.54 | 113.242 | +$74.89 | +$74.27 | +1.53% | — | 3 sessions | close>sma_exit | closed | Trade journal (1) |
| Oct 12, 2026 | — | DAILY | KLAC | long | 26 | 190.293333 | — | — | — | — | −$411.67 | — | — | open | Trade journal (1) |
| Oct 12, 2026 | — | DAILY | MU | long | 5 | 991.152 | — | — | — | — | −$299.56 | — | — | open | Trade journal (1) |
| Oct 12, 2026 | — | DAILY | SMCI | long | 124 | 39.95758 | — | — | — | — | −$603.58 | — | — | open | Trade journal (1) |
| Oct 12, 2026 | Oct 13, 2026 | DAILY | TXN | long | 17 | 281.5565 | 287.57 | +$102.23 | +$101.99 | +2.14% | — | 1 session | close>sma_exit | closed | Trade journal (1) |
| Oct 9, 2026 | — | DAILY | AMD | long | 8 | 608.1875 | — | — | — | — | −$367.66 | — | — | open | Trade journal (1) |
| Oct 9, 2026 | — | DAILY | NVDA | long | 21 | 229.657692 | — | — | — | — | −$260.98 | — | — | open | Trade journal (1) |
| Oct 9, 2026 | — | DAILY | SNDK | long | 3 | 1,581.35 | — | — | — | — | −$559.56 | — | — | open | Trade journal (1) |
| Oct 8, 2026 | — | DAILY | AMAT | long | 9 | 509.077647 | — | — | — | — | −$711.61 | — | — | open | Trade journal (1) |
| Oct 8, 2026 | — | DAILY | COHR | long | 16 | 302.75 | — | — | — | — | −$834.40 | — | — | open | Trade journal (1) |
| Oct 8, 2026 | — | DAILY | INTC | long | 46 | 106.81 | — | — | — | — | −$526.24 | — | — | open | Trade journal (1) |
| Oct 8, 2026 | — | DAILY | LRCX | long | 15 | 321.14 | — | — | — | — | −$655.20 | — | — | open | Trade journal (1) |
| Oct 8, 2026 | — | DAILY | MPWR | long | 3 | 1,372.14 | — | — | — | — | −$368.82 | — | — | open | Trade journal (1) |
| Oct 8, 2026 | — | DAILY | TER | long | 12 | 399.464545 | — | — | — | — | −$675.05 | — | — | open | Trade journal (1) |
| Oct 7, 2026 | Oct 13, 2026 | DAILY | QCOM | long | 28 | 177.1448 | 176.8969 | −$6.94 | −$7.33 | −0.14% | — | 4 sessions | close>sma_exit | closed | Trade journal (1) |
- (1) Record Trade journal
Cost model
Alpaca paper fills, with no commission. In the DAILY account, shares one sub-book buys and another sells at the same close meet inside the account at the official close, and every leg on the larger side gets one average of that price and Alpaca's fill. Alpaca's SEC and CAT fees, charged by the day, are left out. Commission is estimated at $0.007 a share a side, the rate at the owner's own broker: the net P&L is the P&L less it, without dividends; the P&L, the total with dividends, the return and the P&L in basis points of the sub-book are before it. An open trade is marked at the latest official close, before commission, with the dividends paid so far beside it.
Where the research is
- The daily account, and o11's joining (findings systematic-equity/DESIGN/170)
- The trade journal (findings systematic-equity/DESIGN/190)
- How o11 was found (findings systematic-equity/RESEARCH/240)