¿S&P 500 tiene días, meses u horas con un sesgo que se pueda medir? Hemos agregado 3.507.856 velas M1 del CFD del S&P 500 entre enero de 2015 y 12 de octubre de 2026 por día de la semana, mes del año, sesión y hora UTC, y hemos pasado cada resultado por un test de significancia. Resultado: Julio supera incluso la corrección por comparaciones múltiples; casi todo lo demás es ruido.
📊 Los datos de este artículo, en tabla y CSV: /stats/SP500 publica la estacionalidad, las sesiones y el spread de S&P 500 como referencia descargable, y en /data puedes bajar sus velas OHLCV (de D1 a M1) para replicar cada tabla. Este artículo es el análisis, con sus tests; esas páginas son los números en crudo.
1. Estacionalidad por día de la semana
Cada día cierra a las 20:00 UTC, una hora fija presente en todos los años del feed. Test: t de una muestra contra cero; en negrita, lo que supera la corrección de Bonferroni.
| Día | n | Media % | Mediana % | Std % | Win rate | t-stat | p-value |
|---|---|---|---|---|---|---|---|
| Lunes | 576 | +0,073% | +0,107% | 1,140% | 58,0% | 1,54 | 0,124 |
| Martes | 610 | +0,063% | +0,028% | 1,027% | 52,5% | 1,52 | 0,128 |
| Miércoles | 606 | +0,095% | +0,063% | 1,058% | 54,6% | 2,22 | 0,027 |
| Jueves | 606 | +0,005% | +0,029% | 1,072% | 52,5% | 0,11 | 0,916 |
| Viernes | 592 | +0,016% | +0,045% | 1,143% | 52,2% | 0,34 | 0,734 |
Lectura: días con p < 0,05:
- Miércoles: +0,095% de media, 54,6% de win rate, p=0,027, pero no supera el umbral de Bonferroni para 5 pruebas (0,0100). En las dos mitades de la muestra (2015–2020: +0,110%; 2020–2026: +0,081%) el signo se mantiene.

2. Estacionalidad por mes del año
140 meses completos (el mes en curso queda fuera). Retorno de cada mes = último cierre del mes contra el último cierre del mes anterior.
| Mes | n | Media % | Mediana % | Std % | Win rate | t-stat | p-value |
|---|---|---|---|---|---|---|---|
| Enero | 11 | +1,39% | +1,76% | 4,58% | 72,7% | 1,00 | 0,339 |
| Febrero | 12 | -0,15% | -0,28% | 4,31% | 50,0% | -0,12 | 0,904 |
| Marzo | 12 | -0,31% | +0,81% | 5,05% | 50,0% | -0,21 | 0,835 |
| Abril | 12 | +1,83% | +0,87% | 5,76% | 75,0% | 1,10 | 0,294 |
| Mayo | 12 | +1,75% | +1,31% | 3,39% | 83,3% | 1,78 | 0,102 |
| Junio | 12 | +1,24% | +1,09% | 4,13% | 75,0% | 1,04 | 0,321 |
| Julio | 12 | +3,01% | +2,27% | 2,37% | 100,0% | 4,39 | 0,001 |
| Agosto | 12 | +0,43% | +1,00% | 3,64% | 58,3% | 0,41 | 0,688 |
| Septiembre | 12 | -1,37% | -0,26% | 3,79% | 41,7% | -1,25 | 0,237 |
| Octubre | 11 | +1,39% | +2,10% | 4,92% | 54,5% | 0,94 | 0,372 |
| Noviembre | 11 | +3,66% | +3,46% | 3,57% | 90,9% | 3,40 | 0,007 |
| Diciembre | 11 | -0,06% | +1,39% | 4,36% | 63,6% | -0,05 | 0,963 |
Lectura: meses con p < 0,05:
- Julio: +3,01% de media, 100,0% de win rate, p=0,001, y supera el umbral de Bonferroni (0,0042). En las dos mitades de la muestra (2015–2019: +2,50%; 2020–2026: +3,37%) el signo se mantiene.
- Noviembre: +3,66% de media, 90,9% de win rate, p=0,007, pero no supera el umbral de Bonferroni para 12 pruebas (0,0042). En las dos mitades de la muestra (2015–2019: +2,28%; 2020–2026: +4,81%) el signo se mantiene.

Cada línea fina es un año; la roja es la media. Cuando las líneas finas se abren en abanico, la media del mes dice poco del año que viene.
3. Estacionalidad por sesión de trading (UTC)
Ventanas UTC fijas, iguales para toda la serie. Drift = cierre de la sesión contra su apertura; rango = máximo menos mínimo, en % de la apertura.
| Sesión | n | Drift medio % | Win rate | p-value | Rango medio % |
|---|---|---|---|---|---|
| Asia (00–07 UTC) | 2.005 | +0,0159% | 54,1% | 0,070 | 0,479% |
| Londres (07–12 UTC) | 2.003 | +0,0099% | 56,0% | 0,258 | 0,531% |
| Nueva York (12–17 UTC) | 2.007 | +0,0343% | 53,5% | 0,031 | 0,967% |
| NY tarde (17–22 UTC) | 1.940 | +0,0081% | 54,5% | 0,565 | 0,775% |
- Nueva York (12–17 UTC) concentra el movimiento: rango medio 0,967%, 2,0× el de Asia (00–07 UTC).
- Nueva York (12–17 UTC) tiene drift alcista con p=0,031 (+0,0343% por sesión), aunque no supera Bonferroni. Es un sesgo pequeño: compáralo con el spread antes de pensar en operarlo.
- Sesiones desde 2019: antes, el CFD no cotizaba casi 24 h y las ventanas no serían comparables entre años.

