msk_clock_windows
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-10-05, from us-stock-market-hours-moscow-time.
| us_clock | msk_open | msk_close | msk_open_decimal | from_ru | to_ru |
|---|---|---|---|---|---|
| EST: зимний клок США | 17:30 | 00:00 | 17.5 | 3 ноября 2025 | 6 марта 2026 |
| EDT: летний клок США | 16:30 | 23:00 | 16.5 | 9 марта 2026 | 30 сентября 2026 |
- Rows × columns
- 2 × 6
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
us_clock |
text | 2 distinct values | |
msk_open |
text | 2 distinct values (16:30, 17:30) | |
msk_close |
text | 2 distinct values (00:00, 23:00) | |
msk_open_decimal |
number | 16.5 to 17.5 | US dollars |
from_ru |
text | 2 distinct values (3 ноября 2025, 9 марта 2026) | |
to_ru |
text | 2 distinct values (30 сентября 2026, 6 марта 2026) |
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.
WITH
sessions AS
(
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS sess,
min(window_start) AS first_bar
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2025-11-03 00:00:00')
AND window_start < toDateTime('2026-10-01 00:00:00')
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 sess
),
clocks AS
(
SELECT
sess,
first_bar,
toHour(toTimeZone(first_bar, 'Europe/Moscow'))
- toHour(toTimeZone(first_bar, 'America/New_York')) AS msk_minus_et
FROM sessions
)
SELECT
if(msk_minus_et = 8, 'EST: зимний клок США', 'EDT: летний клок США') AS us_clock,
formatDateTime(toTimeZone(min(first_bar), 'Europe/Moscow'), '%H:%i') AS msk_open,
formatDateTime(toTimeZone(min(first_bar) + toIntervalMinute(390), 'Europe/Moscow'), '%H:%i') AS msk_close,
round(toHour(toTimeZone(min(first_bar), 'Europe/Moscow'))
+ toMinute(toTimeZone(min(first_bar), 'Europe/Moscow')) / 60, 2) AS msk_open_decimal,
concat(toString(toDayOfMonth(min(sess))), ' ',
arrayElement(['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'], toMonth(min(sess))), ' ',
toString(toYear(min(sess)))) AS from_ru,
concat(toString(toDayOfMonth(max(sess))), ' ',
arrayElement(['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'], toMonth(max(sess))), ' ',
toString(toYear(max(sess)))) AS to_ru
FROM clocks
GROUP BY msk_minus_et
ORDER BY min(sess)
Работайте с этими данными в своём ИИ-ассистенте
Открывается готовым к запросам, с данными этой страницы. Бесплатно, без аккаунта.