В рамках проекта Abscur мы постоянно совершенствуем инфраструктуру сбора и обработки финансовых данных. Сегодня расскажем об одном из таких улучшений – модернизации конвейера загрузки дневных котировок всех акций Московской биржи, который используется в нашем источнике данных на Kaggle.
Проблема: двойная загрузка
Ранее алгоритм работы был следующим: для каждого тикера сначала пытались загрузить данные за последние 1–2 дня (чтобы проверить доступность), а затем – полную историю с 2000 года. Это приводило к дублированию запросов к API Московской биржи и неоправданным затратам времени и ресурсов. Например, для индекса IMOEX в логах фиксировалось:
IMOEX - Загружаем с 2026-04-24 по 2026-04-26 . Загружено с 2026-04-24 по 2026-04-24 . IMOEX - Загружаем с 2000-01-01 по 2026-04-26 . Загружено с 2000-01-05 по 2026-04-24 .
Каждый запуск тетрадки выполнял два запроса на акцию, хотя второй полностью перекрывал первый.
Решение: однопроходное инкрементальное обновление
Мы переписали функцию загрузки, полностью исключив двухэтапность. Теперь для каждого тикера:
- Проверяется наличие локального CSV-файла.
- Если файл существует – определяется последняя дата в нём, и загружаются данные только за последние N дней (по умолчанию 10) с перекрытием в 5 дней для устранения возможных пропусков.
- Если файла нет – загружаются данные за последние 10 дней (при следующих запусках история будет накапливаться, пока не достигнет даты листинга).
- Всегда выполняется ровно один вызов
Ticker.candles().
В результате из логирования исчезли парные строки – для каждого инструмента виден только один краткий отчёт:
IMOEX: обновление завершено. Добавлено записей: 3 (за период 2026-04-16 — 2026-04-24) Всего записей: 6584 (полный диапазон 2000-01-05 — 2026-04-24)
Кроме того, мы добавили информативный вывод: теперь видно, сколько именно новых строк добавлено и за какой период, а также полный диапазон дат в файле.
Почему это важно для пользователей набора данных?
- Экономия времени при ежедневном обновлении (особенно актуально для 261 инструмента).
- Снижение нагрузки на API Московской биржи.
- Гарантия целостности – механизм перекрытия исключает потерю торговых дней.
- Прозрачность – пользователь видит, что именно изменилось в данных.
Все изменения уже внедрены в публичную тетрадку на Kaggle. Набор данных продолжает обновляться ежедневно и включает:
- 261 CSV-файл с полными котировками (open, close, high, low, volume, value) для каждой акции, начиная с даты листинга.
- Справочник
all_stocks.csvс параметрами инструментов. - Сводную матрицу цен закрытия
stocks_close.csv(6170 дат × 261 тикер).
Связь с методом абсолютных курсов
Почему мы уделяем внимание такому, казалось бы, техническому аспекту? Потому что качество исходных данных напрямую определяет надёжность любых финансовых моделей. Наш основной проект – расчёт абсолютных валютных курсов – требует стабильного и эффективного пополнения временных рядов. Оптимизированный конвейер для акций Мосбиржи – это один из кирпичиков, позволяющих нам быстрее тестировать гипотезы и предоставлять аналитику в актуальном состоянии.
Приглашаем вас воспользоваться улучшенным источником данных. Вы можете:
- Скачать готовые CSV-файлы с Kaggle.
- Запустить тетрадку у себя и убедиться в отсутствии двойных запросов.
- Интегрировать обновлённый код в свои исследовательские проекты.
Анализируйте рынок эффективно и без лишних технических накладок!
Комментариев нет:
Отправить комментарий