Как российские разработчики заставили GPT предсказывать биржевые котировки

от автора

18 мая 2024 на конференции «Тюльпаномания» Тихон Павлов, количественный аналитик «Финансовой компании Викинг» раскрыл секрет использования GPT-4 для прогнозирования биржевых котировок. Тема разделила аудиторию на скептиков и энтузиастов, породив жаркие дебаты о будущем трейдинга. Никто не остался равнодушным.

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

Мы в Викинге занимаемся разработкой ПО для алгоритмической торговли на российских и зарубежных биржах. Более 20 лет помогаем трейдерам, брокерам и инвестиционным компаниям зарабатывать на финансовых рынках при помощи арбитража.

Прежде чем начнем погружаться в алхимию XXI века (где вместо превращения свинца в золото, мы превращаем массивы данных в профит), мы хотим пригласить вас на следующую конференцию ФК Викинг «Профессиональные инвестиции 2024: Визионерство», которая пройдет 14 декабря 2024 в Москве. На ней Тихон и другие спикеры продолжат удивлять вас актуальными докладами. Регистрация на мероприятие по ссылке fkviking.com/profinvest24.  

Давайте вернемся к теме ИИ.

История применения ИИ для трейдинга

Начнем с того, что мы были не первыми. До нас эта идея приходила многим, например:

JPMorgan использовал GPT для анализа стенограмм заседаний Федеральной резервной системы США с 1998 по 2022 год. Модель оценивала «ястребиность» или «голубиность» высказываний, создавая индекс настроений. Результаты показали, что анализ сентиментов при помощи GPT может предоставить ценные инсайты о тенденциях в монетарной политике, хотя и с некоторыми ограничениями в интерпретации нюансов.

Исследователи из университета Флориды обнаружили, что GPT способен точно определять сентимент финансовых новостей. Модель также продемонстрировала способность прогнозировать движения фондового рынка на основе анализа новостей. Однако исследование выявило некоторые ограничения, связанные с обработкой сложных финансовых концепций.

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

Два классических подхода при работе с GPT: странный и спорный

Для работы с GPT обычно используют два подхода, назовем их странный и спорный.

Источник: Сцена из кинофильма «Тупой и ещё тупее 2» 

Странный подход — это когда мы при помощи определенного промта задаем GPT вопрос в лоб. Например, просим его предсказать цену на биткоин на завтра. Подход странный, т.к. GPT, обучался на данных собранных до апреля 2023 года. И, соответственно, понятия не имеет, что происходило после этого. По сути мы играем в рулетку, при этом крайне сложно ожидать от GPT по-настоящему хорошего предикта.

Странный подход

Спорный подход — это когда мы закидываем в GPT некий источник с информацией, например, какую-то новость, и просим на ее основе выдать прогноз.

Спорный подход

А если у нас нет новости, или новость вообще не влияет на наши цены. Что если новостей у нас много и они противоречивы и выходили в разное время? Этот способ выглядит уже более логичным, но все равно вызывает вопросы!

Оба варианта нам не подходили. Мы понимали ограничения, ведь GPT изначально создан для работы с текстом, а не с числовыми финансовыми данными. Но мы не ищем легких путей. У нас была задача, заставить языковую модель «понимать» рынок, и мы придумали как. 

Но давайте по порядку.

Как работает GPT

Мы выбрали GPT для нашего эксперимента по нескольким причинам. Во-первых, это одна из самых сильных языковых моделей на сегодняшний день. Во-вторых, GPT показал показал впечатляющие результаты в обнаружении закономерностей в данных. Наконец, функция «ассистентов» позволила нам загружать собственные данные.

Чтобы объяснить наш подход, нужно понимать, как работает GPT.

GPT-модель принимает на вход слова и преобразует их в вектора, получая эмбеддинги. Каждое слово это вектор, т.е. набор координат в многомерном векторном пространстве.

Как GPT-модель преобразует слова в эмбеддинги

Например, вектора «кошка» и «котенок», будут находиться рядом. А вот вектор, соответствующий слову «собака», будет находиться на некотором расстоянии. Вектор «дома» — будет расположен в векторном пространстве еще дальше.

Как выглядят эмбеддинги

Или другой пример. Допустим, слову «король» соответствует некий вектор. Тогда вектор «королева» это вектор «король» смещенный в направлении вектора «женщина».

Таким образом, GPT не только создает векторное пространство, но и улавливает некоторые скрытые взаимосвязи между разными векторами. GPT прекрасно оперирует с последовательностями векторов, зная, какой вектор чаще всего используется следующим. Именно благодаря этому он умеет строить логичные предложения. Перед нами стоит схожая задача — продолжить последовательность, состоящую из биржевых данных и таким образом сделать предикт.

