---
title: Add a role-holder field to the game sample engine
type: task
status: draft
description: >-
  Give the game sample engine a role-holder field read from the latest games, as a situation-matched
  sample filter; the opponent-quality half is built by the curated opponent-baseline task, and the
  lift statistic and predictor screening were dropped 2026-10-09.
aliases:
  - ████████████████████-██████-███-█████████-████████████-██-████-██████-█████████
base_uri: user:task/league/add-role-holder-and-opponent-quality-to-game-sample-engine.md
created_at: '2026-10-01T23:48:44.842Z'
entity_id: 7c65228c-1c42-4ae0-b4b0-bb8a58e5b6d0
observations:
  - ████████████████████████████████████████████████
  - ████████████████████████████████████████████████
owner_identity_uri: █████████████████████████
priority: Medium
public_read: true
relations:
  - follows [[████████████████████-████-█████-██-████-██████-█████████]]
  - relates [[█████████████-██████████████-█████-███-████-███████-██████████]]
tags:
  - user:tag/league-xo-football.md
  - user:tag/software-task.md
  - user:tag/nfl-betting.md
updated_at: '2026-10-25T21:21:49.013Z'
visibility_analyzed_at: '2026-11-05T23:48:17.699Z'
---

Give the game sample engine a role-holder field, so a team subject can read "this team's WR1" without naming a pid. One hand-written query and two pricing-kit subcommands then retire.

## Why

[[████████████████████-████-█████-██-████-██████-█████████]] takes every plain field from the duplicates audit's ENGINE-NEEDS-FIELD rows. One row asks for more than a field: **a role-holder field.** QB1, RB1, WR1-3 and TE1 from the latest games under the current staff, never a season rank. Roles change week to week (operator, 2026-10-09).

It needs its own definition and validation, so the operator kept it out of the play-grain plan on 2026-10-01. On 2026-10-09 the operator dropped two other capabilities the audit named, the joint-versus-independent lift statistic and pre-game predictor screening: both price an individual from a population, per [[user:guideline/nfl/betting/bet-the-game-read-against-the-market.md]]. The role-holder field is a situation-matched sample filter, never a pricing input.

The audit's opponent-quality adjustment is built by [[█████████████-██████████████-█████-███-████-███████-██████████]]: the engine's opponent baseline stage reads a metric against each opponent's curated other games, weighted by its denominator.

## Kept until this lands

- `text/nfl/nfl-betting/query/team-game-role-cohort.sql`
- `cli/nfl/pricing-kit.py` (the `cohort` and `price-a-same-game-parlay` subcommands)

What the engine lacks for each, from the 2026-10-01 duplicates audit:

| File | Missing |
|---|---|
| `team-game-role-cohort.sql` | A role-holder field (QB1, RB1, WR1-3, TE1 by season rank), team-subject teammate fields, and a joint-versus-independent lift statistic |
| `pricing-kit.py` `cohort` and `price-a-same-game-parlay` | The cohort joint, lift and at-least-one measures, with spread and total bands and a bootstrap, built over `team-game-role-cohort.sql`. Same gaps as the row above. |

## Notes

Draft. Plan with [[user:workflow/write/write-software-implementation-plan.md]] after the play grain's stage two lands.
