PF|TNT

PF|TNT

PLATAFORMA DE ANÁLISIS DE CARGA · FÚTBOL PROFESIONAL

“Lo que no se mide, no se entrena. Lo que no se entrena, no se controla.”

Bienvenido al centro de control de carga del cuerpo técnico. Subí el export GPS o tu planilla de cargas y analizá el día (EWMA + bandas de Bollinger), la semana (sumatoria vs zona esperada por variable), el mes y el macrociclo completo.

EWMA · Bollinger ±2SDZona semanal esperadaACWR RA/EWMA Monotonía · StrainMicrociclo MDCalendar heatmap
🔒 Procesamiento 100% local: tus datos no salen de este ordenador.
⚕️ Aviso clínico: las alertas y semáforos de esta plataforma son apoyo a la decisión del cuerpo técnico y médico — no reemplazan el criterio clínico profesional ni constituyen un diagnóstico.
PF|TNT

PF|TNTANÁLISIS DE CARGA · ALTO RENDIMIENTO

Hoja: Ningún archivo cargado
⚽📊

Arrastrá tu Excel aquí o hacé clic para elegirlo

Acepta .xlsx, .xls, .xlsm y .csv de cualquier sistema GPS (Catapult, STATSports, WIMU, Polar…) o planillas propias de carga, RPE, wellness o partidos.

La app detecta sola las columnas de fecha, las numéricas y las de texto (jugador, posición, MD, microciclo…).

La app encuentra sola la fila de encabezados (aunque no sea la primera), elige la hoja con los datos GPS más completos si el archivo tiene varias, y convierte duraciones hh:mm:ss a minutos. Si tenés una columna «MD» (MD-4, MD-3… MD+1) o «Microciclo», se usará en los análisis del microciclo.

🧠 Resumen ejecutivo para IA

Genera un texto breve para pegar en Claude y crear un PPT de hasta 2 diapositivas con conclusiones accionables para preparador físico, entrenador, cuerpo médico y dirección deportiva.

👁 Vista previa del resumen que se copia
Cargá un Excel/CSV para generar el resumen ejecutivo.

📌 Resumen Ejecutivo — Dirección Deportiva

Indicadores clave del día. Hacé clic en cualquier tarjeta para ir al detalle. Hacé clic en el nombre de un jugador (sidebar) para ver su Ficha unificada.
Se descarga como .html — abrilo y usá Ctrl+P → "Guardar como PDF" para compartirlo.
Aptitud Hoy
Ver semáforo clínico ▸
ACWR del plantel
Ver riesgo de carga ▸
% vs Competencia
Ver volumen/intensidad ▸
⚖️
Comparar plantel
Ver ranking y CV% ▸
Semáforo ejecutivo del plantel. Estado de cada jugador para la métrica elegida: media y máximo diario, último registro y z-score individual (respecto a su propia historia; ±1 normal, ±2 llama la atención).

Fundamento: El z-score individual estandariza cada valor respecto a la propia línea base histórica del jugador (no del grupo), evitando comparar perfiles fisiológicos distintos (Hopkins, 2000 — "individualising" en monitoreo de carga). Es la primera capa de un sistema de alerta temprana: valores |z|>2 en variables de carga externa se asocian a mayor probabilidad de desadaptación aguda cuando coinciden con otras señales (ACWR, monotonía). Se recomienda usar este semáforo como triage diario, no como diagnóstico aislado.
Comparación multi-variable. Elegí hasta 3 métricas adicionales para verlas junto a la métrica principal, todas con la misma agregación diaria elegida arriba — útil para contrastar, por ejemplo, distancia total, distancia a alta velocidad, aceleraciones y RPE en simultáneo.
z-score = (último valor − media del jugador) / desvío del jugador, sobre el período filtrado (≥ 3 días con datos).
Percentiles del gráfico de carga diaria del equipo: P85 (línea roja punteada) marca el umbral superior de sobrecarga aguda relativa, P50 (línea amarilla continua) es la mediana del período y P15 (línea verde punteada) marca subcarga relativa. Las barras cambian de color según en qué zona percentil cae cada día: rojo ≥P85, verde ≤P15, lima en el rango intermedio — método de referencia percentílica usado en monitoreo de carga GPS a nivel profesional para contextualizar valores absolutos sin depender de umbrales fijos arbitrarios.
Control diario de la carga (corto plazo). Cada punto es un día, coloreado por zona de intensidad (terciles del período: 🟢 baja <P33 · 🟡 media · 🔴 alta ≥P66). Se superponen la media móvil 7 días, la EWMA (span 7) — que reacciona antes a los cambios — y las bandas de Bollinger ±2 SD: si un día sale del corredor, es una carga estadísticamente inusual (control SPC). Si la MM7 varía ≥10% (🟠) o ≥20% (🔴) respecto a la semana previa, se muestra una alerta.

