PropBetEdgePREDICTIONS
PBE Signal 10The $10,000 ExperimentMarkets AI

Methodology

Every rule, number and known limitation of the Signal 10 model and its paper portfolio manager — written down before any result was computed.

HYPOTHETICAL / SIMULATEDPaper results only. Not actual trading. Not investment advice. Scores are a 0–100 rank index, not a probability.

The record so far · public proof

What the evidence says today

PBE Signal 10 is a deterministic ranking model (signal10-rank/1.0.0) plus a rules-based paper portfolio manager (signal10-manager/1.0.0). Each trading day it ranks the point-in-time S&P 500 and the manager decides, at the close, what a $10,000 simulated account would do at the next open. There is no discretion, no fitted parameter and no real money.

1. Universe: point-in-time S&P 500

Membership comes from the MIT-licensed fja05680/sp500 “S&P 500 Historical Components & Changes” file, compiled from the public S&P 500 change record. Each row is the member list effective on a date; a decision date D uses the latest row on or before D. A company that joined the index in 2023 cannot be held in 2019; a company removed in 2020 stays eligible until its removal date. The forward lane re-reads the current file at every end-of-day run (a bundled copy is the fallback, and the snapshot records which one was used).

Eligibility at the close of D (all knowable that day)

  • At least 253 daily bars of history (a 12-month lookback plus one), which also excludes new listings for their first year.
  • Unadjusted close of at least $5.
  • 63-session median of unadjusted close × volume of at least $25 million.
  • No more than 5 missing market sessions inside the 253-bar window (halts and suspensions).

Names that fail are counted by reason (for example insufficient_history, price_below_5, illiquid, trading_gap, uncovered) and published with each snapshot.

2. Features and weights

Every feature reads only bars dated on or before D (a test asserts that appending future bars never changes a past rank). Momentum and trend use dividend- and split-adjusted closes.

12-1 momentum · 35%
Adjusted close 21 sessions ago ÷ adjusted close 252 sessions ago − 1: the 12-month return skipping the most recent month.
6-month momentum · 20%
Adjusted close today ÷ adjusted close 126 sessions ago − 1.
Risk-adjusted momentum · 20%
12-1 momentum ÷ the annualized standard deviation of 252 daily log returns.
Trend vs 200-day · 15%
Adjusted close ÷ its 200-day simple moving average − 1.
Low volatility · 10%
Minus the annualized 63-day volatility of daily log returns (calmer names rank higher).

Each feature is converted to a cross-sectional percentile among the eligible names (ties share the average rank). The composite is the weighted mean of those percentiles. Rank 1 is the highest composite; exact ties are broken alphabetically by symbol.

3. What a score means

The score is the composite’s own percentile among that day’s eligible names, × 100, rounded to one decimal. A score of 99.2 means the name’s composite was above roughly 99.2% of eligible names that day. It is an index from 0 to 100, not a probability and not an expected return. Scores are relative: a name can fall because others rose.

4. Portfolio manager rules

Decisions are made at the close of D from that day’s snapshot and become orders for the next regular-session open. Every decision — including every WAIT — is written to the ledger with its reason.

Account and sizing

  • $10,000.00 of simulated cash; at most 10 positions; a new entry targets 10% of NAV at the decision close.
  • Whole shares only (no fractions); leftover cash stays as cash and earns 0%. Minimum order: $100.
  • Initial window: the first 10 trading sessions are the deployment window. There is no forced buy at the end of it — if nothing qualifies, the account stays in cash.
  • Staged entry: never more than 3 new names (including adds) per session.
  • Regime filter: new buys only while SPY’s adjusted close is at or above its 200-day average. Risk-off means hold or exit only.

Actions