Векторное пространство

В GPT существует функция «ассистентов», которая позволяет загружать собственные данные. Нейросеть анализирует их, создает векторное подпространство и строит связи внутри него. Отлично! Используем это, чтобы загрузить в GPT биржевые данные.

GPT ассистенты

Однако, возникла проблема: наши данные — это числа (цены и объемы), а GPT — языковая модель, не очень хорошо работающая с вычислениями. Нам было нужно преобразовать числовые данные в формат, понятный для GPT.

Источник: Исследование «Mathematical Capabilities of ChatGPT», Oxford, Department of Computer Science, https://arxiv.org/pdf/2301.13867

Причем здесь Гриша?

Однажды Тихон столкнулся в подъезде с Гришей, который работал водителем. Соседи давно не виделись и у них состоялся “small talk”.

— Чем сейчас занимаешься? — поинтересовался Гриша.

Тихон, переполненный энтузиазмом от новой работы, начал с воодушевлением рассказывать:

— Я устроился в Викинг на позицию кванта, провожу количественные исследования, строю модели машинного обучения, анализирую паттерны биржевых цен и разрабатываю алгоритмические торговые стратегии!

Гриша слушал с нарастающим недоумением. Было понятно, что сосед абсолютно не понимает, о чем идет речь. Осознав это, Тихон решил упростить объяснение:

— Короче, Гриш, я предсказываю цены на рынке.

Гриша почесал затылок и, немного подумав, выдал:

— А, ну понятно. Короче, колдун, какой-то!

Тихон усмехнулся. Эта простая фраза неожиданно натолкнула его на мысль. Если его работу можно сравнить с колдовством, почему бы не подойти к задаче как настоящий волшебник? 

Ну окей. Раз я колдун… (надеваю шляпу). 

Чудесная трансформация датасайентиста 

Магические превращения: как приготовить зелье из биржевых данных

Чтобы заставить GPT «понимать» биржевые данные команда ФК Викинг разработала уникальный метод кодирования финансовой информации.  

Суть метода в следующем:

Мы создали специального GPT-ассистента – «Волшебника-зельевара», эксперта по магическим зельям. Каждый рецепт зелья – это закодированная выборка из датасета с биржевыми данными. 

Полученный таким образом набор «рецептов» образует «книгу рецептов магических зелий». Именно ее мы и будем загружать в GPT. По сути это особым образом закодированный обучающий датасет. 

Смешивая разные ингредиенты, мы получали только одно из двух зелий – либо Зелье роста, либо Зелье падения. 

Таким образом, наш Волшебник-зельевар обучается предсказывать изменение цены на основе исторических данных. Поговорим об этом более подробно.

Магическая интерпретация задачи бинарной классификации

Объяснение принципа преобразования данных

Далее мы покажем основные принципы наших расчетов на примере свечных данных. Пытливый исследователь найдет в тексте множество подсказок и пищи для дальнейших размышлений и экспериментов. 

Мы не раскрываем, часть работы связанной с выбором инструментов, сбором данных, предобработкой датасета и подготовкой фичей, т.к. это закрытая коммерческая разработка. 

Рассмотрим систему кодирования, в которой:

  • каждая свеча представлена 5 признаками (открытие, закрытие, максимум, минимум, объем), 

  • каждый признак можно охарактеризовать троично: рост, падение или незначительное изменение.

В нашем примере мы будем предсказывать одиннадцатую свечу на основании десяти последних свечей. Именно эти 10 свечей мы и будем кодировать.

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

Так как одна свеча кодируется 5-ю признаками, для описания 10 свечей нам потребовалось 5*10=50 признаков. Но мы же помним, что наши признаки троичны — каждый из них может принимать 3 различных значения. Таким образом для кодирования нам потребуется 50*3=150 компонент. Каждую компоненту мы будем называть “магическим ингредиентом”.

Хитрости и щепотка магии

Комбинация ингредиентов будет определять результат — получится у нас Зелье роста либо Зелье падения. Внимательный читатель может задать логичный вопрос: «А почему бы нам не закодировать все 10 свечей тремя ингредиентами, просто расположив их в определенной последовательности?».

Дело в том, что GPT очень толерантно относится к расположению слов в предложении. Поэтому если мы будем использовать всего 3 ингредиента, то последовательность в наших данных может быть нарушена. Поэтому ингредиенты нам нужны уникальные, это важно!

Уникальность ингредиентов это необходимое требование, чтобы закодировать расположение признака в последовательности (например, цену закрытие на третьей свече). Но это еще не всё.

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

При данном подходе GPT создает для нашего ассистента новые вектора и находит между ними скрытые связи. 

