Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

multi-agent AI handelssysteem architectuur kosten

Multi-agent AI-handelssystemen gebruiken LLM-commissies voor één trade. Dit artikel toont de architectuur, de marktkosten die een signaal moet dekken en de backtest-valkuilen.

Een multi-agent AI-handelssysteem verdeelt één handelsbeslissing over meerdere instanties van een groot taalmodel, geeft elke instantie een rol en voegt hun outputs samen tot één order. De gebruikelijke bezetting is een nieuwslezer, een fundamentalanalist, een grafiekanalist, een risicocontroleur en een manager-agent die beslist. Per juli 2026 staan er verschillende open-source frameworks van deze vorm in het onderwerp algoritmische handel op GitHub, elk met een paar honderd sterren. Deze pagina beschrijft de architectuur, scheidt de gepubliceerde bewijzen van de README-claims en plaatst marktdata naast de kosten die elke versie ervan moet dekken.

Wat een multi-agent AI-handelssysteem werkelijk is

De architectuur is een commissie met een voorzitter. Elke agent is een promptsjabloon, een datastroom en een outputschema. De nieuwsagent ontvangt koppen en retourneert een label. De fundamentalagent ontvangt uittreksels uit jaarverslagen en retourneert een score. De voorzitter ontvangt die labels en scores en retourneert een order.

Drie eigenschappen vloeien voort uit dat ontwerp, en het is de moeite waard om elke eigenschap te benoemen voordat er een prestatieclaim wordt gedaan.

Elke agent deelt doorgaans één basismodel. Vijf prompts tegen dezelfde gewichten produceren gecorreleerde meningen, dus een stemming van vijf agenten is geen vijf onafhankelijke schattingen. De commissie-opzet suggereert een diversificatie die de implementatie niet biedt.

Het systeem is een tekstpijplijn rond een numerieke beslissing. Het model leest woorden en zendt een token uit. Positiegrootte, ordertype, stop-plaatsing en exit-logica zijn gewone code die eronder zit, en het grootste deel van wat de uitkomst bepaalt, zit in die code in plaats van in de prompts.

Een commissieronde duurt seconden. Dat is werkbaar voor een wekelijkse herweging en irrelevant op intraday-snelheid, waar market makers in microseconden noteren en hernoteren.

Wat het onderzoek ondersteunt en wat niet

Gepubliceerd werk over taalmodellen in de financiële wereld valt uiteen in drie claims van zeer verschillende sterkte.

Extractie en classificatie is de sterke claim. Modellen labelen sentiment, halen cijfers uit jaarverslagen en comprimeren lange documenten met een nauwkeurigheid die een paar jaar geleden een speciaal model vereiste. Het is meetbaar op niet eerder geziene tekst en het houdt stand.

Beschrijving van de markttoestand is de gemengde claim. Modellen schrijven vloeiende verslagen van een regime, en die verslagen zijn meestal consistent met de data die het model kreeg voorgelegd. Of de beschrijving informatie bevat die de prijs niet al bevat, is een aparte vraag, en de papers die het zorgvuldig testen, rapporteren kleine effecten met brede foutmarges.

Winstgevendheid is de zwakke claim. De meeste repository-README's rapporteren een backtest in plaats van een gefinancierde track record, en de afstand tussen een in-sample equity curve en een live-account is de oudste afstand in kwantitatieve handel. Het plaatsen van een taalmodel in de lus verkort die niet.

De kostenondergrens die een signaal moet overbruggen

Elke transactie overschrijdt een spread, en die overschrijding is de ondergrens die een strategie moet overbruggen voordat er iets anders telt. Mediane genoteerde spread tijdens reguliere handelsuren, 22 tot 26 juni 2026, voor zes in de VS genoteerde namen:

QueryKostenbodem: mediane bied-laatspread in basispunten van het middelpunt, reguliere uren, 22-26 juni 2026
De exacte SQL achter elk getal
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

Een basispunt is een honderdste procentpunt. De strakste naam in de groep, SPY, noteerde een mediane spread van 0.27 basispunten gedurende die week. De breedste, RIOT, noteerde 7.09. Een round trip betaalt de spread twee keer, dus een entry en exit in de eerste naam begint 0.55 basispunten achter en hetzelfde paar in de laatste naam begint 14.19 achter. Een agent die zijn portefeuille twee keer per week omzet, betaalt die tol ongeveer honderd keer per jaar, en de tol wordt geheven ongeacht of de call juist of onjuist was. Wat het kost om een aandeel te verhandelen specificeert de rest van de rekening.

