STRASMORE/EXPLORE 2,500 QUERIES

desfase_mensual

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-09-23, from bmv-hours-vs-us-market-hours.

as of ranking 14×4read in context →
desfase_mensual — 14 rows by 4 columns, computed from US exchange, SIP and OPRA data.
mesapertura_hora_centrocierre_hora_centrodesfase_horas
2025-0807:3014:002
2025-0907:3014:002
2025-1007:3014:002
2025-1108:3015:001
2025-1208:3015:001
2026-0108:3015:001
2026-0208:3015:001
2026-0307:3014:002
2026-0407:3014:002
2026-0507:3014:002
2026-0607:3014:002
2026-0707:3014:002
2026-0807:3014:002
2026-0907:3014:002
Rows × columns
14 × 4
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for desfase_mensual, derived from the stored result.
ColumnTypeRangeNotes
mes text 14 distinct values (2025-08, 2025-09, 2025-10…)
apertura_hora_centro text 2 distinct values (07:30, 08:30)
cierre_hora_centro text 2 distinct values (14:00, 15:00)
desfase_horas number 1 to 2

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

Run it yourself

This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.

SELECT
    mes,
    argMax(apertura_hora_centro, sesion) AS apertura_hora_centro,
    argMax(cierre_hora_centro, sesion)   AS cierre_hora_centro,
    argMax(desfase_horas, sesion)        AS desfase_horas
FROM
(
    SELECT
        sesion,
        formatDateTime(toTimeZone(primer_minuto, 'America/Mexico_City'), '%Y-%m') AS mes,
        formatDateTime(toTimeZone(primer_minuto, 'America/Mexico_City'), '%H:%i') AS apertura_hora_centro,
        formatDateTime(toTimeZone(ultimo_minuto, 'America/Mexico_City') + toIntervalMinute(1), '%H:%i') AS cierre_hora_centro,
        toHour(toTimeZone(primer_minuto, 'America/New_York'))
          - toHour(toTimeZone(primer_minuto, 'America/Mexico_City'))               AS desfase_horas
    FROM
    (
        SELECT
            toDate(toTimeZone(window_start, 'America/New_York')) AS sesion,
            min(window_start)                                    AS primer_minuto,
            max(window_start)                                    AS ultimo_minuto,
            count()                                              AS minutos
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND window_start >= today() - 400
          AND window_start <  today() - 3
          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
               + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
               + toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
        GROUP BY sesion
        HAVING minutos >= 380
    )
)
GROUP BY mes
ORDER BY mes
⌘/Ctrl + Enter

Trabaja con estos datos en tu asistente de IA

Se abre listo para consultar, con los datos de esta página. Gratis, sin cuenta.