Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

мультиагентная ии торговая система архитектура

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

Мультиагентная ИИ-торговая система разбивает одно торговое решение на несколько экземпляров большой языковой модели, назначает каждому экземпляру роль и объединяет их результаты в единый ордер. Обычный состав — читатель новостей, аналитик фундаментальных показателей, аналитик графиков, проверяющий риски и агент-менеджер, который выступает арбитром. По состоянию на июль 2026 года несколько фреймворков с открытым исходным кодом такой структуры находятся в теме алгоритмической торговли на GitHub, каждый с несколькими сотнями звезд. Эта страница описывает архитектуру, отделяет опубликованные доказательства от заявлений в README и приводит рыночные данные о затратах, которые должна покрыть любая версия такой системы.

Что такое мультиагентная ИИ-торговая система на самом деле

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

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

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

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

Один полный цикл комитета занимает секунды. Это приемлемо для еженедельного ребалансирования и неактуально на внутридневных скоростях, где маркет-мейкеры котируют и перекотировывают за микросекунды.

Что подтверждают исследования, а что нет

Опубликованные работы по языковым моделям в финансах делятся на три утверждения с очень разной степенью обоснованности.

Извлечение и классификация — это сильное утверждение. Модели маркируют тональность, извлекают цифры из отчетности и сжимают длинные документы с точностью, которая еще несколько лет назад требовала создания специализированной модели. Это измеримо на отложенном тексте и подтверждается на практике.

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

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

Минимальный уровень затрат, который должен покрывать сигнал

Каждая сделка преодолевает спред, и это преодоление — минимальный уровень, который стратегия должна покрыть прежде всего. Медианный котируемый спред в основные часы торгов с 22 по 26 июня 2026 года для шести бумаг, торгуемых в США:

ЗапросМинимальный уровень издержек: медианный спред в базисных пунктах от средней цены, основная сессия, 22–26 июня 2026 г.
Точный SQL-код для каждого числа
SELECT ticker,
       round(quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), bid_price > 0 AND ask_price > bid_price) * 10000, 2) AS spread_bps,
       round(2 * quantileExactIf(0.5)(toFloat64(ask_price - bid_price) / (toFloat64(ask_price + bid_price) / 2), bid_price > 0 AND ask_price > bid_price) * 10000, 2) AS round_trip_bps,
       round(count() / 1e6, 1) AS quote_updates_m
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'KO', 'F', 'RIOT')
  AND sip_timestamp >= toDateTime('2026-06-22 00:00:00')
  AND sip_timestamp < toDateTime('2026-06-27 00:00:00')
  AND (toHour(sip_timestamp) * 60 + toMinute(sip_timestamp)) BETWEEN 810 AND 1199
GROUP BY ticker
HAVING countIf(bid_price > 0 AND ask_price > bid_price) > 0
ORDER BY spread_bps
Run this yourself

Базисный пункт — это одна сотая процентного пункта. Самая узкая бумага в выборке, SPY, показала медианный спред в 0.27 базисных пункта за эту неделю. Самая широкая, RIOT, показала 7.09. Полный цикл (вход и выход) оплачивает спред дважды, поэтому вход и выход в первой бумаге начинаются с отставания в 0.55 базисных пункта, а та же пара в последней бумаге — с отставания в 14.19. Агент, который оборачивает свой портфель дважды в неделю, платит эту пошлину около ста раз в год, и пошлина взимается независимо от того, был ли прогноз верным или нет. Во что обходится торговля акциями детализирует остальные расходы.

Шум, который должен превзойти прогноз направления

Прогнозы направления оцениваются относительно распределения, которое в основном состоит из небольших чисел. Каждая сессия SPY в календарном 2025 году, отсортированная по размеру изменения цены закрытия к закрытию:

ЗапросТипичный размер сессии: изменения цены SPY от закрытия к закрытию по группам волатильности, календарный 2025 г.
Точный SQL-код для каждого числа
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           argMax(close, window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2025-01-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2025-12-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY d
),
paired AS (
    SELECT d, close_px,
           any(close_px) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_px
    FROM daily
),
rets AS (
    SELECT d, round(100 * (toFloat64(close_px) / toFloat64(prev_px) - 1), 3) AS ret_pct
    FROM paired
    WHERE prev_px > 0
)
SELECT multiIf(abs(ret_pct) < 0.25, 'under 0.25%',
               abs(ret_pct) < 0.5, '0.25 to 0.5%',
               abs(ret_pct) < 1.0, '0.5 to 1%',
               abs(ret_pct) < 2.0, '1 to 2%',
               '2% and up') AS move_bucket,
       count() AS sessions,
       round(100 * count() / sum(count()) OVER (), 1) AS pct_of_sessions
FROM rets
GROUP BY move_bucket
ORDER BY min(abs(ret_pct))
Run this yourself

Половина года уместилась в пределах половины процента. Диапазон under 0.25% содержал 24.9% сессий, а диапазон 0.25 to 0.5% — еще 24.1%. На другом конце 13 сессий изменились на 2% and up, что составляет 5.2% года.

Сопоставим это с таблицей спредов. Один базисный пункт — это 0.01%. Типичное движение сессии в 0.3% в тридцать раз превышает узкий спред и примерно в четыре раза — широкий. Арифметика оставляет пространство для терпеливого и верного прогноза и очень мало — для быстрого и маржинального.

Где на самом деле находится торгуемая вселенная

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

