# Track B — 2026 pre-draft baseline stake: methodology

Locked before the 2026 MLB Draft (July 11, 2026). This directory is the ledger:
`projections.csv` (every universe player, every flag), `metrics.json` (the staked
model's historical reference skill and universe counts), `build_summary.json`
(build provenance), and `manifest.json` (SHA-256 over all of it plus the raw board
snapshots, OpenTimestamps-stamped). Governing document: `prereg/PRE-REGISTRATION.md`,
Amendment 2026-07-06.

## Universe

College position players from three free public boards — MLB Pipeline Top 250,
FanGraphs Board (2026 draft), Perfect Game Top 400 — admitted on ≥2 boards or on
FanGraphs with a hit-tool grade. JuCo excluded cross-board (NCAA rule); two-way
players classified by FanGraphs' primary role where available, else included and
flagged. Same-name/different-school splits go to a review queue, never silently
merged; cross-board school-spelling variants are merged via an explicit alias table
in `src/prospects_makeup/universe.py`.

## Consensus rank

Within-board percentile = (rank − 0.5) / board depth, over each board's full
published depth; boards a player is absent from are censored at rank depth+1;
consensus = median of the three percentiles, requiring ≥2 real appearances.

## Model

The pre-registered hurdle form — P(reach MLB) × E[6-season bWAR | reached], both
HistGradientBoosting — trained on the 2012–2018 drafted-college-bat spine (1,419
players), **without draft-slot features** (slot is unknown pre-draft, and the stake
must be independent of the market it is judged against). Features: college platform
stats (point-in-time, season ≤ draft year, from B-Ref College Register pages
resolved via B-Ref search), age, position, conference, has_college_stats. Missing
college stats stay NaN (native handling); `seed=0` everywhere.

## Flags

`delta = consensus_rank_pct − model_pct`, where both sides are smaller-is-better
rank percentiles **within the universe** (the raw within-board consensus percentile
lives on a different scale and would bias flags toward "overvalued"). |delta| ≥ 0.15
flags a name "undervalued" (model likes far more than the market) or "overvalued";
the top 15 per side by |delta| are `highlighted`. **All flags are uncalibrated,
provisional, and not validated** (pre-registration item 8 / Track B fallback rule).

## Reference skill of the staked model (see `metrics.json` for the numbers)

`slot_free_reference` is the staked model's own out-of-sample walk-forward Kendall
τ-b on 2012–2018 (test classes 2015–2018), with class-cluster bootstrap CI and the
within-class-shuffle placebo. `slot_free_reference_top100_picks` restricts the same
held-out predictions to top-100 overall picks — a closer analogue to this board-top
universe.

## Limitations (read before quoting any number)

- The reference τ-b is measured on the full drafted spine (~200 players/class,
  rounds 1–20). The live universe is a board-top subset (~65 players) where rank
  discrimination is much harder; live skill is likely lower than the full-spine
  reference, and the top-100-picks reference is the better guide.
- The naive-slot reference in the historical harness is a draft-slot curve, not the
  board consensus the flags compare against.
- The training sample includes JC draftees; the live universe excludes them.
- The model is baseball-only. This stake is Track B infrastructure and a forward
  test of the baseline — it says nothing yet about the makeup thesis (Plan 4).

## Post-draft evaluation (promise)

After the draft: compare projections and flags against realized draft slots
(immediately) and against 6-season windowed bWAR when the class matures (2032),
under the pre-registered metrics. A null result is a legitimate outcome.