Por qué EWMA y no solo media móvil: la media móvil simple (MM7) pondera igual todos los días de la ventana, mientras que la EWMA (span=7, α≈0.25) da más peso a los días recientes, detectando cambios de tendencia con menor retraso (Menaspà, 2017; método adoptado por sistemas GPS profesionales tipo Catapult/STATSports). Las bandas de Bollinger (±2 SD sobre MM7) aplican control estadístico de proceso (SPC): un día fuera del corredor no es solo "alto", es estadísticamente atípico respecto a la variabilidad reciente del propio jugador, señal más específica que un umbral fijo. Las zonas de intensidad por terciles (P33/P66) permiten leer de un vistazo si la sesión fue de carga baja, media o alta en relación al período analizado, sin depender de valores absolutos que varían por posición o rol táctico.
EWMA: media exponencialmente ponderada, α = 2/(span+1) = 0.25 · Bandas: MM7 ± 2·SD móvil (ventana 7, mín. 3 datos). Metodología del sistema RTP v30 (EWMA · Bollinger · SPC).
ACWR (agudo:crónico): carga de 7 días vs referencia crónica de 28 días, calculado en sus dos formas — coupled (la crónica incluye los 7 días agudos; Gabbett 2016 / Williams 2017) y uncoupled (la crónica excluye la ventana aguda; Windt & Gabbett 2019: en RA usa los días t-27…t-7 y en EWMA la crónica desfasada 7 días). El uncoupled evita la correlación espuria del coupled y suele dar valores algo más altos ante picos recientes. Método a elección: EWMA (span 7/28, más sensible a lo reciente) o promedios móviles (RA). El gráfico y la tabla muestran ambas versiones a la vez. Zona óptima ≈ 0.80–1.30; >1.50 riesgo elevado; <0.80 subcarga. Incluye monotonía semanal (ideal < 2) y strain de Foster.

Contexto y limitaciones del ACWR: el ratio agudo:crónico es la métrica de referencia para relacionar carga reciente con capacidad de tolerancia construida en el mesociclo previo, pero ha recibido crítica metodológica (Impellizzeri et al., 2020) por autocorrelación matemática en la forma coupled y por sensibilidad al método de cálculo (RA vs EWMA). Por eso este panel muestra ambos métodos y ambas variantes en paralelo: permite contrastar señales antes de tomar una decisión de carga, en lugar de confiar en un único número. La monotonía (variabilidad diaria baja = rutina repetitiva) y el strain (carga semanal × monotonía) de Foster (1998, 2001) complementan al ACWR detectando otro tipo de riesgo: la falta de variación en el estímulo, asociada a sobreentrenamiento incluso con cargas absolutas moderadas.
Días sin registro cuentan como carga 0. Con menos de 28 días desde el primer registro el valor se marca como provisional (*). El uncoupled necesita ≥ 8 días de historia; hasta entonces figura «–».
Monotonía y strain semanal
📋 Registro de alertas ACWR (histórico, ACWR coupled > 1.5)
Cada vez que un jugador supera ACWR coupled > 1.5 en algún día del historial cargado queda registrado acá, para trazabilidad médica/legal. El registro es acumulativo dentro de la sesión y se recalcula sobre la métrica/método elegidos arriba.
¿Qué hace esta pestaña? Compara a todos los jugadores del período filtrado en una misma métrica, en tres lecturas: 1) Barras — el valor agregado de cada jugador (promedio diario, total del período o máximo diario, según el selector); la línea punteada amarilla es la media del equipo: barra verde = por encima de la media, azul = por debajo. 2) Boxplot — la distribución de la carga diaria de cada jugador: la caja abarca del percentil 25 al 75, la línea central es la mediana y los puntos sueltos son outliers (días atípicos para ese jugador). 3) Tabla de ranking — ordena de mayor a menor e indica % vs media del equipo, z-score entre jugadores (cuántos desvíos se aleja del grupo; |z| > 1 sale del rango grupal) y CV% (variabilidad día a día: alto = carga irregular). Sirve para detectar quién acumula más o menos carga que el plantel y quién tiene perfiles de carga inestables.

