Последние выпущенные функции
Мы рады объявить о выпуске RD-Agent® , мощного инструмента, который поддерживает автоматизированный анализ факторов и оптимизацию моделей в исследованиях и разработках в области количественных инвестиций.
RD-Agent теперь доступен на GitHub, и мы приветствуем вашу звезду?!
Чтобы узнать больше, посетите нашу ♾️Демо-страницу. Здесь вы найдете демонстрационные видеоролики на английском и китайском языках, которые помогут вам лучше понять сценарий и использование RD-Agent.
Мы подготовили для вас несколько демонстрационных видеороликов:
Сценарий | Демонстрационное видео (на английском языке) | Демонстрационное видео (中文) |
---|---|---|
Квантовый фактор майнинга | Связь | Связь |
Quant Factor Mining из отчетов | Связь | Связь |
Оптимизация квантовой модели | Связь | Связь |
Особенность | Статус |
---|---|
BPQP для сквозного обучения | ?Скоро!(На рассмотрении) |
Завод Auto Quant под управлением LLM | Выпущено в ♾️RD-Agent 8 августа 2024 г. |
КРНН и сэндвич-модели | ? Выпущено 26 мая 2023 г. |
Выпуск Qlib v0.9.0 | Выпущено 9 декабря 2022 г. |
Структура обучения RL | ? ? Выпущено 10 ноября 2022 г. № 1332, № 1322, № 1316, № 1299, № 1263, № 1244, № 1169, № 1125, № 1076. |
Модели HIST и IGMTF | ? Выпущено 10 апреля 2022 г. |
Учебное пособие по блокноту Qlib | Выпущено 7 апреля 2022 г. |
Данные индекса Ибовеспы | ? Выпущено 6 апреля 2022 г. |
База данных на определенный момент времени | ? Выпущено 10 марта 2022 г. |
Пример данных серверной части и книги заказов арктического поставщика | ? Выпущено 17 января 2022 г. |
Структура на основе метаобучения и DDG-DA | ? ? Выпущено 10 января 2022 г. |
Оптимизация портфеля на основе планирования | ? Выпущено 28 декабря 2021 г. |
Выпуск Qlib v0.8.0 | Выпущено 8 декабря 2021 г. |
ДОБАВИТЬ модель | ? Выпущено 22 ноября 2021 г. |
Модель АДАРНН | ? Выпущено 14 ноября 2021 г. |
Модель TCN | ? Выпущено 4 ноября 2021 г. |
Вложенная структура принятия решений | ? Выпущено 1 октября 2021 г. Пример и документация. |
Адаптер временной маршрутизации (TRA) | ? Выпущено 30 июля 2021 г. |
Трансформатор и локалформер | ? Выпущено 22 июля 2021 г. |
Выпуск Qlib v0.7.0 | Выпущено 12 июля 2021 г. |
Модель ТТСТС | ? Выпущено 1 июля 2021 г. |
Онлайн-подача и автоматическая смена моделей | ? Выпущено 17 мая 2021 г. |
Модель двойного ансамбля | ? Выпущено 2 марта 2021 г. |
Пример высокочастотной обработки данных | ? Выпущено 5 февраля 2021 г. |
Пример высокочастотной торговли | ? Часть кода выпущена 28 января 2021 г. |
Высокочастотные данные (1 мин) | ? Выпущено 27 января 2021 г. |
Модель табнета | ? Выпущено 22 января 2021 г. |
Здесь не перечислены функции, выпущенные до 2021 года.
Qlib — это количественная инвестиционная платформа с открытым исходным кодом, ориентированная на искусственный интеллект, целью которой является реализация потенциала, расширение возможностей исследований и создание ценности с использованием технологий искусственного интеллекта в количественных инвестициях, от изучения идей до реализации продукции. Qlib поддерживает разнообразные парадигмы моделирования машинного обучения, включая контролируемое обучение, моделирование динамики рынка и обучение с подкреплением.
Все большее количество исследовательских работ/документов SOTA Quant в различных парадигмах публикуется в Qlib для совместного решения ключевых проблем в количественных инвестициях. Например, 1) использование обучения с учителем для анализа сложных нелинейных моделей рынка на основе обширных и разнородных финансовых данных, 2) моделирование динамического характера финансового рынка с использованием технологии адаптивного дрейфа концепций и 3) использование обучения с подкреплением для моделирования непрерывных инвестиций. решения и помогать инвесторам в оптимизации их торговых стратегий.
Он содержит полный конвейер машинного обучения для обработки данных, обучения моделей, бэк-тестирования; и охватывает всю цепочку количественного инвестирования: альфа-поиск, моделирование рисков, оптимизацию портфеля и исполнение ордеров. Более подробную информацию можно найти в нашей статье «Qlib: платформа количественного инвестирования, ориентированная на искусственный интеллект».
Фреймворки, учебники, данные и DevOps | Основные проблемы и решения в квантовых исследованиях |
---|---|
|
|
Новые функции в разработке (упорядочены по предполагаемому времени выпуска). Ваши отзывы о функциях очень важны.
Высокоуровневую структуру Qlib можно найти выше (пользователи могут найти подробную структуру дизайна Qlib, когда углубляются в подробности). Компоненты спроектированы как слабосвязанные модули, и каждый компонент может использоваться автономно.
Qlib предоставляет мощную инфраструктуру для поддержки квантовых исследований. Данные всегда являются важной частью. Сильная структура обучения предназначена для поддержки различных парадигм обучения (например, обучение с подкреплением, обучение под учителем) и моделей на разных уровнях (например, динамическое моделирование рынка). Моделируя рынок, торговые стратегии будут генерировать торговые решения, которые будут выполнены. Несколько торговых стратегий и исполнителей на разных уровнях или детализации могут быть вложены для оптимизации и совместной работы. Наконец, будет предоставлен всесторонний анализ, и модель можно будет обслуживать онлайн по низкой цене.
Это краткое руководство пытается продемонстрировать
Вот краткая демонстрация , показывающая, как установить Qlib
и запустить LightGBM с помощью qrun
. Однако убедитесь, что вы уже подготовили данные, следуя инструкциям.
В этой таблице показана поддерживаемая версия Qlib
для Python:
установить с помощью пипа | установить из исходников | сюжет | |
---|---|---|---|
Питон 3.7 | ✔️ | ✔️ | ✔️ |
Питон 3.8 | ✔️ | ✔️ | ✔️ |
Питон 3.9 | ✔️ |
Примечание :
conda
может привести к отсутствию файлов заголовков, что приведет к сбою установки определенных пакетов.Qlib
из исходного кода. Если пользователи используют Python 3.6 на своих компьютерах, рекомендуется обновить Python до версии 3.7 или использовать Python conda
для установки Qlib
из исходного кода.Qlib
поддерживает выполнение таких рабочих процессов, как обучение моделей, тестирование на исторических данных и построение большинства связанных показателей (включенных в блокнот). Однако построение графиков производительности модели на данный момент не поддерживается, и мы исправим это при обновлении зависимых пакетов в будущем.Qlib
Требуется пакет tables
, hdf5
в таблицах не поддерживает Python3.9. Пользователи могут легко установить Qlib
с помощью pip, выполнив следующую команду.
pip install pyqlib
Примечание : pip установит последнюю стабильную версию qlib. Однако основная ветка qlib находится в активной разработке. Если вы хотите протестировать новейшие скрипты или функции в основной ветке. Пожалуйста, установите qlib, используя методы, указанные ниже.
Кроме того, пользователи могут установить последнюю версию Qlib
для разработчиков с помощью исходного кода, выполнив следующие действия:
Перед установкой Qlib
из исходного кода пользователям необходимо установить некоторые зависимости:
pip install numpy
pip install --upgrade cython
Клонируйте репозиторий и установите Qlib
следующим образом.
git clone https://github.com/microsoft/qlib.git && cd qlib
pip install . # `pip install -e .[dev]` is recommended for development. check details in docs/developer/code_standard_and_dev_guide.rst
Примечание . Вы также можете установить Qlib с помощью python setup.py install
. Но это не рекомендуемый подход. Это пропустит pip
и вызовет неясные проблемы. Например, только команда pip install .
может перезаписать стабильную версию, установленную с помощью pip install pyqlib
, тогда как команда python setup.py install
не может .
Советы . Если вам не удалось установить Qlib
или запустить примеры в своей среде, сравнение ваших шагов и рабочего процесса CI может помочь вам найти проблему.
Советы для Mac : Если вы используете Mac с M1, вы можете столкнуться с проблемами при создании колеса для LightGBM, что связано с отсутствием зависимостей от OpenMP. Чтобы решить эту проблему, сначала установите openmp с помощью brew install libomp
, а затем запустите pip install .
чтобы построить его успешно.
❗В связи с более строгой политикой безопасности данных. Официальный набор данных временно отключен. Вы можете попробовать этот источник данных, предоставленный сообществом. Вот пример загрузки данных, обновленных 20240809.
wget https://github.com/chenditc/investment_data/releases/download/2024-08-09/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
rm -f qlib_bin.tar.gz
Официальный набор данных, представленный ниже, возобновится в ближайшем будущем.
Загрузите и подготовьте данные, выполнив следующий код:
# get 1d data
python -m qlib.run.get_data qlib_data --target_dir ~ /.qlib/qlib_data/cn_data --region cn
# get 1min data
python -m qlib.run.get_data qlib_data --target_dir ~ /.qlib/qlib_data/cn_data_1min --region cn --interval 1min
# get 1d data
python scripts/get_data.py qlib_data --target_dir ~ /.qlib/qlib_data/cn_data --region cn
# get 1min data
python scripts/get_data.py qlib_data --target_dir ~ /.qlib/qlib_data/cn_data_1min --region cn --interval 1min
Этот набор данных создается на основе общедоступных данных, собранных скриптами сканера, которые были выпущены в том же репозитории. Пользователи могли создавать с ним тот же набор данных. Описание набора данных
Обратите ВНИМАНИЕ , что данные собираются с Yahoo Finance и могут быть не точными. Мы рекомендуем пользователям подготовить свои собственные данные, если у них есть высококачественный набор данных. Для получения дополнительной информации пользователи могут обратиться к соответствующему документу .
Этот шаг является необязательным , если пользователи хотят опробовать свои модели и стратегии только на исторических данных.
Пользователям рекомендуется один раз обновить данные вручную (--trading_date 2021-05-25), а затем настроить автоматическое обновление.
ПРИМЕЧАНИЕ . Пользователи не могут постепенно обновлять данные на основе автономных данных, предоставленных Qlib (некоторые поля удалены для уменьшения размера данных). Пользователям следует использовать сборщик Yahoo, чтобы загружать данные Yahoo с нуля, а затем постепенно обновлять их.
Для получения дополнительной информации см.: Сборщик Yahoo.
Автоматическое обновление данных в каталоге «qlib» каждый торговый день (Linux)
используйте crontab : crontab -e
поставьте задачи на время:
* * * * 1-5 python <script path> update_data_to_bin --qlib_data_1d_dir <user data dir>
Ручное обновление данных
python scripts/data_collector/yahoo/collector.py update_data_to_bin --qlib_data_1d_dir <user data dir> --trading_date <start date> --end_date <end date>
docker pull pyqlib/qlib_image_stable:stable
docker run -it --name < container name > -v < Mounted local directory > :/app qlib_image_stable
>>> python scripts/get_data.py qlib_data --name qlib_data_simple --target_dir ~ /.qlib/qlib_data/cn_data --interval 1d --region cn
>>> python qlib/workflow/cli.py examples/benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml
>>> exit
docker start -i -a < container name >
docker stop < container name >
docker rm < container name >
Qlib предоставляет инструмент под названием qrun
для автоматического запуска всего рабочего процесса (включая построение набора данных, модели обучения, тестирование на исторических данных и оценку). Вы можете запустить рабочий процесс автоматического количественного исследования и выполнить анализ графических отчетов, выполнив следующие действия:
Рабочий процесс квантового исследования: запустите qrun
с конфигурацией рабочего процесса Lightgbm (workflow_config_lightgbm_Alpha158.yaml, как показано ниже.
cd examples # Avoid running program under the directory contains `qlib`
qrun benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml
Если пользователи хотят использовать qrun
в режиме отладки, используйте следующую команду:
python -m pdb qlib/workflow/cli.py examples/benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml
Результат qrun
следующий: более подробную информацию о результате можно найти в разделе «Внутридневная торговля».
' The following are analysis results of the excess return without cost. '
risk
mean 0.000708
std 0.005626
annualized_return 0.178316
information_ratio 1.996555
max_drawdown -0.081806
' The following are analysis results of the excess return with cost. '
risk
mean 0.000512
std 0.005626
annualized_return 0.128982
information_ratio 1.444287
max_drawdown -0.091078
Вот подробные документы по qrun
и рабочему процессу.
Анализ графических отчетов: запустите examples/workflow_by_code.ipynb
с помощью jupyter notebook
чтобы получить графические отчеты.
Анализ прогнозного сигнала (предсказание модели)
Анализ портфеля
Объяснение приведенных выше результатов
Автоматический рабочий процесс может не подходить для исследовательского процесса всех исследователей Quant. Для поддержки гибкого рабочего процесса количественных исследований Qlib также предоставляет модульный интерфейс, позволяющий исследователям создавать собственный рабочий процесс с помощью кода. Вот демо-версия индивидуального рабочего процесса количественного исследования с помощью кода.
Количественные инвестиции — это уникальный сценарий, требующий решения множества ключевых задач. В настоящее время Qlib предоставляет решения для некоторых из них.
Точное прогнозирование тенденции цен на акции является очень важной частью построения прибыльных портфелей. Однако огромное количество данных в различных форматах на финансовом рынке затрудняет построение моделей прогнозирования.
Все большее количество исследовательских работ/документов SOTA Quant, посвященных построению моделей прогнозирования для анализа ценных сигналов/шаблонов в сложных финансовых данных, публикуется в Qlib
Вот список моделей, построенных на Qlib
.
Ваш пиар новых моделей Quant приветствуется.
Производительность каждой модели в наборах данных Alpha158
и Alpha360
можно найти здесь.
Все перечисленные выше модели работают с Qlib
. Пользователи могут найти предоставленные нами файлы конфигурации и некоторые подробности о модели в папке тестов. Более подробную информацию можно получить в файлах моделей, перечисленных выше.
Qlib
предоставляет три различных способа запуска одной модели, пользователи могут выбрать тот, который лучше всего подходит для их случая:
Пользователи могут использовать упомянутый выше инструмент qrun
для запуска рабочего процесса модели на основе файла конфигурации.
Пользователи могут создать скрипт Python workflow_by_code
на основе сценария, указанного в папке examples
.
Пользователи могут использовать сценарий run_all_model.py
указанный в папке examples
, для запуска модели. Вот пример конкретной команды оболочки, которая будет использоваться: python run_all_model.py run --models=lightgbm
, где аргументы --models
могут принимать любое количество моделей, перечисленных выше (доступные модели можно найти в тестах). Дополнительные варианты использования см. в документации файла.
tensorflow==1.15.0
). Qlib
также предоставляет сценарий run_all_model.py
, который может запускать несколько моделей за несколько итераций. ( Примечание : на данный момент скрипт поддерживает только Linux . Другие ОС будут поддерживаться в будущем. Кроме того, он не поддерживает параллельное выполнение одной и той же модели несколько раз, и это также будет исправлено в будущих разработках.)
Скрипт создаст уникальную виртуальную среду для каждой модели и удалит среды после обучения. Таким образом, будут генерироваться и сохраняться только результаты экспериментов, такие как IC
и результаты backtest
.
Вот пример запуска всех моделей за 10 итераций:
python run_all_model . py run 10
Он также предоставляет API для одновременного запуска определенных моделей. Дополнительные варианты использования см. в документации файла.
Из-за нестационарного характера среды финансового рынка распределение данных может меняться в разные периоды, из-за чего производительность моделей, построенных на обучающих данных, снижается в будущих тестовых данных. Поэтому адаптация моделей/стратегий прогнозирования к динамике рынка очень важна для эффективности модели/стратегий.
Вот список решений, построенных на Qlib
.
Qlib теперь поддерживает обучение с подкреплением — функцию, предназначенную для моделирования непрерывных инвестиционных решений. Эта функция помогает инвесторам оптимизировать свои торговые стратегии, изучая взаимодействие с окружающей средой, чтобы максимизировать некоторое понятие совокупного вознаграждения.
Вот список решений, созданных на основе Qlib
сгруппированных по сценариям.
Вот введение этого сценария. Здесь сравниваются все методы, приведенные ниже.
Набор данных играет очень важную роль в Quant. Вот список наборов данных, построенных на Qlib
:
Набор данных | Рынок США | Китайский рынок |
---|---|---|
Альфа360 | √ | √ |
Альфа158 | √ | √ |
Вот руководство по созданию набора данных с помощью Qlib
. Ваш пиар по созданию нового набора количественных данных приветствуется.
Qlib легко настраивается, и многие его компоненты можно изучить. Обучаемые компоненты — это экземпляры Forecast Model
и Trading Agent
. Они изучаются на основе уровня Learning Framework
, а затем применяются к нескольким сценариям на уровне Workflow
. Структура обучения также использует уровень Workflow
(например, совместное использование Information Extractor
, создание сред на основе Execution Env
).
В зависимости от парадигмы обучения их можно разделить на обучение с подкреплением и обучение с учителем.
Execution Env
на уровне Workflow
для создания сред. Стоит отметить, что NestedExecutor
также поддерживается. Это дает пользователям возможность вместе оптимизировать различные уровни стратегий/моделей/агентов (например, оптимизация стратегии исполнения ордеров для конкретной стратегии управления портфелем).Если вы хотите быстро просмотреть наиболее часто используемые компоненты qlib, вы можете попробовать блокноты здесь.
Подробные документы организованы в docs. Sphinx и тема readthedocs необходимы для создания документации в форматах html.
cd docs/
conda install sphinx sphinx_rtd_theme -y
# Otherwise, you can install them with pip
# pip install sphinx sphinx_rtd_theme
make html
Вы также можете просмотреть последний документ онлайн напрямую.
Qlib находится в активной и постоянной разработке. Наш план изложен в дорожной карте, которая управляется как проект GitHub.
Сервер данных Qlib можно развернуть как в Offline
, так и в Online
режиме. Режим по умолчанию — автономный режим.
В Offline
режиме данные будут развернуты локально.
В Online
-режиме данные будут развернуты как общая служба данных. Данные и их кэш будут использоваться всеми клиентами. Ожидается, что производительность извлечения данных повысится за счет более высокой частоты попаданий в кэш. Это также будет занимать меньше места на диске. Документы онлайн-режима можно найти на Qlib-Server. Онлайн-режим можно развернуть автоматически с помощью сценариев на основе Azure CLI. Исходный код онлайн-сервера данных можно найти в репозитории Qlib-Server.
Производительность обработки данных важна для методов, основанных на данных, таких как технологии искусственного интеллекта. Будучи платформой, ориентированной на искусственный интеллект, Qlib предоставляет решение для хранения и обработки данных. Чтобы продемонстрировать производительность сервера данных Qlib, мы сравним его с несколькими другими решениями для хранения данных.
Мы оцениваем производительность нескольких решений для хранения данных, выполняя одну и ту же задачу, которая создает набор данных (14 функций/факторов) на основе базовых ежедневных данных OHLCV фондового рынка (800 акций каждый день с 2007 по 2020 год). Задача включает в себя запросы и обработку данных.
HDF5 | MySQL | МонгоБД | Инфлюксдб | Qlib -E -D | Qlib +E -D | Клиб +E +D | |
---|---|---|---|---|---|---|---|
Всего (1 ЦП) (секунды) | 184,4±3,7 | 365,3±7,5 | 253,6±6,7 | 368,2±3,6 | 147,0±8,8 | 47,6±1,0 | 7,4±0,3 |
Всего (64 ЦП) (секунды) | 8,8±0,6 | 4,2±0,2 |
+(-)E
указывает на наличие (вне) ExpressionCache
+(-)D
указывает на (выход) DatasetCache
Большинству баз данных общего назначения загрузка данных занимает слишком много времени. Изучив базовую реализацию, мы обнаружили, что данные проходят через слишком много уровней интерфейсов и ненужные преобразования формата в решениях для баз данных общего назначения. Такие накладные расходы сильно замедляют процесс загрузки данных. Данные Qlib хранятся в компактном формате, который удобно объединять в массивы для научных вычислений.
Qlib
, создайте запросы на включение.Присоединяйтесь к дискуссионным группам IM:
Гиттер |
---|
Мы ценим все вклады и благодарим всех участников!
До того, как мы выпустили Qlib как проект с открытым исходным кодом на Github в сентябре 2020 года, Qlib был внутренним проектом нашей группы. К сожалению, внутренняя история коммитов не сохраняется. Многие члены нашей группы также внесли большой вклад в Qlib, в том числе Жуйхуа Ван, Инда Чжан, Хайсу Ю, Шую Ван, Бочен Пан и Дун Чжоу. Особая благодарность Дун Чжоу за его первоначальную версию Qlib.
Этот проект приветствует вклад и предложения.
Вот некоторые стандарты кода и рекомендации по разработке для отправки запроса на включение.
Вносить вклады не так уж и сложно. Решение проблемы (возможно, просто ответ на вопрос, поднятый в списке проблем или в gitter), исправление/выпуск ошибки, улучшение документов и даже исправление опечатки — важные вклады в Qlib.
Например, если вы хотите внести свой вклад в документ/код Qlib, вы можете выполнить действия, показанные на рисунке ниже.
Если вы не знаете, как начать вносить свой вклад, вы можете обратиться к следующим примерам.
Тип | Примеры |
---|---|
Решение проблем | Ответить на вопрос; выпуск или исправление ошибки |
Документы | Улучшить качество документов; Исправить опечатку |
Особенность | Реализуйте запрошенную функцию следующим образом; Рефакторинг интерфейсов |
Набор данных | Добавить набор данных |
Модели | Реализация новой модели, некоторые инструкции по добавлению моделей |
Хорошие первые выпуски помечены, чтобы указать, что с них легко начать свой вклад.
Вы можете найти несовершенную реализацию в Qlib с помощью rg 'TODO|FIXME' qlib
Если вы хотите стать одним из сопровождающих Qlib и вносить больший вклад (например, помогать объединять PR, сортировать проблемы), свяжитесь с нами по электронной почте ([email protected]). Мы рады помочь повысить уровень вашего разрешения.
Большинство вкладов требует от вас согласия с Лицензионным соглашением для авторов (CLA), в котором говорится, что вы имеете право и действительно предоставляете нам право использовать ваш вклад. Подробную информацию можно найти на странице https://cla.opensource.microsoft.com.
Когда вы отправляете запрос на включение, бот CLA автоматически определяет, нужно ли вам предоставить CLA, и соответствующим образом оформляет PR (например, проверку статуса, комментарий). Просто следуйте инструкциям бота. Вам нужно будет сделать это только один раз во всех репозиториях, используя наш CLA.
В этом проекте принят Кодекс поведения Microsoft с открытым исходным кодом. Для получения дополнительной информации см. часто задаваемые вопросы о Кодексе поведения или свяжитесь с нами по адресу [email protected], если у вас возникнут дополнительные вопросы или комментарии.