WAIT
A top-10 name that is not held and does not meet an entry setup, or is blocked by the regime filter, the 3-per-session limit, cash (WAIT_CASH, under $100 available) or full slots (ROTATION_CANDIDATE). Only ranks 1–10 are entry candidates, and only in an uptrend: close > 50-day SMA > 200-day SMA. A one-day drop of 8% or more is treated as a possible broken thesis, not a dip: WAIT.
BUY · DIP_ENTRY
Close at least 3% below its 10-session high while the uptrend is intact.
BUY · PERSISTENCE_ENTRY
In the top 10 for at least 5 consecutive closes and still in an uptrend.
ADD
A held top-10 name whose weight has drifted below 6% of NAV, when a dip entry triggers (risk-on, uptrend, no ≥ 8% one-day drop): topped up toward 10%.
HOLD
Still in the top 10, or ranked inside the exit band (rank ≤ 30).
TRIM
A holding above 20% of NAV is sold back to 15%.
RANK_EXIT
Sell when the rank falls below 30 (rank > 30). The gap between the top-10 entry band and the 30 exit band is deliberate hysteresis. A name that leaves the index or fails eligibility is sold as NOT_RANKED.
TRAILING_STOP
Sell when the adjusted close is 20% or more below the highest adjusted close since entry.
STOP_LOSS
Sell when the position is down 15% or more from cost and below its 50-day average.
ROTATE
Only when all 10 slots are full: a qualifying candidate ranked in the top 3 replaces the weakest holding if that holding ranks worse than 15 and the score gap is at least 15 points. At most 1 rotation per session.

5. Fills, costs and corporate actions

  • Fills at the next regular-session open after the decision close (D+1), at the unadjusted open reported by the source. If the symbol has no bar that session, the order expires. Sells execute before buys.
  • Slippage: 10 bps per side, applied to the open (buys pay more, sells receive less). Commission: $0.
  • A buy that cannot afford one whole share or $100 is logged as ORDER_UNFILLED.
  • Dividends are credited to cash on the ex-date (the source has no pay date). Splits are explicit ledger events; a fractional result is paid as cash in lieu at the open.
  • Delisting: a held symbol whose source series ends (no bar for 3 sessions and none later) is liquidated at its last observed close and flagged as an estimate.
  • NAV = cash + Σ shares × observed unadjusted close (end of day) or quote (intraday). The live NAV is shown as complete only when every held quote is within 20 minutes during the session; otherwise it is labelled PARTIAL and the last end-of-day NAV is the authoritative value.
  • Forward account timing: opening fills are booked from 09:45 ET using the source open, then reconciled against the final daily bar; a difference above 0.1% is recorded as FILL_OPEN_DISCREPANCY, never silently restated. Intraday marks are persisted every 5 minutes from 09:30 to 16:05 ET. The end-of-day run starts after 16:20 ET once SPY shows a final close.

6. Benchmarks and the comparator

  • SPY and QQQ: $10,000 buys whole shares at the first fill-session open (+10 bps), then buy-and-hold with dividends to cash — the same conventions as the strategy. The forward account has its own same-inception SPY and QQQ paper benchmarks.
  • Comparator — immediately-invested static top-10: the same ranks, but it buys the top 10 at once and exits only when a name ranks worse than 30 or becomes ineligible. No timing, no regime filter, no stops. It isolates what the manager’s timing rules added or cost.

7. Data sources and checks

  • Prices: the Yahoo Finance public chart endpoint — unofficial and not exchange-licensed; quotes may be delayed. Every live price is shown with the source’s own trade timestamp, never our fetch time. Daily bars supply unadjusted open/close (fills, NAV) and adjusted close (features).
  • Cross-check: 50 of 50 sampled backtest fill opens matched Nasdaq’s published historical open within 0.2%.
  • Membership: fja05680/sp500 (MIT), as above.

8. Coverage and survivorship bias

Coverage is the share of point-in-time member-days for which the source has a price series:

Priced share of point-in-time member-days
YearCoverage
201886.4%
201988.9%
202090.9%
202192.1%
202293.6%
202395.2%
202496.2%
202597.5%
202698.9%

About 130 delisted or acquired former members — for example SIVB, FRC, ATVI and TWTR — have no history at the source, so the backtest could never hold them. This is residual survivorship bias: the reconstructed universe is tilted toward companies that still trade. Bias of this kind usually makes a backtest look better than reality; its size here has not been measured. It is labelled wherever backtest results appear.

