# Pre-registro Entrega 3: anticipar el adjudicatario en agregado

> **Documento SELLADO el 15-07-2026** con las cinco decisiones resueltas por
> Alfonso ese mismo día. En el momento del sellado NO se ha corrido ningún modelo
> ni se ha mirado el periodo de evaluación. El sello es el hash del commit de este
> fichero más su sello OpenTimestamps, igual que las Entregas 1 y 2.
>
> Todos los números que aparecen aquí se han medido **solo con el periodo de
> entrenamiento** (desenlaces hasta el 31-12-2023). Para estimar de antemano la
> dificultad y los baselines se ha usado una validación interna: se tratan como
> "examen de mentira" los casos cuyo aviso cayó en 2023, y el historial de cada
> caso se construye **estrictamente con lo resuelto antes de su fecha de aviso**.
> **En ningún momento se ha mirado 2024.** Esa es la misma promesa de la Entrega
> 1: los parámetros se fijan sin ver el examen.
>
> Regla de oro del pre-registro: lo que aquí se fije no se recalcula ni se ajusta
> después de ver resultados. Si una elección sale mal, se publica igual con su
> pero. Complementa `pre-registro-entrega-1.md` (el patrón), `sondeo-datos.md`
> (la Verdad A: el dato existe, la dificultad es la cardinalidad), `bd-diseno.md`
> (el esquema) y `pipeline-v0-informe.md` (los números del dato).

## 1. La pregunta, en una frase

El día que se publica una licitación, y viendo solo lo que se sabe ese día,
¿podemos poner al ganador real entre nuestros K candidatos propuestos, medido
sobre el conjunto de licitaciones, mejor que la simple inercia de "suele ganar
el de siempre", y sabiendo cuándo NO nos atrevemos a proponer?

**Importante y dicho de antemano:** esto se mide **en agregado** (qué fracción de
todas las licitaciones acertamos), nunca como el espectáculo de "predijimos que
ganaría tal empresa concreta". Acertar el top-1 exacto es ambicioso; se declara
así y se reportan también top-3 y top-10, que es donde un recomendador de este
tipo aporta valor real.

## 2. El universo del examen: qué licitaciones entran

**Entran** las licitaciones (a grano de lote, como en la Entrega 1) que cumplan
las cuatro condiciones:

- **Publicadas en 2024 con desenlace conocido en 2024**, por fecha real, no por
  año de fichero. Mismo corte que la Entrega 1, para que las tres entregas hablen
  del mismo examen.
- **Adjudicadas** (no desiertas): tiene que existir un ganador que anticipar.
- **Con adjudicatario identificado por NIF.** Sin NIF no hay etiqueta que
  puntuar. En el dato el ganador viene con NIF y razón social (sondeo, sección d).
- **De un órgano con historial mínimo** antes de la publicación (ver el filtro
  justificado abajo). Sin historial no hay con qué construir candidatos.

**No entran (exclusiones declaradas):** desiertas (son la Entrega 1),
publicadas fuera de 2024, lotes sin ganador con NIF, y los excluidos por el
filtro de historial mínimo. Como en la Entrega 1, quedan fuera los contratos
menores, las plataformas autonómicas agregadas y los expedientes anulados
(tombstones), que ni siquiera están en la base.

