Qlib — открытая платформа Microsoft для количественных инвестиций на базе AI

· 2 мин чтения
quant machine-learning python microsoft finance
📂 Исходный код на GitHub

Открытая AI-платформа Microsoft для количественных инвестиций: полный конвейер машинного обучения от данных до бэктеста, десятки готовых моделей и интеграция с LLM-агентами RD-Agent.

Qlib — открытая платформа Microsoft для количественных инвестиций на базе AI

Qlib — открытая платформа Microsoft для количественных инвестиций (quant). Она построена вокруг машинного обучения и закрывает весь цикл работы квант-исследователя: от обработки данных до обучения модели, бэктеста и вывода стратегии на реальные торги. Проект развивает Microsoft Research. До сентября 2020 года Qlib был внутренним инструментом, затем его опубликовали под лицензией MIT. Название пакета в PyPI — pyqlib.

Что такое Qlib

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

  • Обучение с учителем. Поиск сложных нелинейных закономерностей в разнородных финансовых данных.
  • Моделирование динамики рынка. Распределение данных меняется со временем, и модели нужно подстраиваться под эти сдвиги.
  • Обучение с подкреплением (RL). Моделирование непрерывных решений, например оптимизация исполнения заявок.

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

Архитектура модульная. Компоненты слабо связаны друг с другом, и каждый можно использовать отдельно: взять только хранилище данных или только фреймворк для RL. Дизайн платформы описан в научной статье «Qlib: An AI-oriented Quantitative Investment Platform».

Установка и быстрый старт

Поддерживаются Python 3.8–3.12. Авторы рекомендуют ставить пакет в окружение conda: без него при сборке иногда не хватает системных заголовков. Самый простой путь:

pip install pyqlib

Ветка main активно развивается, поэтому для свежих возможностей пакет ставят из исходников:

git clone https://github.com/microsoft/qlib.git && cd qlib
pip install .

Есть и готовые Docker-образы на Docker Hub — pyqlib/qlib_image_stable:stable. Пользователям Mac на чипах M1 понадобится brew install libomp перед сборкой, иначе не соберётся LightGBM.

Данные

Из-за ужесточённой политики безопасности официальный датасет временно отключён. Вместо него авторы предлагают источник данных от сообщества:

wget https://github.com/chenditc/investment_data/releases/latest/download/qlib_bin.tar.gz
mkdir -p ~/.qlib/qlib_data/cn_data
tar -zxvf qlib_bin.tar.gz -C ~/.qlib/qlib_data/cn_data --strip-components=1

В репозитории есть скрипты-краулеры, которые собирают данные с Yahoo Finance и конвертируют их в формат Qlib. Данные Yahoo неидеальны, поэтому для серьёзной работы платформа советует готовить свой датасет: документы описывают конвертацию из CSV. Отдельный скрипт проверяет здоровье данных — пропуски и аномальные скачки цен.

Автоматический workflow: qrun

Утилита qrun запускает полный цикл по одному YAML-конфигу: строит датасет, обучает модель, делает бэктест и оценку.

cd examples
qrun benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml

На выходе — таблица метрик: средняя избыточная доходность, годовая доходность, information ratio и максимальная просадка, отдельно с учётом комиссий и без. Для визуальных отчётов есть Jupyter-блокнот workflow_by_code.ipynb: он строит графики кумулятивной доходности по группам, распределения доходностей и коэффициента информации (IC).

Если готовый workflow не подходит, те же шаги собирают вручную через Python API — компоненты можно комбинировать как угодно.

Зоопарк моделей

В каталоге examples/benchmarks собраны десятки готовых моделей с конфигами и бенчмарками:

  • GBDT: XGBoost, LightGBM, CatBoost.
  • Классические нейросети: MLP, LSTM, GRU, ALSTM, TCN, Transformer, Localformer, TabNet.
  • Графовые и гибридные: GATs, SFM, HIST.
  • Модели из свежих статей: TRA, TCTS, DoubleEnsemble, ADARNN, ADD, IGMTF, KRNN, Sandwich.

Базовые датасеты признаков — Alpha158 и Alpha360. Они работают и для рынка США, и для рынка Китая. Метрики каждой модели на этих датасетах сведены в таблицу в README каталога benchmarks.

Скрипт run_all_model.py прогоняет сразу все модели. Для каждой он создаёт отдельное виртуальное окружение и удаляет его после обучения — остаются только результаты: значения IC и бэктеста. Скрипт пока работает только на Linux.

Динамика рынка и обучение с подкреплением

Финансовые данные нестационарны. Модель, обученная на одном периоде, теряет качество на другом. Qlib даёт два готовых подхода: регулярное дообучение (Rolling Retraining) и метод DDG-DA на основе мета-обучения, опубликованный на AAAI 2022.

RL-фреймворк решает другую задачу — непрерывные решения. Главный сценарий — исполнение заявок (order execution): как крупный ордер разложить на мелкие сделки, чтобы не двигать рынок. В комплекте бенчмарки TWAP, PPO и OPDS. Поддерживается NestedExecutor: стратегии разных уровней — например, управление портфелем и исполнение заявок внутри него — оптимизируются вместе.

Хранилище данных и производительность

Обычные базы данных плохо подходят для ML-задач в финансах. Данные проходят слишком много слоёв интерфейсов и лишних преобразований форматов — загрузка тормозит. Qlib хранит данные в компактном формате, который быстро собирается в массивы для научных вычислений.

Авторы сравнили своё хранилище с популярными решениями на одной задаче: собрать датасет из 14 признаков по дневным данным 800 акций за 2007–2020 годы.

Решение Время (1 CPU)
HDF5 184,4 с
MySQL 365,3 с
MongoDB 253,6 с
InfluxDB 368,2 с
Qlib с кешами выражений и датасетов 7,4 с

Сервер данных работает в двух режимах. В offline-режиме данные лежат локально — это вариант по умолчанию. В online-режиме данные и кеш разделяются между всеми клиентами как общий сервис. Так растёт доля попаданий в кеш и экономится место на диске. Online-режим разворачивается автоматически скриптами на основе Azure CLI.

RD-Agent: LLM-агенты для квант-исследований

Самая свежая часть экосистемы — RD-Agent. Это отдельный проект Microsoft: LLM-агенты автономно ведут исследования и разработки. В связке с Qlib они автоматически ищут новые факторы и оптимизируют модели — авторы называют это Auto Quant Factory.

Подход описан в статье R&D-Agent-Quant: мультиагентный фреймворк одновременно оптимизирует факторы и модели. На YouTube есть демо всех трёх сценариев: поиск факторов, извлечение факторов из исследовательских отчётов и оптимизация моделей.

Здесь и смыкаются два мира: классический ML-конвейер Qlib и агентные системы на LLM. Квант-исследование превращается из ручного труда в задачу, которую ставят и направляют, а выполняют агенты.

Кому стоит посмотреть

  • Квант-исследователям и аналитикам — как единая основа для экспериментов с воспроизводимыми бенчмарками.
  • Инженерам по данным — как пример быстрого специализированного хранилища временных рядов.
  • ML-инженерам — как справочник реализаций моделей из свежих статей по финансам.
  • Разработчикам агентных систем — как пример предметной области, где LLM-агенты уже автоматизируют полный цикл R&D.

Документация доступна онлайн на qlib.readthedocs.io, там же инструкции по сборке из исходников. Обучающие блокноты лежат в каталоге examples/tutorial. План развития ведётся как GitHub-проект, вопросы принимают через issues и чат Gitter.

Источник: https://github.com/microsoft/qlib