De ruis die een richtingscall moet verslaan

Richtingscalls worden beoordeeld tegen een verdeling die grotendeels uit kleine getallen bestaat. Elke SPY-sessie in kalenderjaar 2025, gesorteerd op de omvang van de slot-koers-tot-slot-koers beweging:

QueryOmvang van een typische sessie: SPY slot-koersbewegingen per grootteklasse, kalender 2025
De exacte SQL achter elk getal
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

De helft van het jaar zat binnen een half procent. De under 0.25%-band bevatte 24.9% van de sessies en de 0.25 to 0.5%-band nog eens 24.1%. Aan de andere kant bewogen 13 sessies 2% and up, 5.2% van het jaar.

Houd dat naast de spread-tabel. Eén basispunt is 0,01%. Een typische sessiebeweging van 0,3% is dertig keer een krappe spread en ongeveer vier keer de brede. De rekenkunde laat ruimte voor een geduldige, correcte call en zeer weinig voor een snelle, marginale.

Waar het verhandelbare universum werkelijk ligt

Agent-frameworks adverteren dekking, vaak honderden tickers die elke ochtend worden gescand. Het dollarvolume laat zien hoeveel van die lijst omvang kan absorberen. Elke in de VS genoteerde naam die handelde tijdens reguliere uren op 30 juni 2026, gegroepeerd naar zijn rang in het dollarvolume van die sessie:

QueryWaar het geld handelt: Amerikaans dollarvolume per liquiditeitsrangklasse, reguliere uren, 30 juni 2026
De exacte SQL achter elk getal
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

Tien namen droegen 22.5% van het dollarvolume van de sessie, ongeveer $205.04 miljard. De volgende 40 droegen 20.5%. Aan de andere kant deelden 10966 namen die verder dan 1000 gerangschikt waren 12.9% onderling, ruwweg $117.83 miljard verdeeld over de hele staart.

Breedte is goedkoop om te adverteren en duur om te verhandelen. Een commissie die drieduizend namen rangschikt, besteedt het grootste deel van zijn rangschikkingsinspanning in die staart, waar de bovenstaande spread-tabel een echte kostenpost is in plaats van een afrondingsfout.

Waarom deze backtests het systeem mooier voorstellen

De grootste enkele bron van een vleiende backtest is de keuze van de periode. SPY per kalenderjaar, 2016 tot en met 2025, met het verschil tussen de hoogste en laagste slotkoers van het jaar:

QueryHet venster bepaalt het antwoord: SPY kalenderjaar prijsrendement en intra-jaar hoog-laagbereik, 2016-2025
De exacte SQL achter elk getal
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

Een systeem dat alleen is getest op 2021, een jaar dat 28.7% hoger sloot, erft een stijgende koers. Hetzelfde systeem dat alleen is getest op 2022, dat -20% sloot, erft een dalende. Het verschil binnen het jaar tussen de hoogste en laagste slotkoers bereikte 68% in 2020 en bleef boven 25.3%, zelfs in de rustigere jaren.

Vier valkuilen liggen bovenop het periodeprobleem, en één daarvan is exclusief voor taalmodellen.

  • Vooruitkijken via trainingsdata. Een model getraind op tekst tot en met 2025 heeft al gelezen hoe een transactie uit 2023 afliep. Een backtest over 2023 stelt een vraag waar het model het antwoord op weet, en geen enkele herschikking van de prijsreeks verwijdert die kennis.
  • Survivorship in de tickerlijst. Een universum samengesteld uit de huidige noteringen mist de namen die onderweg van de beurs zijn gehaald.
  • Vulveronderstellingen. Een backtest die elke order op het middenpunt vult, wist de hele kostenpost hierboven.
  • Selectie over promptvarianten. Twintig promptformuleringen geprobeerd en de beste gerapporteerd is dezelfde overfitting die parameter-sweeps teisterde lang voordat taalmodellen bestonden.

Waar taalmodellen als agent plausibel helpen

De eerlijke versie van de pitch is smaller dan de README-versie en nog steeds nuttig.

