Precio resuelto (Booking local) + primer Burbuja_Index

Fecha: 2026-09-14 · Proyecto: ~/nef/estado_turismo/spab-retrieval

El bloqueo, resuelto

El precio hotelero era el único hueco del Burbuja_Index. Se obtuvo con navegador real local (Playwright), que le gana al anti-bot de Booking (que bloquea curl con 202/429 y a Cloudflare Browser Rendering con 429).

  • Script: scripts/precio_booking.mjs → data/raw/booking.csv (destino,anio,mes,precio = mediana/noche MXN, 25 hoteles, 2 noches, 2 adultos).
  • Conector: booking.ts (modo file) → precio_hospedaje, fuente=booking.
  • Corrida: 10 obs (2026-09).

Precios (mediana/noche MXN)

destino$/nochedestino$/noche
cdmx986tulum1,527
san-miguel1,166puerto-vallarta1,523
oaxaca1,352acapulco1,689
bacalar1,487cancun1,715
playa-del-carmen1,776
puerto-escondido1,820

Primer Burbuja_Index (cross-section actual)

base = precio_rel/(rating_rel × ocup_rel), índice = base × (1 + 1.5·%caro). Medianas del panel: precio 1525 · rating 4.533 · ocup 0.399 · %caro 3.4%.

destinoíndicenivel
cdmx1.460tensión
puerto-escondido1.360inflación
acapulco1.309inflación
san-miguel1.160inflación
oaxaca0.899estable
playa-del-carmen0.886estable
puerto-vallarta0.734estable
cancun0.711estable

Nota: el resultado difiere del “panel sintético” del README (donde Tulum salía crítico). Ese era una prueba de forma, no evidencia. Con datos reales el orden cambia — y Tulum/Bacalar no entran (ver abajo). Es lo honesto.

Dos problemas que hay que arreglar

  1. CDMX inflado por divergencia de fuentes. El índice tomó la ocupación de Airbnb (0.18), no de DataTur (0.52) → CDMX sube a “tensión” en falso. El plan dice: no promediar, registrar ambas y marcar la divergencia. Hay que definir la fuente canónica de ocupación para el panel (DataTur) y excluir Airbnb o marcarlo.
  2. Tulum y Bacalar sin índice — no tienen ocupacion_hotelera (no son centro turístico propio). Requieren el proxy “Riviera Maya” (Tulum) y una decisión para Bacalar. Justo los dos destinos eje del plan.

Pendiente de periodos

El endpoint /api/burbuja exige métricas en el mismo periodo; hoy: precio y rating = 2026-09, ocupación = 2026-06. El índice de arriba se calculó con el último valor por métrica (cross-section). Decidir si el panel alinea por mes o usa snapshot “más reciente”.