4. Heatmap día × sesión
| Día | Asia (00–07) | Londres (07–12) | Nueva York (12–17) | NY tarde (17–22) |
|---|---|---|---|---|
| Lunes | +0,032% | +0,032% | +0,094% | +0,055% |
| Martes | +0,026% | +0,012% | -0,023% | -0,007% |
| Miércoles | +0,024% | +0,020% | +0,036% | -0,003% |
| Jueves | -0,007% | -0,018% | +0,059% | -0,044% |
| Viernes | +0,005% | +0,004% | +0,004% | +0,043% |
- Celda más alcista: Lunes × NY (+0,094%, p=0,005). Más bajista: Jueves × NY late (-0,044%, p=0,170).
- 2 de 20 celdas salen con p < 0,05; por puro azar se esperarían unas 1,0. Es lo que daría el azar: no leas el heatmap como un mapa de señales.

5. Horas más volátiles (UTC)
| Hora UTC | Rango medio % | Rango medio (puntos) | Std % | Sesión |
|---|---|---|---|---|
| 14:00 | 0,505% | 22,5 | 0,380 | NY |
| 15:00 | 0,448% | 19,9 | 0,344 | NY |
| 20:00 | 0,447% | 19,8 | 0,350 | NY late |
| 19:00 | 0,442% | 19,1 | 0,416 | NY late |
| 13:00 | 0,426% | 18,8 | 0,364 | NY |
| 18:00 | 0,379% | 16,6 | 0,335 | NY late |
La hora más activa (14:00 UTC) mueve 4,0× más que la más tranquila (04:00 UTC, 0,127%). Esto, a diferencia del sesgo de calendario, sí es estable de un año a otro: es lo más útil de este análisis para decidir cuándo estar delante de la pantalla o dónde poner un stop.
6. Por qué no analizamos el spread
En los CFD de índices de este feed, el spread no es un precio de mercado: es un margen que fija el bróker y que cambia por escalones durante meses. Publicar su «evolución» sería medir la política comercial de un proveedor, no el coste de operar el índice. Para el coste, mira el spread y la comisión de tu propio bróker a la hora a la que operas.
Lo que NO te dicen estos datos
- Comparaciones múltiples: este artículo hace 41 pruebas (5 días, 12 meses, 4 sesiones y 20 celdas). Con un umbral del 5 %, unas 2 saldrían «significativas» por azar. Por eso marcamos aparte lo que supera Bonferroni.
- Pocos años por mes: cada mes tiene unas 11 observaciones. Un solo año extremo puede fabricar o borrar un «mes alcista».
- Un sesgo medio no es una estrategia: tras spread, comisión y swap, un drift de centésimas por sesión rara vez sobrevive. Antes de operarlo, haz un backtest con costes reales y walk-forward.
- Es un CFD de Dukascopy (precio bid), no el futuro ni el contado del mercado organizado: puede diferir en rollovers, gaps y horario.
- El horario del CFD cambió varias veces antes de 2019. Por eso el día cierra a una hora fija (20:00 UTC) presente en todos los años, la serie diaria empieza en 2015 y el análisis intradía en 2019.
Metodología
- Fuente: ticks de Dukascopy agregados a velas M1 por EV Trading Labs (S&P 500, 2015-01-02 → 2026-10-12).
- Total: 3.507.856 velas M1 con al menos un tick; 2.990 retornos diarios y 140 mensuales.
- Precio: apertura y cierre a precio medio (bid+ask)/2; máximo y mínimo en bid. Donde el feed no trae ask, bid.
- Retorno diario: (C[t] − C[t−1]) / C[t−1] × 100, donde C es el cierre a las 20:00 UTC. Se descartan días con menos de 60 velas o cuya última vela queda más de 3 h antes del corte.
- Retorno mensual: último cierre diario del mes contra el del mes anterior; el mes en curso no cuenta.
- Sesiones: drift = (cierre − apertura) / apertura × 100; rango = (máximo − mínimo) / apertura × 100; sesiones con menos del 40 % de sus minutos se descartan.
- Test: t de una muestra contra cero, p < 0,05; Bonferroni por bloque (días, meses, sesiones, celdas). Estabilidad: misma media calculada en las dos mitades de la muestra.
- Software: Python, pandas, scipy, matplotlib.
La serie completa de estacionalidad
La misma metodología aplicada a 19 mercados. El contraste entre ellos es la parte más útil: un patrón que aparece en un solo activo es más probable que sea ruido.
- Forex: EURUSD · GBPUSD · USDJPY · GBPJPY · AUDUSD · USDCHF · EURGBP
- Metales: XAUUSD (oro) · XAGUSD (plata)
- Índices: Dow Jones · NASDAQ-100 · DAX 40 · FTSE 100 · Nikkei 225
- Petróleo: Brent · WTI
- Cripto: Bitcoin · Ethereum

