Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

багатоагентна AI-торговельна система архітектура

Багатоагентна AI-торговельна система використовує комітет LLM для одного ордера. Описано архітектуру, ринкові витрати на сигнал та пастки бектесту.

Багатоагентна AI-торговельна система розділяє одне торговельне рішення між кількома екземплярами великих мовних моделей, надає кожному екземпляру роль та об'єднує їхні результати в єдиний ордер. Зазвичай до складу входять читач новин, фундаментальний аналітик, аналітик графіків, перевіряльник ризиків та агент-менеджер, який виконує роль арбітра. Станом на липень 2026 року кілька відкритих фреймворків такої форми знаходяться в темі алгоритмічної торгівлі на GitHub, кожен з кількома сотнями зірок. Ця сторінка описує архітектуру, відокремлює опубліковані докази від заяв у README та наводить ринкові дані про витрати, які має подолати будь-яка версія такої системи.

Що таке багатоагентна AI-торговельна система насправді

Архітектура — це комітет з головою. Кожен агент — це шаблон запиту (prompt), канал даних та схема виведення. Агент новин отримує заголовки та повертає мітку. Фундаментальний агент отримує витяги зі звітності та повертає оцінку. Агент-голова отримує ці мітки та оцінки та повертає ордер.

З такої конструкції випливають три властивості, і кожну варто назвати до того, як розглядати будь-які заяви про ефективність.

Кожен агент зазвичай використовує одну базову модель. П'ять запитів до одних і тих самих ваг дають корельовані думки, тому голосування п'яти агентів не є п'ятьма незалежними оцінками. Формулювання "комітет" натякає на диверсифікацію, яку реалізація не забезпечує.

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

Один цикл роботи комітету займає секунди. Це прийнятно для щотижневого ребалансування та неактуально на внутрішньоденній швидкості, де маркет-мейкери виставляють котирування та змінюють їх за мікросекунди.

Що підтверджується дослідженнями, а що — ні

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

Виділення та класифікація — це сильне твердження. Моделі позначають тональність, витягують цифри зі звітності та стискають довгі документи з точністю, яка кілька років тому вимагала спеціалізованої моделі. Це вимірюється на тексті, що не використовувався під час навчання, і підтверджується на практиці.

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

Прибутковість — це слабке твердження. У більшості 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 рік ставить питання, на яке модель знає відповідь, і жодне перетасування цінового ряду не видаляє цього знання.
  • Виживаність у списку тікерів. Всесвіт, зібраний із сьогоднішніх лістингів, пропускає акції, які були делістинговані протягом періоду.
  • Припущення про виконання. Бектест, який виконує кожен ордер за середньою ціною, повністю стирає всю панель витрат вище.
  • Відбір за варіантами запитів. Двадцять варіантів формулювань запиту, випробуваних, і найкращий звіт — це те саме перенавчання, яке переслідувало перебір параметрів задовго до появи мовних моделей.

Де агенти на мовних моделях потенційно корисні

Чесна версія пропозиції вужча за версію з README, але все ще корисна.

Читання обсягу — це найочевидніша перевага. Агент, який опрацьовує всю звітність та заголовки за спостережним списком протягом ночі та повертає структурований підсумок, економить години людської уваги, і результат можна перевірити за джерелом.

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

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

Жодна з цих трьох переваг не є ринковою перевагою (edge). Всі вони стосуються дослідницької та операційної роботи, де сьогодні знаходяться вимірювані вигоди. Документований ефект, такий як аномалія низької волатильності, потребував великих вибірок та багаторазового підтвердження на позавибіркових даних, перш ніж хтось почав вважати його реальним, і новий агентний фреймворк має відповідати тій самій планці, або він її не подолає. Пропуск найкращих днів показує, чого коштує часта зміна стратегій довгостроковому власнику.

Дисципліна, яку описують практики

Команди, які публічно запускають такі системи, зазвичай описують однакову послідовність кроків. Форвардне тестування на симульованих виконаннях протягом місяців, а не днів, оскільки паперовий запис накопичується лише зі швидкістю реального часу. Збереження позавибіркового періоду, якого запити ніколи не бачили. Логування кожного запиту, кожної відповіді та кожного ордера, оскільки комітет, який не можна відтворити, неможливо налагодити. Визначення розміру позицій за допомогою фіксованих правил, які знаходяться поза моделлю. Підрахунок кожної витрати з панелей вище, перш ніж називати будь-який період прибутковим.

FAQ

Чи заробляють багатоагентні AI-торговельні системи насправді?

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

Чи кращий комітет LLM-агентів за одну модель?

Комітет зменшує деякі помилки форматування та парсингу та додає структури виведенню. Він не додає незалежної інформації, коли кожен агент запитує ту саму базову модель на тих самих даних. П'ять корельованих думок голосують приблизно як одна думка, з додатковою затримкою та додатковими витратами на токени.

Чи може AI-агент торгувати швидше за маркет-мейкера?

Ні. Цикл роботи мовної моделі триває секунди, тоді як професійні системи котирування працюють за мікросекунди на колокованому обладнанні. Будь-яка стратегія, чий прибуток залежить від швидкості, знаходиться за межами можливостей цих систем, що залишає горизонти в дні та тижні як правдоподібну сферу застосування.

Яка найбільша пастка бектесту, специфічна для LLM-торговельних агентів?

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

Як довго має тривати період паперової торгівлі?

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


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

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