Uso recomendado: esta vista es la herramienta de gestión de plantel por excelencia — responde "¿quién entrena más/menos que el grupo?" y "¿quién tiene un patrón de carga inconsistente (CV alto)?". El boxplot con outliers ayuda a diferenciar entre un jugador con carga alta pero estable de otro con picos aislados (ej. sesiones de recuperación de lesión combinadas con partidos completos), información clave para individualizar la planificación semanal.
Distribución diaria por jugador (caja = P25–P75 · línea = mediana · puntos = días atípicos)
¿Qué mide esta pestaña, en criollo? Por cada tipo de carga (distancia, sprints, aceleraciones, etc.), mira si el jugador viene acumulando más o menos trabajo que lo habitual en su propia historia — no lo compara contra el resto del plantel, lo compara contra sí mismo. Esto se llama método FWF (Matas-Bustos et al. 2025, PLOS ONE) y es una generalización del ACWR clásico (que usa un solo par 7/28 días) a varias ventanas de tiempo (τ) a la vez, para no depender de un único corte arbitrario.

Heatmap ∑T FWF — "¿qué tan alto está hoy, comparado con su propia historia?" Para cada variable y cada ventana τ, calcula la carga acumulada y la ubica como percentil histórico del jugador: percentil histórico = si dice 90%, significa que este es uno de los valores más altos que tuvo ese jugador en todo su historial (no significa "90% de riesgo"). La columna ★ GLOBAL promedia todas las variables para esa ventana, como una foto resumen. Heatmap ΔT FWF — "¿pegó un salto raro de una sesión a la otra?" Muestra el cambio respecto a la sesión anterior en z (z-score: cuántos desvíos estándar se alejó de lo que ese jugador viene haciendo; z cerca de 0 = normal para él, z alto en positivo o negativo = salto inusual). Heatmap de equipo — compara a todo el plantel en la ventana τ marcada con ★ (la más cercana a la elegida abajo), ordenado de mayor a menor carga aguda.

Cómo leer los colores: en los heatmaps de percentil, verde/frío = por debajo de lo habitual del jugador, ámbar = en su rango normal, rojo/caliente = por encima de lo habitual — igual criterio de semáforo que en el resto del dashboard (). En el heatmap ΔT, verde = bajó carga respecto a la sesión anterior, rojo = subió fuerte. Ni un percentil alto ni un salto en rojo son automáticamente un problema: pueden responder a una planificación intencional (ej. sesión de desarrollo antes de partido); son una señal para revisar con contexto, no una alarma definitiva.

Fórmulas y qué significa cada dato de la celda (v75):
  • Ecuación 9 — AW(τ): AW(τ) = Σ (carga de los últimos τ días). Es simplemente la suma de la variable elegida (ej. distancia total) en la ventana de τ días que se está mirando en esa fila (τ=3d, τ=7d, τ=14d, etc.). No es un promedio ni un puntaje: es el total acumulado de trabajo real en esa ventana. En el código es fwfCell().aw.
  • Ecuación 17 — ΔACW: ΔACW = AW(τ) actual − AW(τ) de la ventana anterior. Es la diferencia entre la carga acumulada de la ventana más reciente y la de la ventana inmediatamente anterior (mismo τ, un paso atrás en el tiempo): si es positivo, el jugador acumuló más carga que en el período previo; si es negativo, acumuló menos. En el código es fwfCell().acw, y su versión en desvíos estándar (z-score) es fwfCell().acwZ, la que se colorea en el heatmap ΔT FWF.
  • Qué es cada símbolo dentro de una celda del heatmap ∑T FWF:
    • AW = ... → el valor de la Ecuación 9 de arriba: la carga total acumulada en esa ventana τ, en las unidades originales de la variable (ej. metros, nº de sprints).
    • P... (texto entre paréntesis) → el percentil histórico de ese AW(τ) respecto a todas las ventanas anteriores del mismo jugador (90% = de los valores más altos que tuvo nunca).
    • Δ... (el triángulo/delta) → es exactamente la Ecuación 17: cuánto cambió el AW(τ) de esta ventana respecto a la ventana anterior, en las mismas unidades (Δ+120 = acumuló 120 unidades más que la vez anterior; Δ-80 = acumuló 80 menos).
    • n=... / ⚠️n=... → cuántos datos históricos del jugador se usaron para calcular el percentil y el z-score de esa celda; el ⚠️ avisa cuando el historial todavía es corto para esa ventana τ (lectura preliminar).
