← К списку статей
April 19, 2026
5 мин. чтения

Kronos: foundation-модель, которая учит свечной график говорить на языке трансформера

Kronos: foundation-модель, которая учит свечной график говорить на языке трансформера
#kronos
#machine learning
#трансформер
#foundation model
#qlib
#обзор
#open-source
#токенизация

Kronos — токенизация свечей

Если рынок — это шум, то любая попытка предсказать следующую свечу похожа на расшифровку радиопомех. Авторы Kronos предлагают радикальный подход: превратить биржевые свечи в дискретные токены (как слова в языке) и обучить трансформер предсказывать «следующее слово» — то есть следующую свечу.

Это не универсальный time-series transformer «на все случаи жизни», а узкоспециализированная модель под многомерные K-line (OHLCV) с календарными признаками. Репозиторий shiyu-coder/Kronos открыт под MIT, веса на Hugging Face, статья принята на AAAI 2026.

Главная идея: свечи = язык

Как ChatGPT учится предсказывать следующее слово в тексте, так Kronos учится предсказывать следующую свечу в ценовом ряде. Но для этого нужно решить ключевую проблему: свеча — это непрерывный вектор (open, high, low, close, volume), а трансформеры работают с дискретными токенами.

Решение — двухэтажная архитектура:

  1. Токенизатор (BSQ) — сжимает непрерывную свечу в дискретный код
  2. Декодер (трансформер) — предсказывает следующий код авторегрессивно

BSQ-токенизатор: как сжать свечу в два числа

BSQ-токенизатор Kronos

KronosTokenizer — это encoder–decoder на трансформер-блоках с квантизацией посередине. Ключевой модуль — Binary Spherical Quantizer (BSQ):

  • Непрерывный вектор свечи проецируется на сферу (F.normalize)
  • Затем квантизуется в бинарный код — набор 0 и 1
  • Код разбивается на два уровня: грубый (S1) и детальный (S2)

Почему два уровня? Это факторизация словаря. Вместо одного огромного словаря размером S1 × S2, модель оперирует двумя маленькими таблицами эмбеддингов — значительно эффективнее.

Борьба с коллапсом кодовой книги

Наивный квантизатор быстро «схлопнется» — будет использовать 3 кода из тысячи. BSQ борется с этим через:

  • Энтропийные штрафы — стимулируют равномерное использование кодов
  • Commit loss — связывает непрерывное представление с дискретным
  • Нормализация на сфере — стабилизирует обучение

Иерархический декодер: сначала сценарий, потом детали

Класс Kronos содержит стопку трансформер-блоков с RMSNorm, RoPE, причинной маской — стандартный арсенал современных LLM. Но голова — двойная (DualHead):

  1. Сначала модель предсказывает S1 — «грубый сценарий» свечи (растём? падаем? на сколько примерно?)
  2. Затем при фиксированном S1 уточняет S2 — детали (точные цены, объём)

Между головами работает DependencyAwareLayer — кросс-внимание, где query — эмбеддинг выбранного грубого токена, key/value — контекст трансформера. Это значит: детальный прогноз зависит от «сценария», а не строится независимо.

Временные эмбеддинги

Модель получает календарную информацию через TemporalEmbedding: минута, час, день недели, число месяца, месяц. Время следующих баров известно заранее (это расписание, а не цена) — поэтому его можно подавать на вход при генерации.

Инференс: скользящее окно и стохастические траектории

Функция auto_regressive_inference — сердце практического использования:

  1. Нормализация окна. Входные данные нормализуются локально: (x - mean) / (std + 1e-5). Модель не ожидает глобально нормированного рынка — она работает в масштабе текущего окна.

  2. Параллельные траектории. Вход реплицируется по sample_count — генерируется несколько стохастических будущих путей одновременно.

  3. Скользящий контекст. Если история длиннее контекста модели, буфер сдвигается (torch.roll). Старые токены выбрасываются — это жёсткое окно, не падение.

  4. Двухступенчатый сэмплинг. На каждом шаге:

    • decode_s1 → logits → nucleus sampling (temperature, top-k, top-p) → один S1
    • decode_s2 при фиксированном S1 → один S2
  5. Усреднение. Несколько стохастических траекторий в латентном пространстве → усреднённая траектория в ценах. Это эвристика сглаживания — нужно помнить при интерпретации.

Обучение на своих данных

Датасет: случайные окна

QlibDataset строит список допустимых стартов скользящего окна, но __getitem__ игнорирует индекс — внутри случайная выборка с фиксированным seed для воспроизводимости в distributed обучении. Нормализация на уровне окна — согласованность train/infer.

Два этапа обучения

  1. Токенизатор (train_tokenizer.py): AdamW, DDP, накопление градиентов. Учится восстанавливать свечи + BSQ-loss.

  2. Предиктор (train_predictor.py): токенизатор заморожен (torch.no_grad). Классическое next-token prediction на парах (S1, S2) со сдвигом. Gradient clipping max_norm=3.0, OneCycleLR.

Бэктест через Qlib

qlib_test.py — инференс → сигналы → TopkDropoutStrategy в Qlib. Модель прогноза и правила портфеля явно разведены: сырой сигнал остаётся сырьём для стратегии.

Сильные стороны и ограничения

✅ Плюсы ⚠️ Минусы
Факторизация токенов S1/S2 Стохастическая генерация — одна реализация может быть «красивой случайностью»
BSQ с регуляризацией энтропии Усреднение ≠ калибровка вероятностей
Скользящий контекст на длинных рядах Демонстрационный Qlib-пайплайн — не продакшен
Согласованная локальная нормализация Kronos-large не открыт
DDP-ready, регрессионные тесты на весах Перенос на другой рынок требует переобучения токенизатора

Ссылки

Вывод

Kronos — не «ещё один трансформер на ряд», а согласованный конвейер: BSQ-токенизатор с контролем кодовой книги, иерархическая языковая модель на двух уровнях дискретизации, автогрессия с двухшаговым сэмплингом, локальная нормализация окон. Это открытая реализация идеи «свечи = язык» — с понятными местами, где заканчивается машинное обучение и начинается дисциплина торговой системы.

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

MarketMaker.cc Team

Количественные исследования и стратегии

Обсудить в Telegram
Newsletter

Будьте в курсе событий

Подпишитесь на нашу рассылку, чтобы получать эксклюзивную аналитику по AI-трейдингу и обновления платформы.

Мы уважаем вашу конфиденциальность. Отписаться можно в любой момент.