Quant500 Academy

2. Datos alternativos: qué prometen y qué entregan

Nivel 6: De los datos a la decisión

Se llama dato alternativo a cualquier información que no salga de los canales financieros clásicos: precios, cuentas auditadas, estimaciones de analistas o estadística oficial. La promesa comercial siempre es la misma, y suena bien: ver la realidad antes de que llegue al informe trimestral. Este módulo separa esa promesa de lo que se entrega en la práctica.

Qué se vende con esa etiqueta

Los cinco problemas que traen casi siempre

La trampa del histórico reconstruido

Toda fila debe traer dos fechas: cuándo ocurrió lo que mide y cuándo estuvo disponible para ti. Si el proveedor solo entrega la primera, la respuesta correcta es pedirla; si dice que no la tiene, ya sabes lo que has comprado.

alt = pd.read_parquet("panel_tarjetas.parquet")
# columnas: fecha_observacion, fecha_disponible, simbolo, gasto

alt["retraso_dias"] = (alt["fecha_disponible"] - alt["fecha_observacion"]).dt.days
print(alt.groupby(alt["fecha_observacion"].dt.year)["retraso_dias"].median())

# Si los primeros anos salen con retraso 0 y a partir de cierta fecha aparece
# un retraso estable de, por ejemplo, 3 dias, el historico antiguo esta
# reconstruido: no es lo que se podia ver entonces, es lo que el proveedor sabe hoy.

La única pregunta que importa: qué añade sobre lo que ya tienes

Que una serie prediga las ventas de una cadena no significa nada por sí solo. La pregunta es si predice algo que no predijeran ya el consenso de analistas, la estacionalidad, el trimestre anterior y el crecimiento del sector.

import statsmodels.api as sm

y = panel["sorpresa_ventas"]                    # dato real menos consenso
cols_base = ["ventas_trim_anterior", "crecimiento_sector", "revisiones_consenso"]

base = sm.OLS(y, sm.add_constant(panel[cols_base]), missing="drop").fit()
con_alt = sm.OLS(y, sm.add_constant(panel[cols_base + ["gasto_tarjetas"]]),
                 missing="drop").fit()

print("R2 ajustado base:", round(base.rsquared_adj, 4))
print("R2 ajustado con el dato:", round(con_alt.rsquared_adj, 4))
print("t del dato alternativo:", round(con_alt.tvalues["gasto_tarjetas"], 2))
print("trimestres distintos:", panel["fin_periodo"].nunique())

La última línea es la más importante de todas. Campbell Harvey y sus coautores, tras revisar cientos de factores publicados, defienden que con tanta búsqueda acumulada el listón de significación debería estar cerca de 3 y no en el 2 de siempre. Con veinte trimestres efectivos detrás, un estadístico de 2,4 no es un descubrimiento: es ruido con buena presentación.

Cuándo sí han aportado

Ser escéptico no es ser negacionista. Hay casos documentados con criterio: el recuento de vehículos en aparcamientos de cadenas minoristas se ha relacionado en trabajos académicos con las sorpresas de resultados posteriores; el seguimiento del nivel de los tanques de crudo aporta frecuencia y cobertura donde la estadística oficial es semanal y parcial; y el análisis de texto de las conferencias de resultados, con los diccionarios de Loughran y McDonald como estándar, extrae de forma sistemática algo que un humano no puede leer a escala. El patrón común es claro: funcionan cuando el dato convencional es lento, escaso o inexistente, no cuando compiten con treinta analistas que cubren la misma acción.

Hay un segundo patrón igual de útil: los casos que aguantan suelen medir una cantidad física, no una opinión. Coches, barriles, contenedores y visitas se cuentan; el sentimiento se interpreta, y cada proveedor lo interpreta a su manera y lo recalibra cuando le conviene. Ante dos productos parecidos, elige siempre el que puedas describir con un verbo de contar.

Caso trabajado: la cuenta de servilleta

Un proveedor pide, pongamos, 120.000 dólares al año. Gestionas 3 millones: el coste es el 4% del patrimonio, y la señal aportaba un 2% bruto en la prueba histórica. Sales perdiendo el doble de lo que ganas, y eso antes de descontar el decaimiento posterior a que la venda a otros veinte clientes. Con 200 millones bajo gestión la misma suscripción cuesta un 0,06%, y la decisión cambia por completo. El dato alternativo no es bueno ni malo en abstracto: es una función de tu tamaño, de tu horizonte y de cuánto ya sabías sin él.

El resto de Quant500

Lo que estás aprendiendo, aplicado al índice todos los días:

La cartera del modelo, cada semana en tu correo

Cada sábado, su semana en un minuto: cómo fue, lo mejor y lo peor, y qué directivos compraron con su dinero. Y el día que el modelo se rehace, qué entra y qué sale. Es una simulación, no un consejo. Como mucho un correo a la semana, sin publicidad y sin cuenta; te das de baja con un clic. Lo hace una persona: Pol Gracia.

Cartera modelo con resultados simulados, no una recomendación personalizada. Tu correo se usa solo para esto: privacidad.

Detrás de la Academia y del resto de Quant500 hay una sola persona: Pol Gracia Serrahima.