🔎 Reporte rápido — a quién mirar primero
📖 Eje Y: ventana de tiempo τ analizada (τ=3d, 7d, 14d…), de la más corta arriba a la más larga abajo; ★ marca la ventana aguda elegida arriba (τ agudo). Eje X: cada variable numérica de carga registrada (sin la columna "Microciclo", que es de planificación, no de carga). Color de la celda: verde = carga en el rango habitual del jugador, ámbar = atención (se aleja algo de lo habitual), rojo = atípico (muy por encima o por debajo de su propia historia). El texto de cada celda muestra AW (Ecuación 9), percentil histórico y Δ (Ecuación 17) — ver fórmulas completas en la ayuda de arriba.
📖 Eje Y: misma ventana τ que el heatmap de arriba. Eje X: mismas variables numéricas de carga. Color de la celda: refleja el cambio (Δ, Ecuación 17) respecto a la ventana anterior en desvíos estándar — verde = bajó carga, ámbar = variación moderada, rojo = subió fuerte respecto a lo que veníamos viendo. Un rojo acá no es automáticamente malo: puede ser una progresión de carga planificada, por eso conviene mirarlo junto al heatmap de arriba.
📈 Delta por variable — evolución y zonas de riesgo
📖 Cada punto es el mismo Δ (z-score del ΔACW, Ecuación 17) que colorea el heatmap de arriba, pero mostrado sesión a sesión para la variable elegida. Arriba del cero = la carga acumulada subió respecto a la ventana anterior (ascenso); abajo del cero = bajó (descenso). Las bandas de fondo marcan el mismo criterio de 3 zonas que el resto de FWF: verde |z|≤1 (habitual), ámbar 1<|z|≤2 (atención), rojo |z|>2 (atípico) — tanto para subidas como para bajadas. Un punto marcado con ◆ indica una tendencia sostenida (3 sesiones seguidas en la misma dirección con |z|>1), que pesa más que un pico aislado. Ningún hallazgo aquí es un diagnóstico: es una señal para revisar junto a RPE/wellness/dolor referido.
📖 Eje Y: cada jugador del plantel, ordenado de mayor a menor carga aguda. Eje X: variables numéricas de carga a la ventana τ agudo elegida arriba. Color de la celda: percentil histórico de ESE jugador contra su propia historia (no contra sus compañeros) — verde = por debajo de lo habitual para él, ámbar = en su rango normal, rojo = por encima de lo habitual para él.
Constructor libre estilo Tableau/Power BI: arrastrá columnas desde la izquierda. Filas = eje X · Valores = hasta 6 métricas numéricas a la vez · Color/Serie = separar en series. Con varias métricas: barras/líneas/área las grafican juntas (usá Escala para compararlas: doble eje con 2 variables, z-score o 0–100 con más); Dispersión con 2 = X-Y con recta de tendencia y r, con 3-6 = matriz de dispersión; Matriz de correlación = coeficiente r de Pearson entre todas las métricas elegidas. Tocá ✕ para quitar. El botón 📷 del gráfico lo descarga como imagen.

Filosofía de diseño: este explorador replica la lógica de herramientas de BI (Tableau/Power BI) para que el cuerpo técnico pueda formular preguntas ad-hoc sin depender de un desarrollador — por ejemplo cruzar posición × microciclo × distancia a alta velocidad, o correlacionar RPE subjetivo con distancia total. La matriz de correlación (Pearson r) es útil para validar si dos métricas GPS aportan información redundante (r>0.8) o complementaria, decisión relevante al elegir qué variables monitorear diariamente sin sobrecargar al cuerpo técnico de datos.
Vistas rápidas:

Filas (eje X)

Valores (hasta 6 numéricas; texto permitido en Dispersión)

Color / Serie

¿Quién puede entrenar con normalidad hoy? Este panel traduce todas las señales del sistema (ACWR, z-score de carga, monotonía/strain de Foster, dolor referido y wellness subjetivo si existen en el archivo) en un semáforo único por jugador, pensado para lectura rápida de cuerpo técnico, médicos y fisioterapeutas, sin necesidad de interpretar gráficos.

