Нет публикации — не значит пропуск: календарь курсов ЕЦБ за 2016–2025 годы
2560 справочных курсов USD за 1 EUR, 49 закрытых будних дней TARGET и проверка календаря. Таблицы, график, код и упражнение.
В снимке за 2016–2025 годы есть 2560 публикаций справочного курса USD за 1 EUR на 2609 дат с понедельника по пятницу. Все 49 будних дней без наблюдения совпали с плановыми закрытиями TARGET. На ожидаемые дни публикации приходятся 2560 наблюдений; неожиданных пропусков в этом снимке нет. Это проверка полноты конкретных файлов, а не доступности сайта ЕЦБ в прошлом или своевременности первой публикации.
Метод и результаты
Для каждой даты с 1 января 2016 года по 31 декабря 2025 года выбираем одно официальное наблюдение USD за 1 EUR из XML ЕЦБ. Отдельный официальный CSV из API совпадает с XML по всем 2560 датам и точным десятичным значениям. Сравнение не использует округленные числа с плавающей точкой.
Календарь строим отдельно от списка наблюдений. Исключаем субботы, воскресенья и плановые закрытия TARGET: 1 января, Страстную пятницу, Пасхальный понедельник, 1 мая, 25 и 26 декабря. Пасхальные даты здесь определяются по григорианскому календарю; российский календарь праздников для этой проверки не подходит. Праздник в выходной не считаем второй раз как отсутствие публикации в будний день.
По годам с 2016-го по 2025-й число публикаций равно 257, 255, 255, 255, 257, 258, 257, 255, 256 и 255. Число будних дней без наблюдения: 4, 5, 6, 6, 5, 3, 3, 5, 6 и 6. Дневной CSV раскрывает классификацию каждой из 3653 календарных дат; годовой CSV содержит также ожидаемые открытые дни и максимальные интервалы.
В каждом году максимальная разность соседних дат публикации составляет пять календарных дней. Например, в 2025 году это 17–22 апреля. Между этими датами находятся четыре календарные даты: два дня закрытия TARGET и два выходных. Разность дат в пять дней не означает пять пропущенных наблюдений.
Чего не показывает дневной справочный курс
Одно справочное наблюдение не дает цену открытия, максимум, минимум, закрытие, спред, объем или последовательность тиков. По нему нельзя установить, был ли внутри дня задет стоп-лосс, или воспроизвести исполнение сделки. Если перенести последнее значение на праздник, получится искусственно заполненное значение, а не новая наблюдавшаяся торговая котировка.
Время публикации менялось: с 1 июля 2016 года ЕЦБ перенес его примерно с 14:30 на 16:00 CET. Поэтому одно время нельзя применять ко всему периоду. При сопоставлении с UTC также нельзя игнорировать переход на летнее время. Эта работа не восстанавливает внутридневные цены или историческое время первого выпуска данных.
По описанию ЕЦБ, справочные курсы служат информационным целям; использовать их как цену для сделки не рекомендуется. Валютная пара и направление единицы здесь принципиальны: значение означает USD за 1 EUR.
Источник: ECB statistics. Исходные файлы были загружены 7 октября 2026 года; это дата исторического снимка, а не новая загрузка при переводе. В отдельном пересчете проверены 2560 пар XML/CSV, 3653 дневные строки и 10 годовых строк. Классификация дат и выводы — наши расчеты. Будущие выгрузки ЕЦБ могут содержать пересмотры.
Годовая таблица
| Год | Даты пн–пт | Публикации | Закрытия TARGET в будни | Неожиданные пропуски |
|---|---|---|---|---|
| 2016 | 261 | 257 | 4 | 0 |
| 2017 | 260 | 255 | 5 | 0 |
| 2018 | 261 | 255 | 6 | 0 |
| 2019 | 261 | 255 | 6 | 0 |
| 2020 | 262 | 257 | 5 | 0 |
| 2021 | 261 | 258 | 3 | 0 |
| 2022 | 260 | 257 | 3 | 0 |
| 2023 | 260 | 255 | 5 | 0 |
| 2024 | 262 | 256 | 6 | 0 |
| 2025 | 261 | 255 | 6 | 0 |
Практический пример: сначала определите ожидаемые даты
Гипотетическое упражнение, не обнаруженный дефект данных. Возьмем окно 17–22 апреля 2025 года включительно. В действительном снимке обе ожидаемые записи, за 17 и 22 апреля, присутствуют. Только для упражнения мысленно удалим запись за 22 апреля.
| Дата | Календарь | Ожидается публикация |
|---|---|---|
| 17.04.2025 | Четверг, TARGET открыт | Да; запись есть |
| 18.04.2025 | Страстная пятница | Нет |
| 19.04.2025 | Суббота | Нет |
| 20.04.2025 | Воскресенье | Нет |
| 21.04.2025 | Пасхальный понедельник | Нет |
| 22.04.2025 | Вторник, TARGET открыт | Да; запись есть |
В окне шесть календарных дат, четыре даты пн–пт, но только два ожидаемых дня публикации. После условного удаления одной записи комплектность составила бы 1 / 2 × 100% = 50%. Если ошибочно взять знаменатель из четырех дат пн–пт, получится 1 / 4 × 100% = 25%. Сначала задайте календарь источника, затем проверяйте отсутствие записей; не заполняйте праздники автоматически и не выдавайте заполненные значения за наблюдения.
Данные и воспроизведение
- Годовой календарь (CSV)
- Дневной календарь (CSV)
- Только исследование B: код, неизмененные исходники ЕЦБ и инструкция на русском (ZIP)
- Результаты исследования B и явно гипотетический пример (JSON)
- Источники, исходные времена загрузки и SHA-256 (JSON)
- Неизмененный официальный CSV ЕЦБ, снимок 07.10.2026
- Инструкция и пояснение полей (TXT)
Распакуйте ZIP в отдельную папку и выполните python reproduce.py с Python 3.10 или новее. Используется только стандартная библиотека, сетевых запросов нет. Программа проверяет хеши двух исходных файлов, точное совпадение XML/CSV, календарь и все строки двух производных таблиц. Изменение исходных файлов или результатов останавливает проверку. Английские имена машинных полей оставлены неизменными; русская расшифровка находится в TXT. Этот пакет не содержит данных NBP и результатов исследования A.
Согласно условиям повторного использования статистики ЕЦБ, указываем источник ECB statistics и оставляем исходную статистику вместе с метаданными без изменения. Наши таблицы и график являются производными расчетами редакции. Они не означают одобрения или проверки со стороны ЕЦБ. Для данных третьих сторон его разрешение само по себе не действует.
При подготовке кода, расчетов и текста использовался ИИ. Повторный расчет и автоматические проверки не заменяют независимую экспертизу методологии. Результат относится к двум указанным снимкам, выбранной серии и периоду 2016–2025; он не доказывает точность любой другой базы, отсутствие прошлых ревизий, работоспособность сайта в прошлом или качество торгового исполнения.