Zero-Infrastructure для Data Science: как я перенес расчет абсолютных валютных курсов на Kaggle и автоматизировал обзоры через Gemini API

Коллеги, приветствую.

В этой публикации я хочу поделиться практическим опытом построения полностью автономного аналитического пайплайна. Система работает без выделенных серверов, не требует затрат на инфраструктуру и самостоятельно генерирует ежедневные обзоры рынка.

В рамках своего проекта Abscur я много лет занимаюсь расчетом абсолютных курсов валют. Проблема классического Forex или котировок Мосбиржи в том, что все привычные нам курсы относительны (USD/RUB, EUR/USD). Если валютная пара растет, сложно с ходу понять: это базовый актив укрепляется или котируемая валюта падает?

Математическая декомпозиция матриц кросс-курсов позволяет очистить 45 мировых валют от взаимного влияния и привести их к единому независимому измерителю — невзвешенной расчетной единице ABS. На выходе мы получаем чистые ряды данных, по которым гораздо объективнее можно считать волатильность, коэффициенты вариации (CV), просадки (Maximum\ Drawdown) и реальную доходность акций без рыночного и рублевого шума.

Историческая база проекта охватывает уже 20 лет, но долгое время цепочка обновления данных требовала ручных действий или локального запуска скриптов. Ниже я подробно разберу, как удалось перевести систему на рельсы полной автономности по схеме «Zero-Infrastructure».


1. Вычисления по расписанию: Kaggle как бесплатный cron

Разворачивать выделенный Linux-сервер ради одного ежедневного расчетного таска избыточно. В качестве среды исполнения я выбрал Kaggle Notebooks. Это дает стабильное окружение, готовый стек предустановленных Data Science библиотек (pandas, numpy, scipy) и, самое главное, встроенный планировщик задач (scheduled runs).

Каждые сутки Kaggle-инстанс инициализирует выполнение Python-скрипта, который выполняет математическую часть пайплайна:

  1. Парсинг и агрегация: Скрипт собирает свежий пул кросс-курсов и финансовых маркеров из открытых источников.

  2. Матричные вычисления: Мы логарифмируем матрицу кросс-курсов, переводим относительные изменения в систему линейных уравнений и методом наименьших квадратов находим изолированные векторы значений для каждой валюты.

  3. Расчет индикаторов: На базе полученных абсолютных рядов вычисляются скользящие средние (MA7, MA30), показатели исторической волатильности и специфичные метрики, такие как индекс относительной силы абсолютного курса — RSI(abc) (в дополнение к стандартному рублевому).


2. Контент-генерация: интеграция Gemini API

Таблицы и сырые массивы JSON малопригодны для быстрого чтения. Чтобы автоматизировать интерпретацию данных и исключить человеческий фактор при подготовке публикаций, в пайплайн был встроен Gemini API.

Через защищенные переменные окружения (Secrets в среде Kaggle) скрипт передает нейросети выжимку рассчитанных технических индикаторов по ключевым глобальным валютам, товарам и крупнейшим акциям Мосбиржи (включая Сбербанк, ГМК Норникель и др.), подкрепляя их агрегированными новостными заголовками за день.

Промпт настроен жестко и работает в режиме системного аналитика: никакого прогнозирования «по кофейной гуще», субъективных мнений или лишней «воды». На выходе генерируется строго структурированный технический текст на стыке математики абсолютных курсов и классического теханализа.


3. Бессерверный деплой: GitHub и Blogger

Как доставить рассчитанные данные и тексты до конечного пользователя без постоянной базы данных и бэкенда?

Скрипт формирует итоговые JSON-файлы (для построения графиков) и сгенерированные текстовые обзоры, после чего через GitHub API пушит их напрямую в репозиторий проекта.

На стороне сайта (который развернут на платформе Blogger) фронтенд на JavaScript подтягивает свежие JSON-структуры из репозитория и динамически перерисовывает интерактивные графики, таблицы портфелей (оптимизированные по Шарпу и Сортино) и текст обзора.

Цепочка полностью замкнулась:

\text{Сбор данных} \rightarrow \text{Матричный расчет} \rightarrow \text{LLM-анализ} \rightarrow \text{Коммит в Git} \rightarrow \text{Отображение на фронте}

Всё это происходит за несколько минут один раз в сутки без участия человека и платных серверов.


Исходный код и описание методики:

  • С подробным математическим обоснованием модели декомпозиции кросс-курсов можно ознакомиться в статье: Abscur: Описание методики расчета

  • Рабочий Python-скрипт пайплайна полностью открыт, его можно изучить или форкнуть в репозитории: Kaggle Notebook: abscur2

Буду рад обсудить в комментариях математические нюансы изоляции валютных рисков, методы декомпозиции матриц, а также подводные камни при построении долгоживущих автономных скриптов в облачных Data Science средах.

Комментарии (1)


  1. akakoychenko
    13.07.2026 23:05

    Глянул по ссылке. Я прав, что при вычислении абсолютного курса вообще никак не учитывается капитализация каждой валюты?

    Условно, украинская гривна или турецкая лира входит в уравнение на условиях, аналогичных американскому доллару? И их падение приводит одновременному росту всех остальных валют, хоть, реальный вес обоих и околонулевой, применимо к глобальной стоимости одного доллара?