# Trading bot session summary: Friday 2026-09-25

Live day, the data bugs fixed mid-morning, the new rules built today, and tonight's 7-variant backtest. Paper-trading account. All times are ET.

## At a glance
| Item | Result |
|---|---|
| Live P/L | **−$26.99**, 2 trades (1 winner). Equity **$8,807.72**, flat at the close |
| Switched on before the open | Real-level targets, true premarket high, extra rescan at 9:40 |
| Fixed live at 10:05 (restart, no open positions) | **Opening scan used data from two sessions back** (every morning since the bot started); stocks with no premarket trades got a fake premarket high |
| Built today, all OFF | Your 3–5% above-open limit, your low-ceiling stall rule, dead money, recent-trend deterioration, **5-day reference frame**, position charts page, opening-window dataset and scanner study |
| Backtest verdict | **Keep the live config (A).** Dead money (F) was slightly better (+$12, one trade). The above-open limit (C) and 5-day levels (G) were clearly worse as built |

## 1. Live trades
| Stock | Time | Setup | P/L | Exit | After the exit (to 15:55) |
|---|---|---|---|---|---|
| APPS | 10:12 → 10:49 | breakout (bought extended, +5.6% above open) | −$37.70 | Deterioration exit at $11.255 | Bounced to $11.75, closed $11.155: **the exit saved ~$14.50** |
| EMBC | 11:31 → 14:34 | breakout | +$10.71 | **Stall exit** at the original $5.845 ceiling after 153 min | Ran to $5.93, closed $5.905: **left ~$17** |

EMBC sat in a $5.81–5.83 box for about 2 hours. The deterioration check never fired: price stayed above VWAP, VWAP was flat, and the whole-day trend was flat. Holding with a free slot paid off when it reached the old ceiling.

## 2. Tonight's backtest: 7 variants, 5 slots, 6 days
All variants use today's live config: trade plan + context rules + real-level targets + stall exit 45 min + 0.25× daily-ATR stop floor + re-entry rule, slope rule off. 09-24 and 09-25 replay the real rescan timing, with true levels.

| Variant | 09-18 | 09-21 | 09-22 | 09-23 | 09-24 | 09-25 | **Total** | Trades | Winners |
|---|---|---|---|---|---|---|---|---|---|
| **A: live config** | +103 | +48 | +64 | +46 | −61 | −56 | **+$145** | 22 | 12 |
| B: + low-ceiling rule | = A | | | | | | **+$145** | 22 | 12 |
| C: + 3–5% above-open limit | 0 | +48 | +64 | −2 | −86 | −25 | **−$1** | 10 | 3 |
| D: B + C | = C | | | | | | **−$1** | 10 | 3 |
| E: recent-trend deterioration (30 bars) | = A | | | | | | **+$145** | 22 | 12 |
| **F: low ceiling + dead money (90 min)** | = A | | | | | −44 | **+$156** | 22 | 13 |
| G: 5-day levels + realistic target cap | +26 | +71 | 0 | +8 | −63 | −92 | **−$51** | 20 | 7 |

**Note:** the replay doesn't reproduce live exactly. In the 09-25 replay, EMBC exited by deterioration at 13:39 (−$10.08), not by the stall exit at 14:34 (+$10.71) as it did live. That's the known limit of replaying from recorded trades.

### B, low-ceiling rule
**It never triggered.** With today's selective settings, the 5 slots were never all full, and no armed position turned "not healthy". It's harmless, but it can't be judged yet.

### F, dead money
One sale, **EMBC on 09-25 at 13:12 for $5.816 (+$1.58)**. It was armed at the old ceiling, the last 15 minutes topped at $5.815, and the stock had been flat for 90+ minutes. In the replay, that avoided the later −$10.08 exit, a **+$11.66** improvement. Live, holding made +$10.71, so on the real day F would have cost about $9. The evidence is one trade either way.

### C, 3–5% above-open limit
It blocked **12 of A's 22 trades**:

| Blocked trades | Count | P/L they made in A |
|---|---|---|
| Winners | 9 (FWDI ×2, SBET, GLOO, SECZ, OPTX, GRML, RSKD, DNA) | **+$231** |
| Losers | 3 (SVCO, PRGO, APPS) | −$86 |

It blocked **strong-trend pullbacks** as well as extended breakouts: SBET, GLOO and FWDI on 09-18 and DNA on 09-24 were already more than 3–5% above their open when they pulled back. As specified, it costs about **$146**.
**A possible refinement to test:** apply it to **breakouts only**, or measure extension from **VWAP in ATRs**, not from the open.

### E, recent-trend deterioration
**No exit changed on any day.**

### G, 5-day levels
It blocked 13 of A's trades (**+$151 of net winners**, including BFLY +$64, SECZ +$45, FWDI +$61, DNA +$32, RSKD +$25) and added 13 new ones, mostly losers. The **"open + 1 daily ATR" target cap is too tight for strong movers**: their real moves go past it, so R:R drops below 1.5 and good trades get blocked. The freed slots then filled with weaker trades. The cap also inherits distorted ATRs (JAGX's target was $14.29, because a spike day inflated its ATR).
**Worth testing instead:** the 5-day high as a **breakout level only**, with no target cap. Opening above the 5-day high had a 3× runner rate in the 20-day study. Or a looser cap of about 2 daily ATRs.

## 3. Also done today
- **Scanner data reference and runner study** (`reports/scanner_928_data_reference.pdf`). With fixed data, the current top 30 caught **39%** of early runners. Gap size + daily ATR % + RVOL would catch **60%**. The score penalizes gap-downs and has an unreachable RVOL scale.
- **5-day study:** opening above the 5-day high had **16.2%** runners (3× normal); the bottom half of the range had fewer runners than normal.
- **Position charts page:** `http://68.183.154.175/trade/report/positions.php`, now with 5-day high/low and "open + 1 daily ATR" lines.
- **Week summary:** `reports/2026-09-week-summary_0921-0925.pdf`.

## 4. Recommendation for Monday (nothing changed without your approval)
1. **Keep the live config (A) as it is.** It's the best or tied-best on every variant except F.
2. **Low-ceiling rule (B):** safe to turn on, since it can only act when all slots are full. It never triggered in 6 days, so expect little effect.
3. **Dead money (F):** a small, single-trade improvement in the replay, but it would have cost ~$9 on the real EMBC trade. **Keep it off** until there's more evidence.
4. **Above-open limit (C):** **don't turn it on as specified.** Test "breakouts only" or a VWAP/ATR version first.
5. **5-day levels (G):** **don't turn it on as built.** Test the 5-day high as a breakout level without the target cap.
6. **Next scanner step:** test the new score (gap size + daily ATR % + RVOL) in the entry backtest.

## 5. Files changed today (backups taken first)
`universe.py` (prior-session fix, live), `scanner.py` (true premarket high fallback, 5-day data), `smart_engine.py` (above-open limit, 5-day key filter), `setup_analyzer.py` (5-day levels), `exit.py` (recent-trend option), `exit_resistance_stall.py` (low ceiling, dead money), `volatility.py` (5-day reference), `monitor.py` (health tracking for the stall rule, 5-day feed), `simulate.py` (flags `--max-ext-open`, `--stall-low-ceiling`, `--dead-money-minutes`, `--exit-trend-bars`, `--plan-5d-levels`), `config.json` (all new keys OFF), report app (`positions.php`, `positions_api.php`, `lib/chart_data.php`, `assets/positions.*`, link in `index.php`). Backups: `*.bak-2026-09-25*`.