9. Identity traps found and fixed

A ticker is not an identity. The price source files history under the current symbol, and some old symbols now belong to different companies. Found in the 2026-10-09 audit:

  • PARA now resolves to Banzai International at the source — blocked (with CBS and VIAC); those member-days count as uncovered rather than being priced with the wrong company.
  • BBT → TFC: BB&T renamed Truist Financial (2019-12-09); “BBT” now carries an unrelated bank’s history.
  • FB → META: “FB” is now an unrelated 2025 ETF.
  • IR before 2020-03-02 → TT: Ingersoll-Rand plc became Trane Technologies; after that date “IR” is the former Gardner Denver.

Only true renames of the same listed security are aliased. Mergers into a different security, spin-offs and share-class collapses are not aliased; they stay uncovered and count against coverage.

10. What v1 does not do

  • No fundamentals or valuation — there is no point-in-time fundamentals lane yet, and using today’s fundamentals on past dates would leak the future.
  • No intraday dip detection — every decision is made at the close.
  • No sector data or sector caps, no shorting, leverage or options, no taxes; idle cash earns 0%.

11. Pre-registration

The model and manager rules were committed to git (bd75be9, 2026-10-09 13:24 CDT) before any backtest result was computed. The weights and thresholds are textbook momentum, trend and low-volatility conventions chosen in advance, not fitted. The backtest is untuned but not blind: the author knows broad market history (the 2020 crash, the 2022 bear market, the 2023–25 AI rally). Any rule change ships as a new version string, and the old version’s records stay exactly as they are.

Research variants (post-hoc)

After seeing the v1.0.0 result, we ran a small set of variants over the same 2018–2026 history to understand it: v1.0.0 without the trailing-stop and stop-loss exits; v1.0.0 without the regime filter; both removed (entry timing kept); the immediately-invested top-10 comparator; and a pure 12-1 momentum rank with immediate entry. These were defined after the result and are in-sample, so they are not out-of-sample evidence of anything. They are listed as research notes on the Backtest (research) page (members) and none of them replaces the pre-registered v1.0.0 record, which is the only Signal 10 backtest and the rule set the forward paper account runs.

12. Forward paper account vs backtest

There are two record populations, and they are never merged, summed or drawn on the same line:

  • HISTORICAL_REPLAY — BACKTEST · HYPOTHETICAL · RECONSTRUCTED HISTORY, 2018-01-02 to 2026-10-08. Reproducible artifacts with dataset, ledger and NAV SHA-256 hashes.
  • FORWARD_PAPER — PBE PAPER ACCOUNT · STARTING $10,000 · SIMULATED, from inception at the 2026-10-09 close, with first fills at the next session open. Its ledger is append-only and hash-chained: each event’s SHA-256 covers the previous event’s hash plus the event body.

The live pages show only the forward paper account. The backtest lives on its own research tab and is never mixed into live figures.

13. Questions

Is any real money involved?

No. Both accounts are simulations with $10,000 of simulated cash. No orders are sent to any broker.

Did the strategy beat the market in the backtest?

No. Over the reconstructed history it underperformed both SPY and QQQ; the headline numbers are in the proof block at the top of this page, and every month, including every losing month, is on the Backtest (research) page.

Why is a top-10 name not bought?

A rank is not a buy signal by itself. The manager needs a qualifying setup (a dip of at least 3% from the 10-day high, or five consecutive closes in the top 10), an uptrend, a risk-on regime, a free slot and cash. Otherwise it logs a WAIT with the reason.

How fresh are the prices?

Each price shows the source’s own trade time. The source is unofficial and may be delayed. A live NAV is only called complete when every held price is less than 20 minutes old during the session.

Can I follow these trades?

This is research, not advice. Prices may be delayed, fills are simulated at the open with assumed slippage, and the results are hypothetical.

DISCLOSURE HYPOTHETICAL / SIMULATED PAPER RESULTS. Not actual trading. Not investment advice. Backtested results are reconstructed history and have inherent limitations, including survivorship bias and the benefit of hindsight.