Marco conceptual: este semáforo integra un modelo de "carga combinada" (Windt & Gabbett, 2017): ninguna métrica aislada predice riesgo de forma confiable, pero la combinación de carga externa (ACWR, z-score), carga interna/percibida (RPE, wellness) y señales clínicas (dolor referido) mejora la sensibilidad de detección. El dolor referido se trata como bloqueante absoluto siguiendo el principio de "red flag clínica" — ninguna variable de carga compensa un síntoma físico activo, decisión que debe quedar siempre bajo criterio médico final y no solo algorítmico.
📖 Cómo se calcula y cómo decidir

Reglas de riesgo (se acumulan puntos 0–100, mismo motor que el tab Estado · Gauges):

• ACWR > 1.5 → +30 (Gabbett 2016) · ACWR 1.3–1.5 → +15 · ACWR < 0.80 sostenido → +10 (detraining)
• Z-score de carga (último valor vs media personal) > 2 → +20 · 1.5–2 → +10
• Monotonía semanal > 2.5 → +15 (Foster 2001) · Strain > P90 personal → +10 (Foster 1998)
• Dolor / molestia referida (columna de dolor, si existe en el archivo, valor > 0) → +35 (bloqueante, prioridad clínica)
• Wellness compuesto (sueño+fatiga+estrés+ánimo, si existen) por debajo de su media personal −1 SD → +15
• Historial < 7 días → el índice se marca como provisional

Semáforo final: 🟢 APTO — Entrenamiento normal (0–24 pts, sin dolor) · 🟠 APTO CON CONTROL (25–49 pts: ajustar volumen/intensidad, vigilancia médica) · 🔴 NO APTO / RESTRINGIR (≥50 pts o dolor referido: derivar a fisioterapia/médico antes de entrenar con el grupo).

El dolor referido es bloqueante por sí solo: ningún valor de ACWR compensa una molestia física activa.

🔒 Privacidad de datos de salud: esta pestaña procesa datos sensibles (dolor referido, wellness). Todo el cálculo ocurre localmente en este navegador — no se envía información a ningún servidor. Compartí las fichas clínicas solo con personal médico autorizado y conforme a la normativa de protección de datos de salud vigente en tu país/club.
Semáforo del plantel — hoy
Click en los encabezados para ordenar. "Motivo principal" muestra la señal de mayor peso detectada por jugador.
Detalle individual (fichas clínicas)
¿Qué acción tomar hoy? Adaptación en español del árbol clínico de manejo de carga (inspirado en protocolos de manejo de carga/lesión tipo NBA/Premier League) usando el z-score de carga que ya calcula playerMetrics() — el mismo motor estadístico usado en ACWR y Estado. Este dashboard no ingiere datos subjetivos de bienestar, por eso la lógica se basa exclusivamente en la desviación del dato de GPS del día vs. la media histórica del jugador y en cuántos días consecutivos se sostiene esa desviación.

⚕️ Esta herramienta prioriza a quién mirar hoy; no es un diagnóstico ni reemplaza la evaluación del cuerpo médico. Validá siempre contexto, minutos y estado del jugador antes de intervenir.
🧭 Qué hace · Cómo lo hace · Por qué · Importancia (carga externa/interna/recuperación)

Qué hace: clasifica el dato de GPS del día elegido en 5 zonas (muy baja / baja / habitual / alta / muy alta) comparándolo contra el historial propio del jugador — nunca contra el promedio del equipo — y marca cuántos días consecutivos sostiene esa desviación.

Cómo lo hace (v82): usa la función compartida pfBaseline() — la MISMA que usa la tabla de Reporte de Sesión, para que ambas pestañas den siempre el mismo número. El baseline es el historial del mismo tipo de día (MD) cuando hay ≥5 sesiones propias de ese MD; si no alcanza, cae al historial mixto (todos los tipos de día). Los días de descanso o sin convocatoria (carga 0) se incluyen como carga real (metodología ACWR/monotonía: Gabbett 2016, Foster 1998/2001) y nunca se compara contra sesiones futuras a la fecha analizada. La "persistencia" (días consecutivos) es una pregunta distinta y se mide siempre sobre la serie diaria completa, no sobre el historial de un solo MD (demasiado disperso — una sesión cada 5-7 días — para sostener ese conteo).

