Auto-Pilot: paper books under pre-registered rules
Paper only. Nothing trades live. Graduation is a gate, not a promise.
How it works today
Each paper book runs the same engine with one strategy gate. The engine reads the Action Engine’s decision rows, buys fixed-size lots, and exits on four rules. It books paper fills only; no order reaches a broker. Rule parameters are deliberately not published here.
Entry
buy side- Candidates come from the latest, unexpired decision rows: a positive 60d prediction above a market-cap floor.
- Ranking has three branches, in order: a fixed-horizon override when a strategy pins one; otherwise an adaptive blend of per-horizon percentile ranks, weighted by each horizon’s measured edge; otherwise the 20d prediction when no horizon has trustworthy edge yet. None of the strategies on the current roster pins an override.
- Strategy gate, by public label:
pure_quanttakes the ranked universe as is;insider_confirmedalso requires a recently filed open-market insider purchase;analyst_consensusalso requires a strong, fresh standing Buy consensus with no recent downgrade. - Buy gate: no second lot on a ticker the book already holds. For
pure_quantandanalyst_consensus, a ticker must have a fresh risk-flag evaluation and no high-severity flag in it;insider_confirmeddoes not apply the risk-flag gate. - Sizing: fixed-size lots, the same for every book.
Exits
sell side- Signal exit (cross-sectional): after the strategy’s minimum holding period, a held name can be sold when its rank falls below the strategy’s exit cutoff. The rank blends 20d and 60d percentile ranks when both horizons carry weight, and uses the 60d prediction alone otherwise. This predicate is separate from the user-facing Sell tab.
- Stop-loss: a fixed stop from entry. On the trailing arm a trailing stop off the high-water close replaces it.
- Time exit: a position older than the hold limit is closed.
- Rotation: when cash is short, the weakest holding can be sold for a candidate that out-ranks it by a set margin.
A thesis-break exit A/B on the consensus strategy resolved “no difference” against its control and was archived 2026-09-01.
Guards
safety| Guard | Behavior today | Before any live book |
|---|---|---|
| Halt guard | No entry, exit or rotation is booked on a halted ticker; the trade is re-evaluated next cycle. If the halt feed is stale the guard fails open. | Must fail closed |
| Kill switches | Daily loss and sequential losses are evaluated every cycle. On paper books a trip is logged and audited but does not pause the book by default. Broker-error and regime switches apply to live mode only. | A trip always pauses a live book |
| Paused book | Buys nothing and ignores the signal exit; its stop-loss and time exit still run. | Same rule |
Engineering shadow books run beside the measured books on a separate allocation engine. They are excluded from §19 and from the public standings, and are not listed here.
Current paper books
As of 2026-09-29, from an anonymous read of the public standings route
(GET /api/autopilot/standings). Paper returns are on the live scoreboard at
www.vibebullish.com/autopilot,
not on this page.
| Book | Strategy | Role | Status |
|---|---|---|---|
| 57 | pure_quant | Control | Active |
| 58 | insider_confirmed | Strategy book | Active |
| 59 | analyst_consensus | Strategy book | Active |
| 60 | pure_quant | Trailing-stop arm; the stop is its only difference from the control | Active |
| 42 | btc_trend (BTC Trend) | Crypto trend book | Active |
| 53–56 | Earlier copies of the four equity books | Reset 2026-09-16 (epoch reset) | Retired |
Every book is a paper book. Retired books stay on the scoreboard as retired.
Path to live
Graduation is a gate, not a promise. Each step must hold before the next starts, and none has a date. As of 2026-09-29 no book has cleared §19: the active books started after the 2026-09-16 reset, so none has 90 trading days yet.
19. Paper Trading Targets
The implemented equity metrics require ≥90 active trading days, Sharpe ≥1.0, hit rate ≥55% with ≥8 closes in the applicable window, drawdown <15%, regression alpha >0, and positive return exceeding random-trial p95. Passing these metrics alone does not authorize live trading: a second non-overlapping ≥90-trading-day window, execution-readiness requirements, shadow-live qualification, and signed approval remain required.
Scope: Applies to the measured equity books (57–60). Engineering shadow books are excluded.
Re-based 2026-09-16: Sharpe ≥1.0 + regression alpha vs SPY >0 +
drawdown <15% + hit rate ≥55% (≥8 closed) + beating the p95 of random portfolios,
over 90+ trading days, then replicated on a second non-overlapping
≥90-trading-day window. Execution readiness (including a fail-closed halt guard),
shadow-live qualification and signed owner approval come after that, before a small live book.
The original 30-day / Sharpe >2 / raw +10pp-vs-SPY bar (t ≈ 0.7; beta-blind) is
retired for equity books; vs_spy_pp stays on the card for display. btc_trend keeps
its beats-BTC-HOLD gate; book 42 was paused 2026-09-17 and un-paused 2026-09-29.
Hit-rate floor (added 2026-06-04): the ≥55% hit-rate criterion additionally
requires ≥8 closed trades in the 30-trading-day window before it counts. Without it a
thin sample (e.g. 2/2 = 100%) would falsely satisfy the gate, and a window thinned by the
per-strategy min-hold (which lengthens holds, so trades close less often) could read NaN.
A book short of 8 closes lists hit_rate in missing_criteria regardless of
its win %.
vs-Random rule (revised 2026-06-10): the original “2× random” multiple auto-passed any positive book return whenever the random baseline’s mean was ≤0 (a guaranteed pass in down markets) and ignored trial dispersion entirely. The gate now requires paper book return > 0 and above the 95th percentile of the random-portfolio trials. K (concurrent positions) is the book’s median open-position count clamped to [3, 20]; the count is estimated from the book’s own average position cost, with the engine’s default lot size as the fallback estimate. The displayed multiple remains in the digests for continuity; it reads NaN when the random mean is non-positive.
Trading-day counting (revised 2026-06-10): trading_days counts only
real market days — the equity cron no longer mints weekend/holiday rows — and excludes
days the book was kill-switch-paused (book_daily_equity.was_paused). A frozen book does
not soak toward graduation.
Verified against vibebullish-docs@0a4edb1, vibebullish-backend@07c641de,
vibebullish-data-pipeline@ee230ea, vibebullish-web@ce8ec92 on 2026-09-29.
Runtime observations are dated inline; a source sha does not vouch for deployed configuration or database contents.