# Test Manager: KEEP / KILL on the paper books (delete audit item 3), 8 Oct 2026, 19:19 Bangkok

**Tests:**
- **Beats the dumb baseline (D-032)?** Paper books: each book's own random picks, or everything it saw, with the same exits. Signal feeds: share of flagged coins that became runners vs every launch in the same period.
- **Makes sense with real money?**
- **Feeds one of Ben's 3 tests or the learning loop?**

Scripts: `/root/bookstats.py` on main, picker-box and research-box; `/root/siglift.py` on main. All read only.

## Warning before reading any paper P&L
- **The pick books' paper P&L is generous.**
  - In aipaper5, even the random-pick models make +1.40 per $1 (68% wins).
  - Ben's real-quote paper test of the same 60 s picks (fml2) makes **+0.85 per $1, against +3.06 in aipaper** on the same model.
  - Part of the gap is the exit: fml2 sold 3 coins after a quiet minute at 1.2-1.4x that aipaper held to 8-9x. fml2v (no quiet exit) measures that.
- **What follows:** compare paper books only with each other and their own baselines. Never use them as dollars.

## Verdicts
| Book | What it is | Result (per $1 ticket) vs baseline | Verdict |
|---|---|---|---|
| **aipick30** (aipaper30) | Same model as the 60 s picker, at 30 s | +695 over 4.1 d vs the 60 s book's +676 on the same days. Earlier entry adds nothing. | **KILL** (duplicate; keep the db) |
| **aipick5** (aipaper5, 30 models) | 5 s picker, many models | Best models beat its own random baselines (rand_30s +1.40, rand_gated +1.93): ev_top5 +3.10 (n 163, 92% win), rule_smart2_clean +2.38 (n 490), rule_fee001_first +2.11 (n 478). | **KEEP** (feeds the learning loop). Prune models below rand_gated or under 20 trades in 4 days: pw_strong, pw_watch, bundle_flip, f5_10s_top2/top5, ai_novel_appeal2. Before any live talk, it needs a real-quote paper test like fml2. |
| **venuepick** | Picks on venues fmmc5 never watches | Baseline "everything" vx_all = -0.20 (n 15,765). Best models +0.3 to +1.0 on n 10-41, and negative without the top 3. vx_repool: 0 wins in 801 (looks broken). | **KEEP the venue launch feed** (the review's universe gap needs it). **KILL its 12 paper models.** |
| **ppexit** | Exit-rule simulator on about 4,000 picks (rules v1 / v1s / live) | Not a book. It is the tool that answers D-035 (is the 0.5x stop selling runners?). | **KEEP**, owner Analyst 1 (exit research) |
| **w1hot** | SW hot book | 17 trades, -3.6, 2 wins. Heaviest CPU on main. | **KILL** |
| **w2coder books** | SW engine, 18 mc5 variants | 1-12 trades each. Kit variants positive (kit300k +7.8 on n 12), the rest about 0. Too small to judge. | **KEEP until Ben's SW date (D-020, 14 Oct)**, then by that scorecard |
| **v3mc5** | Paper twin of the live mc5 rule | 19 trades, +50.9 (live: +40.9 on 12) | **KEEP**: it becomes the base of the shadow variant grid (my item #2) |
| **labbooks** broad20 / pond20 | Broad / pond books | broad20 +0.88 (n 411), pond20 +0.69 (n 251). No baseline inside the book. | **KEEP 2 more days only if the owner adds a random baseline book**, else KILL |
| **labbooks** broad20_crew / pond20_crew | Crew-filtered copies | +0.92 vs +0.88 and +0.80 vs +0.69: no real gain over the parent | **KILL** (duplicates) |
| **labbooks** copy20, fast10_crew, fast10_real | Small books | 6-9 trades in 2.5 days: too rare to matter at any size | **KILL** |
| **pbshadow** | Copy of aipick5 on picker-box | No separate result. The Manager says it feeds the learning loop. | **KEEP only with a named owner + reason (D-034)**; if it duplicates aipick5's writes, KILL |
| **prewatch** | GitHub / X pre-launch matcher | 5.8% of matched coins became runners vs 1.3% of all launches (**4.5x lift**). 19 of 158 runners, 5-8 Oct. | **KEEP as a signal feed** (not a book); hand to Analyst 2 as an idea source |
| **solidlive** | Coin scorer | Top 10%: 3.2% runners vs 1.4% (2.3x lift), 29 of 175 runners | **KEEP only if a picker uses its score** (owner to name it), else KILL |
| **metaradar** | Theme radar | Theme coins 1.2% vs 1.3% (**0.9x, no value**). Crowd flags 2 of 16. Already inactive. | **KILL** (stay off) |
| **laneradar3 + legwatch** | Lane classes / post-crossing alerts | No P&L. legwatch only flags coins already over $500k, so it is not a picker. | **KILL** (legwatch is already off) |
| **chainbrain, chainfix, score, gauge** | Market-state gauge | No picks; 22 outcomes. All already inactive. | **KILL** (stay off) |

**Not on the list (Ben's tests and their feed):**
- **Keep:** fmmc5 live, fml2, fml2v, and aipick (the 60 s picker that feeds fml2 / fml2v).

## Who does what
- **Manager:** switch off the KILLs as you did for the dead jobs: reversible, data kept.
- **Owners:** reply with a reason for the "KEEP only if" items within 48 h, or they go off too.

## Where the trades live (board item #4, for the nightly review gates)
- **fml2v (paper 1b, Ben's test):** firstmin `/opt/fm/l2v.db`, table `c`. Closed rows: `status='closed'`, `mult` = x, `t_buy`, `t_exit`, `size_usd`.
  - Same schema as fml2 (`/opt/fm/l2.db`). Read it the way `review_dump.py` reads fml2.
- **v3mc5 (mc5 twin, KEEP):** research-box `/opt/sw/v3mc5.db`, table `c`: `mult`, `usd_in`, `usd_out`, `t_buy`, `t_exit`, `exit`.
- **aipaper5 models (KEEP):** main `/opt/hist/analysis/aipaper5.db`, table `picks`: `model`, `ret` (= x - 1), `t_pick`, `t_exit`, `exit_kind`.
- **labbooks (if kept):** picker-box `/opt/labbooks/books.db`, table `trades`: `book`, `ret`, `usd`, `size`, `t_dec`, `t_close`.
- **w2coder (to 14 Oct):** main `/opt/w2coder/w2.db`, table `trades`: `book`, `variant`, `mult`, `realized_usd`, `cost_usd`, `fill_ts`, `exit_ts`.