Por qué se hace así: mezclar entrenos y partidos en un mismo z-score infla artificialmente la desviación de cualquier día de partido (los partidos siempre tienen más volumen); y comparar contra el promedio del equipo ignora que cada jugador tiene su propio patrón de esfuerzo (Hopkins, 2000: individualización estadística). El baseline por MD resuelve ambos problemas a la vez.

Importancia para carga externa/interna y recuperación: este árbol es la primera línea de priorización diaria — decide a quién mirar HOY antes de que un patrón de sobrecarga externa (distancia, HSR, aceleraciones) se traduzca en fatiga acumulada, síntomas de carga interna (RPE, wellness) o, en el peor caso, lesión. Un baseline mal construido genera dos riesgos opuestos: falsos positivos que erosionan la confianza del cuerpo técnico en la herramienta, o falsos negativos que dejan pasar una sobrecarga real. Por eso la consistencia entre pestañas no es un detalle técnico — es lo que permite tomar una decisión clínica con un solo número de referencia, no con tres distintos para el mismo caso.

📖 Cómo se clasifica cada hoja

Nodo raíz: z-score del día vs. media histórica del jugador para la variable elegida.

z > -1 DE → 🟢 Sin acción necesaria.
-2 DE < z ≤ -1 DE → se cuentan los días consecutivos en este rango: 1–2 días → 🟡 Vigilancia — sin acción inmediata; ≥3 días → 🔴 Reportar a cuerpo médico + cuerpo técnico.
z ≤ -2 DE → 🔴 Reportar a cuerpo médico + cuerpo técnico (prioritario), sin pasar por el conteo de días consecutivos.

Vacío = último día disponible
⚙️ Los cortes de este árbol (umbral moderado/extremo y días consecutivos) se ajustan desde junto con el resto de los umbrales de la app — cambiarlos requiere validación previa del cuerpo médico/PF.
Datos crudos con los filtros aplicados. Clic en un encabezado para ordenar. Se muestran hasta 500 filas; el CSV exporta todas.
⚽ % Competencia — Control de Volumen e Intensidad. Cargá el Excel de partidos → el sistema calcula las referencias de competencia (Máximo / Promedio / Óptimo). Cada sesión se clasifica en Volumen (% de la referencia de distancia) e Intensidad (metros/minuto de entrenamiento vs metros/minuto de competencia). La intensidad de competencia = volumen referencia ÷ 98 min de juego.
1 — Subir Excel de Partidos / Competencia
📂⚽

Arrastrá el Excel de partidos aquí o hacé clic para elegirlo

Acepta .xlsx, .xls y .csv — cualquier export GPS de partidos

Columnas requeridas: Distancia Total y Duración/Tiempo (en minutos)

📋 Sin datos de competencia — subí el Excel para comenzar.
2 — Elegir referencia de cálculo
Referencia activa: Óptimo
Fórmulas:
Máximo = valor más alto de todos los partidos
Promedio = media de todos los partidos
Óptimo = (Promedio + Máximo) / 2
% Volumen = (distancia_sesión ÷ referencia_elegida) × 100
Intensidad competencia = referencia_elegida ÷ 98 min
% Intensidad = (m/min_sesión ÷ m/min_competencia) × 100
  m/min sesión = columna *Rel del GPS (directo) o valor_absoluto ÷ duración (min)
🟢 = dato directo de columna *Rel GPS   = calculado (abs ÷ duración)
— si el GPS no tiene columna de tiempo, se usa este valor por defecto

📦 Clasificación de Volumen

Desarrollo > 60% Estímulo de desarrollo
Mantenimiento 40% – 60% Mantenimiento de forma
Activación 30% – 35% Activación pre-partido
Recuperación < 30% Sesión regenerativa
Semáforo de logro:
🟢 ≥90% del objetivo · 🟡 70–89% · 🟠 50–69% · 🔴 <50%

⚡ Clasificación de Intensidad (m/min)