ЗапросГде торгуются деньги: объем в долларах США по уровням ликвидности, основная сессия, 30 июня 2026 г.
Точный SQL-код для каждого числа
WITH tv AS (
    SELECT ticker,
           sum(toFloat64(close) * toFloat64(volume)) AS dollar_volume
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2026-06-30')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker
    HAVING sum(toFloat64(close) * toFloat64(volume)) > 0
),
ranked AS (
    SELECT ticker, dollar_volume,
           row_number() OVER (ORDER BY dollar_volume DESC) AS rk
    FROM tv
)
SELECT multiIf(rk <= 10, 'top 10 names',
               rk <= 50, 'ranks 11 to 50',
               rk <= 200, 'ranks 51 to 200',
               rk <= 1000, 'ranks 201 to 1000',
               'ranks beyond 1000') AS liquidity_tier,
       count() AS tickers,
       round(sum(dollar_volume) / 1e9, 2) AS dollar_volume_bn,
       round(100 * sum(dollar_volume) / (SELECT sum(dollar_volume) FROM tv), 1) AS pct_of_dollar_volume
FROM ranked
GROUP BY liquidity_tier
ORDER BY min(rk)
Run this yourself

Десять бумаг несли 22.5% долларового объема сессии, около $205.04 млрд. Следующие 40 несли 20.5%. На другом конце 10966 бумаг, занявших место за пределами 1000, разделили между собой 12.9%, что составляет примерно $117.83 млрд, распределенных по всему «хвосту».

Широта покрытия дешева в рекламе и дорога в торговле. Комитет, который ранжирует три тысячи бумаг, тратит большую часть своих усилий по ранжированию на этот «хвост», где приведенная выше таблица спредов является реальной стоимостью, а не ошибкой округления.

Почему эти бэктесты льстят системе

Крупнейший единственный источник льстящего бэктеста — это выбор временного окна. SPY по календарным годам с 2016 по 2025, с разрывом между самым высоким и самым низким значением цены закрытия за год:

ЗапросОкно определяет ответ: годовая доходность SPY и внутригодовой размах от минимума до максимума, 2016–2025 гг.
Точный SQL-код для каждого числа
WITH daily AS (
    SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           argMax(close, window_start) AS close_px
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2016-01-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2025-12-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY d
),
yr AS (
    SELECT toYear(d) AS year,
           argMin(close_px, d) AS first_close,
           argMax(close_px, d) AS last_close,
           max(close_px) AS high_close,
           min(close_px) AS low_close,
           count() AS sessions
    FROM daily
    GROUP BY year
)
SELECT year,
       sessions,
       round(100 * (toFloat64(last_close) / toFloat64(first_close) - 1), 1) AS price_return_pct,
       round(100 * (toFloat64(high_close) / toFloat64(low_close) - 1), 1) AS high_low_range_pct
FROM yr
ORDER BY year
Run this yourself

Система, протестированная только на 2021, году, который закрылся на 28.7% выше, наследует растущий тренд. Та же система, протестированная только на 2022, который закрылся на -20%, наследует падающий. Внутригодовой разрыв между самым высоким и самым низким закрытием достиг 68% в 2020 и оставался выше 25.3% даже в более спокойные годы.

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

  • Заглядывание вперед через обучающие данные. Модель, обученная на текстах до 2025 года, уже «прочитала», чем закончилась сделка 2023 года. Бэктест за 2023 год задает вопрос, ответ на который модель знает, и никакое перемешивание ценового ряда не удаляет это знание.
  • Выживаемость в списке тикеров. Вселенная, собранная из сегодняшних листингов, исключает бумаги, которые были делистингованы по пути.
  • Допущения об исполнении. Бэктест, который исполняет каждый ордер по средней цене, стирает всю приведенную выше таблицу затрат.
  • Отбор по вариантам промптов. Двадцать формулировок промпта опробованы, и сообщается о лучшей — это то же самое переобучение, которое преследовало перебор параметров задолго до появления языковых моделей.

Где языковые модели-агенты plausibly полезны

Честная версия предложения уже, чем версия из README, и все еще полезна.

Чтение объемов — самый очевидный выигрыш. Агент, который за ночь обрабатывает всю отчетность и заголовки по наблюдаемому списку и возвращает структурированную сводку, экономит часы человеческого внимания, и результат можно проверить по исходным данным.

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

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

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

Дисциплина, которую описывают практики

Команды, публично использующие такие системы, как правило, описывают одну и ту же последовательность. Форвард-тест на симулированных исполнениях в течение месяцев, а не дней, поскольку бумажный отчет накапливается только со скоростью реального времени. Держите вневыборочный участок, который промпты никогда не видели. Логируйте каждый промпт, каждый ответ и каждый ордер, поскольку комитет, который нельзя воспроизвести, нельзя и отладить. Определяйте размер позиций с помощью фиксированных правил, находящихся вне модели. Учитывайте все затраты из приведенных выше таблиц, прежде чем называть какой-либо отрезок прибыльным.

Часто задаваемые вопросы

Действительно ли мультиагентные ИИ-торговые системы приносят деньги?

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

Лучше ли комитет LLM-агентов, чем одна модель?

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

Может ли ИИ-агент торговать быстрее маркет-мейкера?

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

Какова самая большая ловушка бэктеста, специфичная для LLM-торговых агентов?

Заглядывание вперед через обучающие данные. Обычные бэктесты защищают от утечки будущих цен в решение, но веса модели уже кодируют опубликованные комментарии о тестовом окне. Скользящие окна и разбиения на обучающую/вневыборочную выборки не удаляют знание, «запеченное» в весах, и единственным чистым тестом является период после даты отсечки обучения.

Как долго должен длиться период бумажной торговли?

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


Каждая таблица на этой странице — это сохраненный версионированный запрос к реальным рыночным данным США. Откройте любую таблицу, чтобы прочитать SQL-код за ней, или выполните свой собственный запрос к тем же таблицам на терминале Strasmore.

#ai agents#llm#algorithmic trading#automation#backtesting