سیستم معاملاتی هوش مصنوعی چندعامله
سیستم معاملاتی هوش مصنوعی چندعامله از کمیته LLM برای تصمیمگیری استفاده میکند. معماری، هزینههای بازار و تلههای بکتست در این گزارش تشریح شده است.
یک سیستم معاملاتی هوش مصنوعی چندعامله، یک تصمیم معاملاتی را بین چندین نمونه از مدلهای زبانی بزرگ تقسیم میکند، به هر نمونه یک نقش میدهد و خروجیهای آنها را در یک سفارش واحد ادغام میکند. فهرست معمول این عوامل شامل یک خبرخوان، یک تحلیلگر بنیادی، یک تحلیلگر نمودار، یک کنترلکننده ریسک و یک عامل مدیر است که داوری میکند. از ژوئیه 2026، چندین چارچوب متنباز از این شکل در مبحث معاملات الگوریتمی در گیتهاب وجود دارد که هر کدام چند صد ستاره دارند. این صفحه به تشریح معماری میپردازد، شواهد منتشر شده را از ادعاهای فایل README جدا میکند و دادههای بازار را در مورد هزینههایی که هر نسخهای از آن باید پوشش دهد، ارائه میدهد.
معماری واقعی یک سیستم معاملاتی هوش مصنوعی چندعامله
این معماری یک کمیته با یک رئیس است. هر عامل یک الگوی فرمان (prompt template)، یک فید داده و یک طرح خروجی است. عامل خبر، تیترها را دریافت کرده و یک برچسب برمیگرداند. عامل بنیادی، عصارههای گزارشها را دریافت کرده و یک امتیاز برمیگرداند. عامل رئیس، آن برچسبها و امتیازها را دریافت کرده و یک سفارش برمیگرداند.
سه ویژگی از این طراحی ناشی میشود که پیش از هر ادعای عملکردی، ارزش نام بردن دارند.
هر عامل معمولاً یک مدل پایه مشترک دارد. پنج فرمان در برابر وزنهای یکسان، نظرات همبستهای تولید میکنند، بنابراین رأی پنج عامله، پنج تخمین مستقل نیست. چارچوب کمیته، تنوعبخشی را القا میکند که پیادهسازی آن را فراهم نمیکند.
این سیستم یک خط لوله متنی است که حول یک تصمیم عددی پیچیده شده است. مدل کلمات را میخواند و یک توکن (token) منتشر میکند. تعیین اندازه موقعیت، نوع سفارش، حد ضرر و منطق خروج، کدهای معمولی در زیرساخت هستند و بیشتر چیزی که نتیجه را تعیین میکند در آن کدها نهفته است، نه در فرمانها.
یک دور رفت و برگشت کمیته چند ثانیه طول میکشد. این برای یک بازتعادل هفتگی قابل قبول است و در سرعت درونروز، جایی که سازندگان بازار در میکروثانیه قیمتگذاری و قیمتگذاری مجدد میکنند، بیربط است.
آنچه تحقیقات از آن پشتیبانی میکنند و آنچه پشتیبانی نمیکنند
کارهای منتشر شده در مورد مدلهای زبانی در امور مالی به سه ادعا با قدرتهای بسیار متفاوت تقسیم میشود.
استخراج و طبقهبندی، ادعای قوی است. مدلها احساسات را برچسبگذاری میکنند، ارقام را از گزارشها استخراج میکنند و اسناد طولانی را با دقتی فشرده میکنند که چند سال پیش به یک مدل سفارشی نیاز داشت. این امر بر روی متنی که کنار گذاشته شده قابل اندازهگیری است و پایدار است.
توصیف وضعیت بازار، ادعای مختلط است. مدلها گزارشهای روانی از یک رژیم مینویسند و این گزارشها معمولاً با دادههایی که به مدل نشان داده شده است، سازگار هستند. این که آیا این توصیف حاوی اطلاعاتی است که قیمت از قبل ندارد، سوال جداگانهای است و مقالاتی که آن را با دقت آزمایش میکنند، اثرات کوچکی با نوار خطای گسترده گزارش میدهند.
سودآوری، ادعای ضعیف است. اکثر فایلهای README مخازن، یک بکتست (backtest) را گزارش میدهند تا یک سابقه معاملاتی واقعی با سرمایه، و فاصله بین یک منحنی سرمایه درون نمونه و یک حساب واقعی، قدیمیترین فاصله در معاملات کمی است. قرار دادن یک مدل زبانی در حلقه، آن را کوتاه نمیکند.
کف هزینهای که یک سیگنال باید پوشش دهد
هر معامله از یک اسپرد (spread) عبور میکند و این عبور، کفی است که یک استراتژی قبل از هر چیز باید پوشش دهد. میانه اسپرد اعلامی در ساعات عادی، از 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یک واحد پایه (basis point) یک صدم درصد است. تنگترین نام در این پنل، SPY، میانه اسپرد 0.27 واحد پایه را در آن هفته اعلام کرد. گستردهترین، RIOT، 7.09 واحد پایه را اعلام کرد. یک دور رفت و برگشت دو بار اسپرد را پرداخت میکند، بنابراین یک ورود و خروج در نام اول با 0.55 واحد پایه عقبافتادگی شروع میشود و همین جفت در آخرین نام با 14.19 واحد پایه عقبافتادگی شروع میشود. عاملی که پرتفوی خود را دو بار در هفته میچرخاند، این عوارض را حدود صد بار در سال میپردازد و این عوارض صرف نظر از درست یا غلط بودن تصمیم دریافت میشود. هزینه معامله یک سهم بقیه صورت حساب را جزئیات میدهد.
نویزی که یک تصمیم جهتدار باید شکست دهد
تصمیمات جهتدار در برابر توزیعی ارزیابی میشوند که عمدتاً از اعداد کوچک تشکیل شده است. هر جلسه معاملاتی 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))نیمی از سال در محدوده نیم درصد قرار داشت. باند under 0.25% شامل 24.9% از جلسات و باند 0.25 to 0.5% شامل 24.1% دیگر بود. در انتهای دیگر، 13 جلسه 2% and up حرکت کردند که 5.2% از سال است.
این را در کنار پنل اسپرد قرار دهید. یک واحد پایه 0.01٪ است. یک حرکت معمولی جلسه 0.3٪، سی برابر یک اسپرد تنگ و تقریباً چهار برابر اسپرد گسترده است. حساب و کتاب برای یک تصمیم درست و صبورانه جا میگذارد و برای یک تصمیم سریع و حاشیهای بسیار کم.
جایی که جهان قابل معامله واقعاً قرار دارد
چارچوبهای عاملی پوشش را تبلیغ میکنند، اغلب صدها تیکر که هر روز صبح اسکن میشوند. حجم دلاری نشان میدهد که چه مقدار از آن فهرست میتواند اندازه را جذب کند. هر نام فهرست شده در ایالات متحده که در ساعات عادی در 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)ده نام 22.5% از حجم دلاری جلسه را حمل کردند، حدود 205.04 میلیارد دلار. 40 نام بعدی 20.5% را حمل کردند. در انتهای دیگر، 10966 نام با رتبه بالاتر از 1000، 12.9% را بین خود تقسیم کردند، تقریباً 117.83 میلیارد دلار که در سراسر دم توزیع شده است.
گستردگی تبلیغ آن ارزان است و معامله آن گران. کمیتهای که سه هزار نام را رتبهبندی میکند، بیشتر تلاش رتبهبندی خود را در آن دم صرف میکند، جایی که پنل اسپرد بالا یک هزینه واقعی است نه یک خطای گرد کردن.
چرا این بکتستها سیستم را بهتر از واقعیت نشان میدهند
بزرگترین منبع واحد یک بکتست چاپلوس، انتخاب بازه زمانی است. 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سیستمی که فقط روی 2021 آزمایش شده است، سالی که 28.7% بالاتر بسته شد، یک روند صعودی را به ارث میبرد. همان سیستم که فقط روی 2022 آزمایش شده است، که -20% بسته شد، یک روند نزولی را به ارث میبرد. شکاف درونسال بین بالاترین و پایینترین بسته شدن در 2020 به 68% رسید و حتی در سالهای آرامتر بالای 25.3% باقی ماند.
چهار تله در بالای مشکل بازه زمانی قرار دارند و یکی از آنها منحصراً به مدلهای زبانی تعلق دارد.
- نگاه به آینده از طریق دادههای آموزشی. مدلی که روی متنی تا سال 2025 آموزش دیده است، قبلاً خوانده است که یک معامله در سال 2023 چگونه به پایان رسید. یک بکتست بر روی سال 2023 سوالی میپرسد که مدل پاسخ آن را میداند و هیچ جابجایی سری قیمت این دانش را حذف نمیکند.
- بقای فهرست تیکرها. جهانی که از فهرستهای امروزی جمعآوری شده است، نامهایی را که در طول مسیر از فهرست خارج شدهاند، حذف میکند.
- مفروضات پر شدن سفارش. بکتستی که هر سفارش را در نقطه میانی پر میکند، کل پنل هزینه بالا را پاک میکند.
- انتخاب از میان انواع فرمان. بیست عبارت فرمان امتحان شده و بهترین آنها گزارش شده است، همان بیشبرازشی (overfitting) است که مدتها قبل از وجود مدلهای زبانی، پارامترها را آزار میداد.
جایی که عوامل مدل زبانی به طور قابل قبولی کمک میکنند
نسخه صادقانه این پیشنهاد محدودتر از نسخه README است و همچنان مفید است.
خواندن حجم، واضحترین برد است. عاملی که هر شب تمام گزارشها و تیترهای یک فهرست نظارتی را پردازش کرده و یک خلاصه ساختاریافته برمیگرداند، ساعتها توجه انسانی را ذخیره میکند و خروجی در برابر منبع قابل بررسی است.
توصیف یک رژیم به زبان ساده، دومین مورد است. یک پاراگراف روزانه در مورد پراکندگی، گستردگی و نوسان، که از همان اعدادی که یک انسان میخواند تولید شده است، حتی زمانی که هیچ پیشبینی ندارد، یک سند توجیهی مفید است.
بهداشت فرآیند، سومین مورد است. عاملی که از اجرای سفارشی که از حد موقعیت تعیین شده تجاوز میکند خودداری میکند، یا استراتژی را که در شرف معامله در تاریخ اعلام سود است علامتگذاری میکند، قوانینی را اعمال میکند که یک انسان حواسپرتی از آنها چشمپوشی میکند.
هیچکدام از این سه مورد یک برتری در بازار نیستند. هر سه کار تحقیق و عملیات هستند، جایی که دستاوردهای قابل اندازهگیری امروز قرار دارند. یک اثر مستند مانند ناهنجاری نوسان کم قبل از اینکه کسی آن را واقعی تلقی کند، به نمونههای بزرگ و تکرار مکرر خارج از نمونه نیاز داشت و یک چارچوب عاملی جدید نیز باید همان استاندارد را برآورده کند یا از آن عبور نمیکند. از دست دادن بهترین روزها نشان میدهد که تعویض مکرر چه هزینهای برای یک سرمایهگذار بلندمدت دارد.
انضباطی که فعالان بازار توصیف میکنند
تیمهایی که این سیستمها را به صورت عمومی اجرا میکنند، تمایل دارند توالی مشابهی را توصیف کنند. آزمایش پیشرو (forward test) با پر شدن شبیهسازی شده برای ماهها نه روزها، زیرا یک رکورد کاغذی فقط با سرعت زمان واقعی انباشته میشود. یک بخش خارج از نمونه را نگه دارید که فرمانها هرگز آن را ندیدهاند. هر فرمان، هر پاسخ و هر سفارش را ثبت کنید، زیرا کمیتهای که نمیتوان دوباره اجرا کرد، قابل اشکالزدایی نیست. موقعیتها را با قوانین ثابتی که خارج از مدل هستند، اندازهگذاری کنید. قبل از اینکه هر رشدی را سودآور بنامید، هر هزینه را از پنلهای بالا حساب کنید.
پرسشهای متداول
آیا سیستمهای معاملاتی هوش مصنوعی چندعامله واقعاً پول در میآورند؟
شواهد عمومی اندک است. اکثر پروژههای متنباز یک بکتست را منتشر میکنند تا یک سابقه واقعی حسابرسی شده، و بکتستهای استراتژیهای مدل زبانی یک نقص خاص دارند: مدل روی متنی آموزش دیده است که دوره آزمایش را توصیف میکند. یک منحنی سرمایه حسابرسی نشده، نرمافزار را نشان میدهد، نه یک برتری.
آیا کمیتهای از عوامل LLM بهتر از یک مدل واحد است؟
یک کمیته برخی از خطاهای قالببندی و تجزیه را کاهش میدهد و به خروجی ساختار میبخشد. زمانی که هر عامل همان مدل پایه را بر روی همان دادههای زیربنایی پرس و جو میکند، اطلاعات مستقل اضافه نمیکند. پنج نظر همبسته تقریباً به عنوان یک نظر رأی میدهند، با تأخیر اضافی و هزینه توکن اضافی.
آیا یک عامل هوش مصنوعی میتواند سریعتر از یک سازنده بازار معامله کند؟
خیر. یک دور رفت و برگشت مدل زبانی در ثانیه انجام میشود در حالی که سیستمهای قیمتگذاری حرفهای در میکروثانیه بر روی سختافزار هممکان (co-located) کار میکنند. هر استراتژی که سود آن به سرعت بستگی دارد، خارج از توانایی این سیستمها است، که افقهای روزها و هفتهها را به عنوان زمین قابل قبول باقی میگذارد.
بزرگترین تله بکتست خاص عوامل معاملاتی LLM چیست؟
نگاه به آینده دادههای آموزشی. بکتستهای معمولی از نشت قیمتهای آینده به یک تصمیم جلوگیری میکنند، اما وزنهای یک مدل از قبل تفسیرهای منتشر شده در مورد بازه آزمایش را رمزگذاری کردهاند. پنجرههای پیشرونده (walk-forward windows) و تقسیمهای خارج از نمونه، دانش پخته شده در وزنها را حذف نمیکنند و تنها آزمایش تمیز، دورهای پس از برش آموزشی است.
دوره آزمایش کاغذی چقدر باید طول بکشد؟
چارچوب بندی مفید، اندازه نمونه است تا طول تقویم. استراتژی که هفتگی معامله میکند، حدود پنجاه مشاهده در سال تولید میکند، نمونه کوچکی برای هر ادعایی در مورد برتری. فعالان بازار عموماً به معاملات کافی نیاز دارند تا یک افت (drawdown) را دیده باشند، نه فقط یک دوره خوب.
هر پنل در این صفحه یک پرس و جوی ذخیره شده و دارای نسخه بر روی دادههای واقعی بازار ایالات متحده است. هر پنلی را باز کنید تا SQL پشت آن را بخوانید، یا پرس و جوی خود را در برابر همان جداول در ترمینال استراسمور اجرا کنید.