Desarrollo > 110% Supera la intensidad de competencia
Mantenimiento 90% – 110% Intensidad de partido
Mixto 50% – 89% Debajo de competencia
Recuperación < 50% Regeneración / baja intensidad
Intensidad competencia = referencia ÷ 98 min
6 — Control y Comparación — Microciclo (Previsto vs Real)
📊🏋️ Control de cumplimiento del microciclo, específico de % Competencia. Compara, para cada día del microciclo (MD±), el volumen Previsto por el cuerpo técnico contra el Real registrado por GPS, agrupado por la columna de MD detectada: (se reconoce cualquier variante razonable de esa columna: "MD-4", "MD -4 (Ent.)", "Match Day -4", "md_4", números sueltos con o sin signo, etc.). Si elegís Equipo, el «Real» es el promedio del equipo ese día (total del día ÷ cantidad de jugadores que entrenaron ese día, promediado entre todos los días del rango que compartan el mismo MD); si elegís un jugador puntual, el «Real» es la sumatoria de ese jugador para ese día de microciclo dentro del rango filtrado. La columna Real es de solo lectura: se calcula siempre a partir del archivo Excel de GPS cargado y no admite carga manual. Las 5 variables (Distancia Total, HSR +16 km/h, Sprint +25 km/h, Mts Acc +3 y Mts Dcc -3) reutilizan automáticamente las columnas que CP.refs/CP_VARS ya identificaron, sin volver a mapearlas manualmente. El día MD 0 (partido) no se controla.
📅 Semana de sábado a sábado. Domingo = MD+1 = día libre (no se controla Previsto vs Real ese día).
Filtro de fecha propio de esta sección — independiente del de la sección 5.
🟢 En zona 🟡 Cerca del límite 🔵 Bajo (subcarga) 🔴 Alto (sobrecarga)
Semáforo por banda: «En zona» dentro del rango piso–techo previsto (con 10% de margen antes de alertar como «Cerca del límite»); «Bajo»/«Alto» fuera de esa banda. El «Previsto» se guarda automáticamente en este navegador (localStorage) y sobrevive a recargas de página; usá «🔄 Resetear valores previstos» para volver a los valores de ejemplo. Esta tabla es independiente de la tabla equivalente del tab «⚖️ Comparar»: cada una guarda sus propios valores de «Prevista» por separado.
📋 Registro de alertas fuera de banda (histórico, Microciclo)
Cada vez que el Real de un tag×variable queda fuera de la banda prevista (piso/techo) queda registrado acá, agrupado por rango de fechas filtrado, para trazabilidad. El registro es acumulativo dentro de la sesión y no se pierde al cambiar de variable o de jugador.
Carga acumulada por microciclo y semana, por jugador. Sirve para decidir a quién bajarle o subirle volumen la semana próxima. 5 tablas: Suma semanal, Diferencia absoluta, Diferencia %, Monotonía (Foster) y Fatiga/Strain (carga × monotonía, comparado contra la propia historia de cada jugador).
📖 Qué veo aquí / Qué acción tomar

Suma semanal: 🔥 ≥80% del máximo del equipo · ⚡ 60-80% · 💪 40-60% · 📈 20-40% · ❄️ <20%. Acción: si un jugador está en 🔥 varias semanas seguidas, considerá bajarle volumen.

Diferencia % semana a semana: 🟢 <±10% (seguro) · 🟠 10-20% (precaución) · 🔴 >20% (peligro — Gabbett 2016 asocia saltos >20% con más riesgo de lesión). Acción: evitar subir volumen >20% en una semana.

Monotonía = media diaria / desvío diario (Foster 1998). 🟢 ≤2.0 · 🟠 2.0-2.5 · 🔴 >2.5. Acción: si está en rojo, variá más la carga día a día (no repitas la misma sesión todos los días).

Fatiga/Strain = suma semanal × monotonía, comparado contra la media histórica personal de cada jugador (no contra el grupo, porque la carga base difiere por posición). 🟢 ≤ su media · 🟠 media→media+1SD · 🔴 >media+1SD. Acción: priorizar recuperación en los jugadores en rojo.

Compara la sesión de un día contra el historial propio de cada jugador en el mismo Match Day (MD-1, MD-2, MD+1…). Muestra si la sesión actual está dentro, por encima o por debajo del patrón habitual de cada jugador para ese MD específico.
🧭 Qué hace · Cómo lo hace · Por qué · Importancia (carga externa/interna/recuperación)

Qué hace: ubica la sesión analizada dentro de la distribución histórica del propio jugador para el mismo tipo de día (mismo MD), mostrando el percentil exacto en vez de solo un semáforo verde/amarillo/rojo.

Cómo lo hace: filtra state.rawRows (todo el dataset, no solo el filtro de fecha activo) por jugador + mismo valor exacto de MD, dentro del rango "Histórico desde/Hasta" que elijas (por defecto, histórico completo). Requiere un mínimo de 5 sesiones históricas propias de ese MD para considerar el percentil fiable; con menos, muestra explícitamente "Historial insuficiente" en vez de forzar un cálculo poco confiable.