Повторим ключевые моменты 

  • Мы трактуем задачу, как бинарную классификацию – цена вырастет, или упадет;

  • GPT-ассистент обучается на нашей базе данных с рецептами, описывающими ситуации на рынке в прошлом;

  • Рецепты состоят из ингредиентов, представляющих из себя несуществующие слова;

  • Каждый признак кодируется тремя уникальными ингредиентами;

  • В результате смешения различных ингредиентов мы получаем либо Зелье роста, либо Зелье падения.

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

При этом, у GPT есть ряд ограничений, которые накладывает сервис на наш датасет:

  • GPT-ассистент позволяет загрузить максимум 20 файлов;

  • Каждый файл ограничен размером (512мб) и количеством токенов;

  • В каждый файл «влезает» максимум 6200 наших рецептов.

Поэтому мы не смогли скормить GPT миллионы наших рецептов. Получилось загрузить только 124 000. Что на самом деле тоже неплохо.

Обучение модели

GPT-ассистент обучался на исторических данных, представленных в виде «книги рецептов». Каждый «рецепт» соответствовал определенному движению цены (рост или падение).

Прогнозирование

Данный подход позволил нам помочь GPT интерпретировать биржевые данные. Используя несуществующие слова, мы создали новое векторное пространство, исключив для модели возможность оперировать с предыдущим опытом. Это помогло избежать «галлюцинаций» и позволило GPT находить скрытые закономерности в данных.

Напомним, что изначально мы ставили перед собой задачу бинарной классификации, т.е. предсказать вырастет цена или упадет. 

Результат: точность прогнозирования (accuracy) достигла 68%. Это действительно хороший результат. Потому что классические модели машинного обучения редко выдают прогнозы с точностью выше 60%.

Неожиданный результат и бурная реакция

Когда Тихон объявил о достижении точности прогнозирования в 68%, зал взорвался вопросами.

— Как вы добились такой точности?

— А вы смотрели, как изменяется точность прогнозирования, если брать плавающее окно? Будет ли там такая же стабильность?

— Почему вы не рассматривали другие модели, например, LLaMA?

— А что это дает на практике? Как выдаются сигналы и что это дает реально?

— Вы уже начали задумываться о том, как нейросети изменят трейдинг вообще? И главное, как быстро это произойдет?

Публичная дискуссия после доклада длилась больше получаса, плавно переходя в кулуары. Споры не утихали на протяжении всей конференции.

Есть нюансы

Во-первых, среднее время на подготовку ответа ассистентом на запрос составило 16 секунд. Мы использовали модель GPT-4-Turbo и были вынуждены признать, что она достаточно долго думает.

Естественно, такие низкие скорости делают данный подход абсолютно неприменимым в HFT. А мы в Викинге специализируемся именно на высокочастотном трейдинге.

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

Например, если я хочу делать 1 прогноз в минуту, то в месяц я буду тратить около 2000 долларов только за один инструмент!

И это не считая разработки, внедрения и обслуживания.

Ну и напоследок скажем, что подход действительно позволяет использовать скрытый потенциал GPT. Мы получили 68% исключительно на данных цен и объемов. Без фундаментального анализа, мультипликаторов, без учета новостных сентиментов. Очевидно, что подход обладает потенциалом для дальнейшего улучшения.

«Я всегда говорю: не ищите в данных закономерностей больше, чем там присутствует. Мы выжали из этих данных практически все» — добавил Тихон.

Дискуссия о будущем трейдинга

При всей неоднозначности, нас вдохновляют результаты, которые получают датасаентисты ФК Викинг при работе с GPT и другими инструментами искусственного интеллекта. И продолжаем внутри компании творить экспериментальную магию.

А вы верите в потенциал AI в финансовой сфере?

14 декабря 2024 в Москве на конференции «Профессиональные инвестиции 2024: Визионерство» мы расскажем о новых экспериментах в области AI. И постараемся ответить на вопрос:

Сможет ли ИИ заменить трейдера?

Помимо искусственного интеллекта, на мероприятии будем обсуждать злободневные темы от визионеров в мире финансов, которые задают тенденции в России и мире:

  • Инструменты для отслеживания биржевых неэффективностей;

  • Хедж-фонд в РФ в 2024: взгляд изнутри;

  • Есть ли арбитраж на DEFI?

  • Как облигационный рынок пережил 2024-й год и что ждать от 2025-го;

  • Обоснования, расчеты и актуальные способы повышения эффективности торговых стратегий.

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

Ждем и будем рады обменяться опытом с профессиональными трейдерами, управляющими, брокерами и инвесторами. Приходите, нам есть, чем поделиться.

Половина средств полученных от продажи билетов будет передана на благотворительность.

Регистрируйтесь на сайте fkviking.com/profinvest24.


ссылка на оригинал статьи https://habr.com/ru/articles/861492/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *