Strasmore Research
Deep Dives · Matt ConnorBy Matt Connor ·

hệ thống giao dịch AI đa tác tử là gì

Hệ thống giao dịch AI đa tác tử dùng ủy ban LLM để ra quyết định. Bài viết giải thích kiến trúc, chi phí thị trường khi tín hiệu được khớp, và các bẫy backtest cần tránh.

Một hệ thống giao dịch AI đa tác tử chia một quyết định giao dịch cho nhiều phiên bản mô hình ngôn ngữ lớn, giao cho mỗi phiên bản một vai trò, và tổng hợp đầu ra của chúng thành một lệnh duy nhất. Đội hình thông thường bao gồm một tác tử đọc tin tức, một tác tử phân tích cơ bản, một tác tử phân tích biểu đồ, một tác tử kiểm tra rủi ro, và một tác tử quản lý đóng vai trò trọng tài. Tính đến tháng 7 năm 2026, một số framework mã nguồn mở dạng này nằm trong chủ đề giao dịch thuật toán trên GitHub, mỗi framework có vài trăm sao. Trang này giải thích kiến trúc, phân tách bằng chứng đã công bố khỏi các tuyên bố trong README, và đưa ra dữ liệu thị trường về các chi phí mà bất kỳ phiên bản nào của hệ thống này cũng phải vượt qua.

Hệ thống giao dịch AI đa tác tử thực sự là gì

Kiến trúc này giống như một ủy ban có chủ tịch. Mỗi tác tử là một mẫu prompt, một nguồn dữ liệu và một lược đồ đầu ra. Tác tử tin tức nhận các tiêu đề và trả về một nhãn. Tác tử cơ bản nhận các trích đoạn hồ sơ và trả về một điểm số. Tác tử chủ tịch nhận các nhãn và điểm số đó và trả về một lệnh.

Ba đặc điểm sau đây xuất phát từ thiết kế đó, và mỗi đặc điểm đều đáng được nêu tên trước khi có bất kỳ tuyên bố nào về hiệu suất.

Mỗi tác tử thường dùng chung một mô hình nền. Năm prompt chạy trên cùng một bộ trọng số tạo ra các ý kiến có tương quan, vì vậy một cuộc bỏ phiếu năm tác tử không phải là năm ước tính độc lập. Cách đóng khung theo kiểu ủy ban gợi ý về sự đa dạng hóa mà việc triển khai thực tế không mang lại.

Hệ thống này là một pipeline văn bản bao quanh một quyết định số. Mô hình đọc từ và phát ra một token. Xác định kích thước vị thế, loại lệnh, đặt lệnh dừng lỗ và logic thoát lệnh là mã thông thường nằm bên dưới, và phần lớn yếu tố quyết định kết quả nằm trong mã đó chứ không phải trong các prompt.

Một vòng xử lý của ủy ban mất vài giây. Điều này khả thi cho việc tái cân bằng hàng tuần và không phù hợp với tốc độ trong ngày, nơi các nhà tạo lập thị trường báo giá và báo giá lại trong micro giây.

Nghiên cứu ủng hộ điều gì và không ủng hộ điều gì

Các công trình đã công bố về mô hình ngôn ngữ trong tài chính được chia thành ba tuyên bố với độ mạnh rất khác nhau.

Trích xuất và phân loại là tuyên bố mạnh. Các mô hình gắn nhãn tâm lý, trích xuất số liệu từ hồ sơ và nén các tài liệu dài với độ chính xác mà cách đây vài năm cần một mô hình chuyên dụng. Điều này có thể đo lường được trên văn bản kiểm thử riêng và nó đứng vững.

Mô tả trạng thái thị trường là tuyên bố hỗn hợp. Các mô hình viết các bài tường thuật trôi chảy về một chế độ thị trường, và những bài tường thuật đó thường nhất quán với dữ liệu mà mô hình được cung cấp. Liệu mô tả đó có mang thông tin mà giá chưa mang hay không là một câu hỏi riêng, và các bài báo kiểm tra điều này một cách cẩn thận báo cáo các hiệu ứng nhỏ với khoảng sai số rộng.

Khả năng sinh lời là tuyên bố yếu. Hầu hết các README trong kho lưu trữ đều báo cáo kết quả backtest chứ không phải thành tích giao dịch thực tế có vốn, và khoảng cách giữa đường cong vốn trong mẫu và tài khoản thực là khoảng cách lâu đời nhất trong giao dịch định lượng. Việc đưa mô hình ngôn ngữ vào vòng lặp không rút ngắn khoảng cách đó.

Mức chi phí tối thiểu mà một tín hiệu phải vượt qua

Mọi giao dịch đều phải vượt qua spread, và đó là mức sàn mà một chiến lược phải vượt qua trước bất kỳ điều gì khác. Spread báo giá trung bình trong giờ giao dịch thông thường, từ ngày 22 tháng 6 đến ngày 26 tháng 6 năm 2026, cho sáu mã niêm yết tại Mỹ:

Truy vấnChi phí sàn: chênh lệch giá trung vị tính bằng điểm cơ bản của điểm giữa, giờ giao dịch thường, 22-26/6/2026
Câu lệnh SQL chính xác đằng sau mỗi con số
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

Một điểm cơ bản là một phần trăm của một phần trăm. Mã có spread hẹp nhất trong bảng, SPY, có spread báo giá trung bình là 0.27 điểm cơ bản trong tuần đó. Mã rộng nhất, RIOT, có spread là 7.09. Một vòng giao dịch trọn vẹn phải trả spread hai lần, vì vậy một lần vào và ra ở mã đầu tiên bắt đầu thua 0.55 điểm cơ bản và cặp tương tự ở mã cuối cùng bắt đầu thua 14.19 điểm cơ bản. Một tác tử xoay vòng danh mục hai lần một tuần phải trả khoản phí đó khoảng một trăm lần một năm, và khoản phí này được tính bất kể dự đoán đúng hay sai. Chi phí giao dịch một cổ phiếu liệt kê chi tiết phần còn lại của hóa đơn.

Nhiễu mà một dự đoán hướng phải vượt qua

Các dự đoán hướng được đánh giá dựa trên một phân phối mà phần lớn là các con số nhỏ. Mỗi phiên giao dịch SPY trong năm dương lịch 2025, được sắp xếp theo quy mô biến động từ đóng cửa đến đóng cửa:

Truy vấnBiến động phiên điển hình: biến động đóng cửa SPY theo nhóm quy mô, năm dương lịch 2025
Câu lệnh SQL chính xác đằng sau mỗi con số
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

Một nửa số năm nằm trong khoảng nửa phần trăm. Dải under 0.25% chứa 24.9% số phiên và dải 0.25 to 0.5% chứa thêm 24.1%. Ở đầu kia, 13 phiên có biến động 2% and up, chiếm 5.2% của năm.

Hãy đặt điều đó bên cạnh bảng spread. Một điểm cơ bản là 0,01%. Một biến động phiên điển hình là 0,3% gấp ba mươi lần spread hẹp và xấp xỉ bốn lần spread rộng. Phép tính để lại chỗ cho một dự đoán đúng và kiên nhẫn, và rất ít chỗ cho một dự đoán nhanh và biên lợi nhuận mỏng.

Vũ trụ giao dịch thực sự nằm ở đâu

Các framework tác tử quảng cáo về phạm vi bao phủ, thường là hàng trăm mã được quét mỗi sáng. Khối lượng đô la cho thấy có bao nhiêu phần trăm trong danh sách đó có thể hấp thụ khối lượng lớn. Mọi mã niêm yết tại Mỹ giao dịch trong giờ thông thường vào ngày 30 tháng 6 năm 2026, được nhóm theo thứ hạng của nó trong khối lượng đô la của phiên đó:

Truy vấnNơi dòng tiền giao dịch: khối lượng đô la Mỹ theo bậc thanh khoản, giờ giao dịch thường, 30/6/2026
Câu lệnh SQL chính xác đằng sau mỗi con số
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

Mười mã chiếm 22.5% khối lượng đô la của phiên, khoảng 205.04 tỷ đô la. 40 mã tiếp theo chiếm 20.5%. Ở đầu kia, 10966 mã xếp hạng dưới 1000 chia nhau 12.9%, khoảng 117.83 tỷ đô la trải dài trên toàn bộ phần đuôi.

Phạm vi bao phủ rộng thì dễ quảng cáo nhưng đắt để giao dịch. Một ủy ban xếp hạng ba nghìn mã dành phần lớn nỗ lực xếp hạng của mình ở phần đuôi đó, nơi bảng spread ở trên là một chi phí thực sự chứ không phải là sai số làm tròn.

Tại sao các backtest này làm đẹp hệ thống

Nguồn lớn nhất của một backtest đẹp là việc lựa chọn khung thời gian. SPY theo năm dương lịch, từ 2016 đến 2025, cùng với khoảng cách giữa giá đóng cửa cao nhất và thấp nhất trong năm:

Truy vấnKhung thời gian quyết định kết quả: lợi nhuận giá năm dương lịch SPY và biên độ cao-thấp trong năm, 2016-2025
Câu lệnh SQL chính xác đằng sau mỗi con số
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

Một hệ thống chỉ được kiểm tra trên 2021, một năm đóng cửa 28.7% cao hơn, sẽ kế thừa một xu hướng tăng. Cùng một hệ thống chỉ được kiểm tra trên 2022, đóng cửa -20%, sẽ kế thừa một xu hướng giảm. Khoảng cách trong năm giữa mức đóng cửa cao nhất và thấp nhất lên tới 68% vào năm 2020 và duy trì trên 25.3% ngay cả trong những năm yên bình hơn.

Bốn cái bẫy nằm trên vấn đề lựa chọn khung thời gian, và một trong số đó chỉ thuộc về các mô hình ngôn ngữ.

  • Nhìn về tương lai qua dữ liệu huấn luyện. Một mô hình được huấn luyện trên văn bản đến năm 2025 đã đọc được kết quả của một giao dịch năm 2023. Một backtest trên năm 2023 đặt ra một câu hỏi mà mô hình đã biết câu trả lời, và không có sự xáo trộn nào của chuỗi giá có thể loại bỏ kiến thức đó.
  • Sai lệch sống sót trong danh sách mã. Một vũ trụ được tập hợp từ các mã niêm yết ngày hôm nay bỏ qua các mã đã bị hủy niêm yết trên đường đi.
  • Giả định về khớp lệnh. Một backtest khớp mọi lệnh ở mức giá trung bình sẽ xóa bỏ toàn bộ bảng chi phí ở trên.
  • Lựa chọn qua các biến thể prompt. Hai mươi cách diễn đạt prompt được thử và cách tốt nhất được báo cáo cũng là sự quá khớp tương tự đã từng làm khổ các tham số từ lâu trước khi có mô hình ngôn ngữ.

Nơi các tác tử mô hình ngôn ngữ có thể hữu ích một cách hợp lý

Phiên bản trung thực của lời chào hàng hẹp hơn phiên bản README và vẫn hữu ích.

Đọc khối lượng là lợi ích rõ ràng nhất. Một tác tử làm việc với mọi hồ sơ và tiêu đề trong danh sách theo dõi qua đêm và trả về một bản tóm tắt có cấu trúc giúp tiết kiệm hàng giờ chú ý của con người, và đầu ra có thể kiểm tra được so với nguồn.

Mô tả chế độ thị trường bằng ngôn ngữ đơn giản là lợi ích thứ hai. Một đoạn văn hàng ngày về sự phân tán, bề rộng và biến động, được tạo ra từ cùng những con số mà một con người sẽ đọc, là một tài liệu tóm tắt hữu ích ngay cả khi nó không mang theo dự báo nào.

Vệ sinh quy trình là lợi ích thứ ba. Một tác tử từ chối một lệnh vi phạm giới hạn vị thế đã nêu, hoặc gắn cờ một chiến lược sắp giao dịch vào ngày công bố kết quả kinh doanh, thực thi các quy tắc mà một con người mất tập trung có thể bỏ qua.

Không có lợi ích nào trong ba lợi ích này là một lợi thế trên thị trường. Cả ba đều là công việc nghiên cứu và vận hành, đó là nơi các lợi ích có thể đo lường được nằm ở hiện tại. Một hiệu ứng đã được ghi nhận như sự bất thường của biến động thấp đã cần các mẫu lớn và sự tái lặp ngoài mẫu nhiều lần trước khi bất kỳ ai coi nó là thực, và một framework tác tử mới cũng phải đáp ứng cùng một tiêu chuẩn nếu không thì nó không vượt qua được. Bỏ lỡ những ngày tốt nhất cho thấy việc chuyển đổi thường xuyên gây ra chi phí gì cho một nhà đầu tư nắm giữ dài hạn.

Kỷ luật mà các nhà thực hành mô tả

Các nhóm vận hành các hệ thống này một cách công khai có xu hướng mô tả cùng một trình tự. Kiểm tra chuyển tiếp trên các lệnh mô phỏng trong nhiều tháng chứ không phải nhiều ngày, vì một hồ sơ giấy chỉ tích lũy với tốc độ của thời gian thực. Giữ một phần dữ liệu ngoài mẫu mà các prompt chưa từng thấy. Ghi log mọi prompt, mọi phản hồi và mọi lệnh, vì một ủy ban không thể phát lại thì không thể gỡ lỗi. Định cỡ vị thế bằng các quy tắc cố định nằm bên ngoài mô hình. Tính mọi chi phí từ các bảng ở trên trước khi gọi bất kỳ giai đoạn nào là có lợi nhuận.

Câu hỏi thường gặp

Các hệ thống giao dịch AI đa tác tử có thực sự kiếm được tiền không?

Bằng chứng công khai rất mỏng. Hầu hết các dự án mã nguồn mở đều công bố kết quả backtest chứ không phải hồ sơ giao dịch thực tế đã được kiểm toán, và backtest của các chiến lược mô hình ngôn ngữ mang một lỗ hổng cụ thể: mô hình đã được huấn luyện trên văn bản mô tả giai đoạn kiểm tra. Một đường cong vốn chưa được kiểm toán chứng minh phần mềm, chứ không phải một lợi thế.

Một ủy ban các tác tử LLM có tốt hơn một mô hình đơn lẻ không?

Một ủy ban làm giảm một số lỗi định dạng và phân tích cú pháp và thêm cấu trúc cho đầu ra. Nó không thêm thông tin độc lập khi mọi tác tử đều truy vấn cùng một mô hình nền trên cùng một dữ liệu cơ bản. Năm ý kiến có tương quan bỏ phiếu gần như một ý kiến, với độ trễ và chi phí token bổ sung đi kèm.

Một tác tử AI có thể giao dịch nhanh hơn một nhà tạo lập thị trường không?

Không. Một vòng xử lý của mô hình ngôn ngữ mất vài giây trong khi các hệ thống báo giá chuyên nghiệp hoạt động trong micro giây trên phần cứng đặt chung. Bất kỳ chiến lược nào có lợi nhuận phụ thuộc vào tốc độ đều nằm ngoài khả năng của các hệ thống này, điều này để lại các khung thời gian vài ngày và vài tuần như là mảnh đất khả thi.

Cái bẫy backtest lớn nhất dành riêng cho các tác tử giao dịch LLM là gì?

Nhìn về tương lai qua dữ liệu huấn luyện. Các backtest thông thường bảo vệ chống lại việc giá trong tương lai rò rỉ vào quyết định, nhưng trọng số của mô hình đã mã hóa các bài bình luận đã công bố về cửa sổ kiểm tra. Các cửa sổ walk-forward và các phân tách ngoài mẫu không loại bỏ được kiến thức được nướng vào trọng số, và bài kiểm tra sạch duy nhất là một giai đoạn sau ngày cắt huấn luyện.

Giai đoạn giao dịch giấy cần kéo dài bao lâu?

Khung hữu ích là kích thước mẫu chứ không phải độ dài lịch. Một chiến lược giao dịch hàng tuần tạo ra khoảng năm mươi quan sát một năm, một mẫu nhỏ cho bất kỳ tuyên bố nào về lợi thế. Các nhà thực hành thường muốn có đủ giao dịch để đã thấy một đợt sụt giảm, chứ không chỉ một giai đoạn tốt.


Mọi bảng trên trang này đều là một truy vấn đã được lưu trữ, có phiên bản trên dữ liệu thị trường Mỹ thực tế. Mở bất kỳ bảng nào để đọc SQL đằng sau nó, hoặc chạy truy vấn của riêng bạn trên cùng các bảng trên terminal Strasmore.

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