**El filtro de historial mínimo, justificado solo con entrenamiento.** Para poder
proponer candidatos hace falta que el órgano tenga pasado. Medido en la
validación interna (casos con aviso en 2023): solo el **3,2%** de los casos
tienen menos de 5 empresas distintas con historial previo en su órgano, y el
**6,2%** menos de 10. Es una cola pequeña y barata de excluir. Propuesta:
**exigir que el órgano tenga al menos N adjudicaciones resueltas antes de la
publicación** (N a fijar; con N que deje fuera esa cola de "órgano casi sin
pasado" se pierde poco universo y se gana un examen limpio). Lo que se excluya
por este filtro **se cuenta y se publica**, no se esconde.

**Alcance declarado (se dice en la demo, sin letra pequeña):** igual que en la
Entrega 1, esto es la porción de perfiles del contratante sin menores, no el
100% del gasto público. Es una porción grande y representativa, pero es una
porción.

**Tamaño del universo de entrenamiento (medido):** hay **278.239 adjudicaciones
con ganador identificado** resueltas hasta el 31-12-2023, repartidas entre
**53.380 empresas ganadoras distintas** (2.267 de ellas UTE). Ese es el reto en
crudo: acertar una empresa entre decenas de miles. El tamaño exacto del examen
de 2024 se medirá en el momento del sellado a partir del universo definido
arriba, sin mirar el resultado.

## 3. El conjunto de candidatos, definido de antemano

Para cada licitación se fija **antes de predecir** un conjunto de empresas
candidatas: las que ya tienen pasado relevante. El modelo ordena dentro de ese
conjunto; no puede proponer a nadie de fuera. Definir esto de antemano es lo que
hace el examen honesto.

**La tensión central, medida.** Hay dos formas naturales de decir "empresa con
pasado relevante", y tiran en direcciones opuestas:

| Universo de candidatos | Mediana de candidatos por licitación | P90 | Máx | Ganador real dentro (techo) |
|---|---|---|---|---|
| Con historial en ese **órgano** | **121** | 553 | 2.539 | 95,6% |
| Con historial en esa **división CPV** (2 dígitos) | 2.025 | 6.590 | 8.402 | 98,3% |
| **Unión** (ese órgano o esa división) | 2.324 | 6.819 | 9.721 | 98,5% |

Lectura en llano: si dices "candidato = cualquiera que haya ganado algo de ese
sector antes", casi siempre el ganador está dentro (98%), pero el conjunto es
enorme (miles de empresas) y ordenar ahí es dificilísimo. Si dices "candidato =
quien ya ha trabajado con ese órgano", el conjunto baja a un centenar de
empresas, mucho más tratable, y aun así el ganador real está dentro el 95,6% de
las veces. La división CPV a 2 dígitos es demasiado gruesa para acotar (el sector
"construcción" son miles de empresas).

**La trampa del candidato imposible, y el techo de lo alcanzable.** Si el
ganador real es una empresa nueva, sin ningún pasado, el sistema **no puede
acertarla**: no estaba en el conjunto de candidatos. Eso no es un fallo del
modelo, es un límite del problema, y se mide y se publica como **techo de lo
alcanzable**: la fracción de ganadores que ni siquiera estaban en el universo de
candidatos. Medido en la validación interna, ese techo es alto (alrededor del
1,5% de ganadores son empresas irreconocibles de antemano con el universo unión),
pero **la cifra real solo se conoce al final, sobre 2024**, y ninguna métrica de
acierto puede superar ese techo. Queda definido como métrica de primer nivel: se
reporta "el sistema acertó el X% de un máximo alcanzable del Y%".

## 4. Las métricas, con su definición exacta de acierto

Todo se mide **sobre el conjunto** de licitaciones evaluables, no sobre casos
elegidos.

- **Acierto top-1:** en qué fracción de licitaciones nuestra empresa mejor
  clasificada es la que ganó de verdad.
- **Acierto top-3 y top-10:** en qué fracción el ganador real está entre
  nuestras 3 (o 10) primeras. Esta es la métrica que de verdad enseña el valor:
  un recomendador que mete al ganador en su terna más de la mitad de las veces es
  útil aunque el top-1 exacto sea difícil.
- **Techo de lo alcanzable** (sección 3): el máximo que cualquier sistema podría
  sacar dado el universo de candidatos. Todas las cifras de acierto se leen
  contra este techo, no contra el 100%.
- **Cobertura:** en cuántas licitaciones nos atrevemos a proponer candidatos (no
  todas pasan el filtro de historial ni superan el umbral de confianza).
- **Abstención declarada:** el sistema dice "no lo sé" cuando el órgano tiene
  poco pasado, cuando el conjunto de candidatos es demasiado grande y plano para
  ordenar con criterio, o cuando su propia confianza en el primer candidato cae
  por debajo de un umbral fijado en entrenamiento. Sobre lo que no se abstiene,
  las métricas deben ser claramente mejores; sobre lo que se abstiene, se publica
  cuántos son y por qué. Abstenerse de casi todo para lucir un top-1 alto sería
  trampa, y se declara ese límite.

## 5. Baselines honestos (la vara de medir)

Esto es lo más importante de la Entrega 3, y se dice de antemano: **la
contratación pública tiene muchísima inercia, así que el baseline va a ser
fuerte.** Si el modelo no lo bate, se publica igual y la historia pasa a ser la
inercia misma: "el mejor predictor del próximo ganador es quién ganó antes", que
es un hallazgo honesto y publicable.

Baselines medidos en la validación interna (casos con aviso en 2023, historial
estrictamente anterior):

| Baseline (regla simple, sin modelo) | Top-1 | Top-3 |
|---|---|---|
| **Incumbente del órgano en esa división CPV** (la empresa que más veces ganó con ese órgano en ese sector antes de la fecha) | **30,9%** | **52,1%** |
| Incumbente del órgano (sin mirar sector) | 9,4% | 18,1% |
| **Líder nacional de la división CPV** (la que más ganó en ese sector en todo el país) | 3,4% | 7,1% |

El incumbente órgano por sector es un rival duro: acierta el ganador exacto casi
1 de cada 3 veces y lo mete en su terna más de la mitad. Batir eso es la
condición de éxito. El líder nacional de sector es el suelo (una regla tonta que
ignora quién es el comprador). **La vara oficial es el incumbente órgano por
sector**; el modelo tiene que mejorar su top-1 y su top-3.

**Nota honesta sobre el segundo baseline.** El encargo pedía "el líder del CPV en
la provincia". La base actual **no resuelve la provincia de forma limpia** (el
código DIR3 del órgano no da provincia sin un registro externo que no se ha
montado; ver `bd-diseno.md`, limitaciones). Para no inventar geografía se
sustituye por el **líder nacional de la división CPV** y se declara la
sustitución. Si más adelante se mapea DIR3 a provincia, se añade el baseline
provincial; hoy no se finge tenerlo.