Het lezen van volume is de duidelijkste winst. Een agent die elke nacht alle jaarverslagen en koppen op een watchlist doorwerkt en een gestructureerde samenvatting retourneert, bespaart uren menselijke aandacht, en de output is controleerbaar tegen de bron.

Het beschrijven van een regime in gewone taal is de tweede. Een dagelijkse paragraaf over spreiding, breedte en volatiliteit, gegenereerd uit dezelfde cijfers die een mens zou lezen, is een nuttig briefingdocument, zelfs als het geen voorspelling bevat.

Proceshygiëne is de derde. Een agent die een order weigert die een gestelde positielimiet overschrijdt, of die een strategie markeert die op het punt staat een ex-datum te verhandelen, handhaaft regels die een afgeleide mens overslaat.

Geen van deze drie is een voorsprong op de markt. Alle drie zijn onderzoeks- en operationeel werk, en daar liggen de meetbare winsten vandaag. Een gedocumenteerd effect zoals de low volatility anomaly vereiste grote steekproeven en herhaalde out-of-sample replicatie voordat iemand het als echt behandelde, en een nieuw agent-framework moet aan dezelfde lat voldoen of het haalt hem niet. Het missen van de beste dagen laat zien wat frequente omschakeling een langetermijnbelegger kost.

De discipline die beoefenaars beschrijven

Teams die deze systemen in het openbaar draaien, beschrijven doorgaans dezelfde volgorde. Forward testen op gesimuleerde vullingen gedurende maanden in plaats van dagen, aangezien een papieren record alleen accumuleert met de snelheid van de echte tijd. Houd een out-of-sample periode aan die de prompts nooit hebben gezien. Log elke prompt, elk antwoord en elke order, aangezien een commissie die niet kan worden afgespeeld, niet kan worden gedebugd. Bepaal posities met vaste regels die buiten het model vallen. Tel elke kostenpost uit de bovenstaande tabellen voordat u een periode winstgevend noemt.

FAQ

Verdienen multi-agent AI-handelssystemen daadwerkelijk geld?

Het openbare bewijs is dun. De meeste open-sourceprojecten publiceren een backtest in plaats van een gecontroleerd live record, en backtests van taalmodellenstrategieën hebben een specifiek gebrek: het model is getraind op tekst die de testperiode beschrijft. Een niet-gecontroleerde equity curve demonstreert de software, niet een voorsprong.

Is een commissie van LLM-agenten beter dan een enkel model?

Een commissie vermindert enkele opmaak- en parseerfouten en voegt structuur toe aan de output. Het voegt geen onafhankelijke informatie toe wanneer elke agent hetzelfde basismodel raadpleegt over dezelfde onderliggende data. Vijf gecorreleerde meningen stemmen als ruwweg één mening, met extra latentie en extra tokkenkosten eraan verbonden.

Kan een AI-agent sneller handelen dan een market maker?

Nee. Een taalmodelronde duurt seconden, terwijl professionele noteringssystemen in microseconden werken over co-located hardware. Elke strategie waarvan de winst afhangt van snelheid, valt buiten wat deze systemen kunnen doen, wat horizonten van dagen en weken als het plausibele terrein overlaat.

Wat is de grootste backtestvalkuil die specifiek is voor LLM-handelsagenten?

Vooruitkijken via trainingsdata. Conventionele backtests beschermen tegen het lekken van toekomstige prijzen in een beslissing, maar de gewichten van een model coderen al gepubliceerd commentaar over het testvenster. Walk-forward vensters en out-of-sample splitsingen verwijderen geen kennis die in de gewichten is gebakken, en de enige schone test is een periode na de trainingsafsluiting.

Hoe lang moet een paper-trading periode duren?

Het nuttige kader is de steekproefomvang in plaats van de kalenderlengte. Een strategie die wekelijks handelt, produceert ongeveer vijftig waarnemingen per jaar, een kleine steekproef voor elke claim over een voorsprong. Beoefenaars willen over het algemeen genoeg transacties om een drawdown te hebben gezien, niet alleen een goede periode.


Elke tabel op deze pagina is een opgeslagen, versiebeheerde query over echte Amerikaanse marktdata. Open een tabel om de SQL erachter te lezen, of voer uw eigen query uit tegen dezelfde tabellen op de Strasmore terminal.

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