Календарь публикаций ЕЦБ, 2016–2025: воспроизведение исследования B Источник исходных данных: ECB statistics. Оба исходных файла получены 7 октября 2026 года; точное время, URL, размер и SHA-256 указаны в provenance.json. Это исторические снимки, а не новая загрузка данных. Требования: Python 3.10 или новее; только стандартная библиотека. Распакуйте ZIP в отдельную папку и выполните из нее: python reproduce.py Программа ничего не загружает из сети, не отправляет заявки и не меняет исходные файлы. Успех: PASS, 2560 совпавших наблюдений XML/CSV, 3653 дневные строки, 10 годовых строк, 49 закрытых будних дней TARGET, 0 пропусков в ожидаемые дни публикации. Несовпадение SHA или данных завершает проверку с ошибкой, в том числе при запуске python -O. sources/ecb-eurofxref-hist.xml — неизмененный официальный XML целиком. sources/ecb-api-usd-2016-2025.csv — неизмененный официальный CSV API. Не подменяйте эти файлы свежими выгрузками: будущие ревизии могут изменить содержимое. Для нового снимка нужно отдельно документировать источник, хеши и пересчет; положительный результат этого пакета на него не переносится. daily-calendar.csv и yearly-calendar.csv — наши производные таблицы. Английские имена полей оставлены для машинного сравнения: date — дата; weekday — понедельник–пятница; target_closure_reason — причина закрытия TARGET; usd_reference_published — наличие наблюдения; usd_per_eur — USD за 1 EUR; classification — наша классификация. published = наблюдение есть; weekend = суббота или воскресенье; scheduled TARGET closure = плановое закрытие TARGET в будний день. New Year = 1 января; Good Friday = Страстная пятница; Easter Monday = Пасхальный понедельник по григорианскому календарю; Labour Day = 1 мая; Christmas Day = 25 декабря; 26 December = 26 декабря. Если праздник попал на выходной, он не считается повторно как отсутствие в будний день. В годовой таблице maximum_interval_calendar_days — разность двух дат соседних публикаций, а не количество пропущенных наблюдений между ними. При равном максимуме показан первый по времени интервал данного года. results.json содержит только исследование B. Раздел hypothetical_case — явное упражнение: запись 22.04.2025 в действительных данных присутствует. Лишь мысленное удаление этой записи дает 1/2 = 50% ожидаемых публикаций или ошибочные 1/4 = 25%, если брать все будние дни без календаря TARGET. Правила повторного использования статистики ЕЦБ: https://www.ecb.europa.eu/stats/ecb_statistics/governance_and_quality_framework/html/usage_policy.en.html Указывайте источник ECB statistics и сохраняйте исходную статистику вместе с метаданными без изменения; к данным третьих сторон эта политика сама по себе не дает разрешения. Классификация, итоги и код здесь — работа редакции, не официальные расчеты или одобрение ЕЦБ. Файлов NBP и результатов исследования A в этом пакете нет. Ограничения: проверяется полнота конкретного снимка за 2016–2025 годы. Не проверяются доступность сайта в прошлом, время первой публикации, исходная версия до возможных пересмотров, внутридневные цены, OHLC, спред, тики, срабатывание стоп-лосса или исполнение сделки. Дневной справочный курс не является исполнимой торговой котировкой. Код и публикация подготовлены с помощью ИИ; тесты не заменяют независимую экспертизу данных и методологии.