Por qué se hace así: los días de partido tienen sistemáticamente más volumen que los entrenos — comparar a un jugador en un MD contra su historial mezclado (entrenos + partidos) subestima artificialmente su media y hace parecer "alto" algo que para él es completamente normal ese día. Individualizar por MD (Hopkins, 2000) es el criterio que mejor previene falsas alarmas de sobrecarga.

Importancia para carga externa/interna y recuperación: esta pestaña es la referencia de mediano/largo plazo — mientras el Árbol de Decisión prioriza a quién mirar HOY, Histórico por MD responde "¿esto que pasó hoy es realmente nuevo para este jugador, o es lo que hace siempre en este tipo de día?". Es la pregunta que evita confundir un patrón de esfuerzo estable (aunque alto) con una señal real de sobrecarga que amerite ajustar la planificación de recuperación de la semana.

📖 Qué veo aquí / Qué acción tomar

Gráfico — vs. su propia historia en ese MD: puntos celestes = sesiones históricas del jugador en ese mismo MD; diamante rojo = sesión analizada. Si el diamante está lejos de su propia nube, la sesión fue atípica para ese jugador en ese MD específico — este es el criterio individual que mejor previene sobrecarga, ya que compara al jugador únicamente contra su propio patrón (Hopkins, 2000: individualización estadística).

Tarjetas de percentil: percentil de la sesión actual respecto al histórico propio del jugador para ese MD. Requieren un mínimo de 5 sesiones históricas para considerarse fiables; con menos, se muestra "Historial insuficiente".

Acción: priorizar revisión de los jugadores cuyo diamante cae lejos de su nube histórica (percentil ≥75% o ≤25%) — son quienes más se desviaron de su propio patrón habitual para este MD.

Análisis completo de una sesión puntual (un día de entrenamiento o partido), comparando cada jugador contra el promedio histórico de su posición para el mismo MD (si hay columna de posición) y contra su propio historial en ese MD.
🧭 Qué hace · Cómo lo hace · Por qué · Importancia (carga externa/interna/recuperación)

Qué hace: muestra, para el día elegido, cómo salió cada jugador en las variables seleccionadas — en términos absolutos (barras) y en términos relativos a su propio historial (tabla de z-score).

Cómo lo hace (v82): la tabla comparativa usa la función compartida pfBaseline() — la MISMA que usa el Árbol de Decisión — para que el mismo jugador/día/variable dé siempre el mismo z-score en ambas pestañas. Antes, esta tabla promediaba filas crudas de toda la temporada (incluyendo sesiones futuras a la fecha analizada), lo que podía dar un número distinto al del Árbol para el mismo caso — esto ya está corregido.

Por qué se hace así: un reporte de sesión se usa para decidir sobre el día de HOY; comparar contra datos que todavía no existían en ese momento (sesiones futuras) no es una comparación válida para una decisión en tiempo real, aunque sí puede ser útil para un análisis retrospectivo de fin de temporada.

Importancia para carga externa/interna y recuperación: esta tabla es el detalle día-a-día que sostiene la decisión del Árbol — permite ver, variable por variable, si una alerta responde a un pico puntual (una sola métrica atípica) o a una sobrecarga generalizada (varias métricas altas a la vez), lo cual cambia completamente la recomendación de recuperación: un pico aislado en HSR sugiere validar el rol táctico del día, mientras que varias variables altas a la vez sugiere revisar la planificación de la semana completa.

📖 Qué veo aquí / Qué acción tomar

Barras por jugador: 🟢 claramente por encima del grupo (≥ +0.5 SD) · 🟡 en torno al promedio · 🔴 claramente por debajo (≤ -0.5 SD). Línea vertical = promedio de la sesión. Banda celeste + línea violeta = promedio histórico ±1σ para ese mismo MD.

Tarjetas por posición (si detectamos columna de posición): promedio histórico de cada posición para el MD de la sesión — referencia de a qué grupo pertenece cada jugador.

Tabla comparativa: z-score de cada valor de la sesión vs. el historial del propio jugador en el mismo MD. 🟢 |z|≤1 · 🟡 1<|z|≤2 · 🔴 |z|>2. Acción: revisar en rojo — esa sesión fue estadísticamente atípica para ese jugador en ese MD.