## 6. La regla anti-fuga (idéntica a la Entrega 1)

En el momento en que el sistema propone candidatos para una licitación, solo
puede usar lo que un observador habría sabido ese día:

- Del propio expediente: presupuesto, CPV, órgano, tipo de procedimiento, número
  de lotes, fechas de publicación. Nada del resultado.
- Del historial: solo victorias **resueltas antes de la fecha de publicación**
  del caso que se predice. El conjunto de candidatos, los recuentos de "quién
  ganó cuánto con quién" y cualquier señal derivada se construyen únicamente con
  ese pasado. Ningún agregado incluye el futuro ni el presente del propio caso.

El corte se hace por fecha de aviso y de adjudicación, **nunca por el año del
fichero** (el feed es acumulativo y un expediente cae en el año de su último
snapshot, que puede ser posterior a su adjudicación real). Es el mismo cuidado
que la Entrega 1.

## 7. Los peros, declarados de antemano

- **Empresas nuevas (el techo).** Un ganador sin pasado no se puede acertar. Se
  mide como techo de lo alcanzable (sección 3) y se publica; ninguna cifra de
  acierto puede superarlo.
- **UTEs.** Cuando gana una Unión Temporal de Empresas hay que decidir qué cuenta
  como acierto. En el dato la UTE aparece con su propio CIF (empieza por U) o como
  varios NIF pegados (`bd-diseno.md`). Solo el **1,42%** de las adjudicaciones de
  entrenamiento las gana una UTE, así que no mueve el titular, pero hay que fijar
  la regla (ver decisiones). Propuesta: un acierto cuenta si el sistema pone en
  el top-K **exactamente al adjudicatario tal como consta** (la UTE como entidad
  propia por su CIF); aparte se reporta una variante "blanda" que cuenta acierto
  si algún miembro de la UTE está en el top-K. Se enseñan las dos.
- **Procedimientos con un solo licitador.** Son muchos: en la validación interna
  el **42,7%** de los casos tienen un único licitador. Cuando solo se presenta una
  empresa, "acertar" es más fácil y a menudo coincide con el incumbente. Esconder
  esto inflaría las métricas. Propuesta: reportar los resultados **por separado**
  en dos regímenes, un solo licitador frente a competencia real, igual que la
  Entrega 1 separó baja-cero de competencia. (Ojo: el número de licitadores solo
  se conoce al resolver, así que no filtra el examen; sirve para partir el informe
  al final, no para elegir casos de antemano.)
- **Cobertura del universo.** Perfiles del contratante sin menores. No es el 100%
  del gasto público.
- **No prometemos causalidad.** Es un recomendador de candidatos probables a
  partir del pasado, no una certeza de quién ganará.
- **Prior art.** El recomendador de licitadores ya está publicado (Universidad de
  Oviedo, sondeo). Lo diferencial no es el modelo, es el protocolo de taparle el
  futuro y enseñar la predicción sellada contra lo que de verdad pasó.

## 8. Cómo se sella (igual que la Entrega 1)

- El documento se congela con las decisiones resueltas, se hace **commit** y el
  hash del commit es el sello.
- **Con OpenTimestamps** además del hash (prueba criptográfica anclada en Bitcoin
  de que el documento existía en esta fecha), como en la Entrega 1 y los sobres
  del piloto de coches.
- El orden es sagrado: **primero se sella, después se corre el modelo sobre 2024.**
  Ni una métrica del examen antes del sello.

---

## Decisiones resueltas (Alfonso, 15-07-2026)

1. **K máximo: top-1, top-3 y top-10** (decidido por Alfonso el 15-07-2026,
   "adelante con lo propuesto"). Top-3 es el número que mejor cuenta la historia,
   top-1 el titular ambicioso, top-10 el techo de un recomendador de trabajo.

2. **Universo de candidatos: por órgano** (decidido por Alfonso el 15-07-2026).
   Conjunto tratable (mediana 121 empresas) con techo del 95,6%. La unión
   órgano-o-sector (techo 98,5% pero miles de candidatos) se reporta como variante.

3. **Un solo licitador: régimen separado** (decidido por Alfonso el 15-07-2026).
   Son el 42,7% de los casos; se reportan aparte de la competencia real para no
   inflar el titular.

4. **UTEs: acierto exacto por el NIF que consta como regla oficial** (decidido
   por Alfonso el 15-07-2026), con la variante blanda (algún miembro de la UTE en
   el top-K) como acompañante.

5. **Historial mínimo del órgano: al menos 10 adjudicaciones previas** (decidido
   por Alfonso el 15-07-2026). Excluye solo el 6,2% de los casos y se cuenta.

Estas decisiones quedan congeladas para la Entrega 3 una vez resueltas. Lo
aprendido aquí servirá para entregas siguientes, nunca para recalcular esta.
