---
title: Grade DST Fantasy Score markets
type: task
status: draft
description: >-
  Close the DST grading gap in PrizePicks Fantasy Score, which refuses every defense today because
  no evidence-backed defensive scoring table exists. Blocked on capturing the book's own settled
  score rather than on implementation.
base_uri: user:task/league/grade-dst-fantasy-score-markets.md
created_at: '2026-09-12T14:48:42.623Z'
entity_id: ecfb0098-e689-4b84-8976-cdfcbacdc3cc
observations:
  - ████████████████████████████████████████████████
owner_identity_uri: █████████████████████████
public_read: true
relations:
  - relates [[████████████████████████-████-███-█████-████-████████-██████████]]
tags:
  - user:tag/league-xo-football.md
  - user:tag/software-task.md
updated_at: '2026-09-12T14:56:30.713Z'
visibility_analyzed_at: '2026-11-05T23:49:33.883Z'
---

# Grade DST Fantasy Score Markets

## Why this is a draft rather than work

The grading gap is real and worth closing, but nothing in the data or the public record currently determines the scoring table, so there is no implementation to write yet. This entity exists so the gap has an owner when that changes.

`calculate_metric_value` refuses `GAME_PLAYER_PPR_FANTASY_POINTS` for any position outside QB, RB, WR and TE, because the `prizepicks` format config declares no defensive weight and the scoring kernel would otherwise fall back to registry defaults the book does not use. Graded against those defaults a defense runs a 73% over-rate against PrizePicks' own line, where a correctly-priced market sits near 50%.

## What is blocked, precisely

Three independent things would each have to fail for this to be measurable today, and all three do:

- **The only observable is the posted line, which is a forecast rather than an outcome.** Each settled game therefore yields one noisy inequality (`score > 4.5`) instead of an equation, and the precision of any over-rate estimate scales as the inverse square root of the sample.
- **The sample is 37 player-games, all in 2023**, and the market has not been offered since, so it cannot grow. That puts a 16 percentage point half-width on a 50% over-rate. Three candidate tables that differ by about two points per game all sit inside it: the conventional weights without points allowed (62.2%), the same with fumble recoveries at 1 (48.6%), and the same with sacks at 0.5 (43.2%). A least-squares fit over the six stat columns is noise, at an R-squared of 0.146 and rank-deficient because no game in the sample has a safety.
- **PrizePicks publishes no DST table.** It publishes the kicker one, which is how the kicker half of this market was authored, and third-party scoring calculators explicitly decline to state the DST rules and advise checking in-app.

The sample does refute the current registry default, so refusing is not merely conservative — the one table we can reject is the one the kernel would otherwise use.

## What would unblock it, in order of strength

- **Capture the book's own settled score.** `prop_market_selections_index` already has `metric_result_value` and `selection_result`, and both are empty for every Fantasy Score selection at every position, not just DST. Populating them at settlement turns each game into an exact equation, at which point roughly six games pin the six weights outright and the sample-size objection disappears. This is the highest-value item and it is not DST-specific: it would let any Fantasy Score table be verified against the book rather than inferred from its lines.
- **Obtain the table from the PrizePicks app's own rules surface**, the way the kicker table came from their published scoring article.
- **Wait for the market to return.** Nothing to do until it does, and the first item is what makes its games useful when it happens.

## Scope note

Widening `prizepicks_fantasy_score_positions` to include DST is a two-line change. It is deliberately not the deliverable: the deliverable is a defensive scoring table backed by evidence, plus the weights in the `prizepicks` format config for the kernel to read. Shipping the widening without the table would store confident rates on a market nobody can currently bet, which is the wrongly-settled-is-invisible failure the refusal was written to prevent.
