Chọn một thư viện backtesting về cơ bản là một canh bạc về tình trạng bảo trì. Đoạn code định giá chiến lược của bạn cần phải còn sống khi một sàn giao dịch thay đổi API, khi một bản phát hành pandas làm hỏng một câu lệnh import, hoặc khi bạn tìm thấy một lỗi lúc 2 giờ sáng. Vì vậy bài đánh giá này mở đầu bằng tín hiệu kém hào nhoáng nhất nhưng mang tính quyết định nhất — dự án có thực sự được bảo trì hay không? — rồi mới đi vào kiến trúc, tốc độ và tính năng.

Mọi con số GitHub bên dưới đều được lấy trực tiếp từ GitHub API vào 2026-06-22, và những tuyên bố khó hơn đã được đối chiếu chéo với các nguồn gốc (repo dự án, tài liệu chính thức) và kiểm chứng theo hướng phản biện. Ở những chỗ một con số là kịch bản tốt nhất do nhà cung cấp tự công bố, điều đó được đánh dấu rõ.

Kiểm tra thực tế về tình trạng bảo trì

Đây là toàn bộ hệ sinh thái được xếp hạng theo số sao GitHub, tô màu theo việc nó có thực sự đang được phát triển hay không:

Các công cụ backtesting Python xếp hạng theo số sao GitHub và tô màu theo tình trạng bảo trì (2026-06-22): freqtrade, NautilusTrader và LEAN dẫn đầu nhóm được bảo trì tích cực, trong khi Backtrader đang ngủ đông và Zipline, PyAlgoTrade cùng QSTrader đã bị bỏ rơi.

Sự thật khó chịu: hai trong số những cái tên nhiều sao nhất, được viết blog nhiều nhất, thực chất đã là di sản cũ.

Trong khi đó, các dự án đang phát hành release thực sự trong năm 2026 là Freqtrade (51.7k ⭐), NautilusTrader (24.1k ⭐), LEAN (20k ⭐), backtesting.py (8.5k ⭐), Jesse (8.1k ⭐), vectorbt (8.0k ⭐), PyBroker (3.4k ⭐), bt (2.9k ⭐), và Lumibot (1.7k ⭐). Số sao đo lường lịch sử; ngày commit đo lường việc liệu có ai sẽ sửa lỗi của bạn hay không.

Hai kiến trúc: event-driven và vectorized

Nhánh phân chia còn lại quyết định mọi thứ là cách engine chạy chiến lược của bạn.

Không cái nào thắng tuyệt đối. Bạn nghiên cứu với cái nhanh và kiểm chứng với cái thực tế. Sẽ nói thêm về sự đánh đổi này bên dưới.

Những cái dẫn đầu được bảo trì tích cực

NautilusTrader — cấp độ production, event-driven, lõi Rust

NautilusTrader (24.1k ⭐, LGPL-3.0) tự mô tả là một "trading engine Rust-native cấp production với kiến trúc event-driven mang tính tất định (deterministic)" — codebase khoảng 70% là Rust với các binding Python. Nó backtest trên nhiều sàn và nhiều công cụ ở độ phân giải nanosecond bằng dữ liệu tick và order-book, đồng thời tích hợp khoảng 20 kết nối live (Binance, Coinbase, Kraken, OKX, Bybit, Interactive Brokers, Betfair, và nhiều hơn nữa). Lời hứa nổi bật của nó: cùng một đoạn code chiến lược từ nghiên cứu đến triển khai live. Đây là lựa chọn mạnh nhất cho đối tượng crypto+chứng khoán cần độ thực tế ở cấp tick và một con đường thực sự dẫn đến production. Cái giá phải trả: đường cong học tập dốc hơn và kiến trúc nặng nề hơn so với các thư viện đơn giản.

vectorbt — nghiên cứu vectorized ở quy mô lớn

vectorbt (8.0k ⭐, Apache-2.0 + Commons Clause) là engine vectorized. README của nó viết: "thay vì lặp qua từng nến với một chiến lược tại một thời điểm, nó đóng gói hàng nghìn cấu hình vào các mảng NumPy, tăng tốc đoạn code nóng bằng Numba và Rust, rồi chạy tất cả cùng một lúc, biến nhiều giờ grid search thành vài giây." Việc kiểm thử 10.000 tổ hợp cửa sổ dual-SMA trong vài giây là ví dụ kinh điển; bên thứ ba báo cáo mức tăng tốc khoảng 1000× so với Backtrader trên một số khối lượng công việc (con số do nhà cung cấp/bên thứ ba đưa ra, không phải benchmark độc lập). Quá trình quét tham số bên dưới — 25 backtest trên các cửa sổ SMA — chính xác là điều mà vectorbt công nghiệp hóa:

Một heatmap quét tham số: tổng lợi nhuận trên 25 tổ hợp cửa sổ SMA nhanh/chậm, từ −5% đến +54%. Quá trình grid search này chính là tối ưu hóa tham số hàng loạt mà vectorbt được xây dựng để chạy trong vài giây.

Hai điểm lưu ý đáng biết: Commons Clause hạn chế việc bán lại thương mại (có liên quan nếu bạn đang xây dựng một sản phẩm), và phiên bản trả phí, được trau chuốt vectorbt PRO là một sản phẩm riêng biệt so với bản mã nguồn mở. vectorbt chỉ dùng để backtest — không có giao dịch live.

backtesting.py — lựa chọn yêu thích nhẹ nhàng

backtesting.py (8.5k ⭐, AGPL-3.0) là cái để bạn dùng đến khi muốn một backtest sạch sẽ, nhanh, dễ đọc mà không cần đến đống thủ tục rườm rà của cả một framework. Định nghĩa init()next(), chạy, nhận về một đối tượng thống kê và một biểu đồ Bokeh tương tác. Giấy phép AGPL-3.0 rất quan trọng: đó là copyleft mạnh với điều khoản về sử dụng qua mạng, nên nó khá gượng gạo khi nằm trong một SaaS mã nguồn đóng. Nó chỉ dùng để backtest. Đường cong vốn (equity curve) trên trang này (ảnh bìa) và phần thống kê bên dưới đến từ một lần chạy backtesting.py thực tế — một chiến lược cắt nhau SMA(20/50) đơn giản trên một chuỗi dữ liệu tổng hợp:

Thống kê hiệu suất của backtesting.py cho một chiến lược cắt nhau mẫu SMA(20/50): lợi nhuận +1.6% so với +46% của buy & hold, Sharpe 0.05, sụt giảm tối đa −38%, 4 giao dịch. Một kết quả trung thực — chiến lược cắt nhau ngây thơ thua kém việc nắm giữ.

Hãy chú ý đến kết quả trung thực: chiến lược cắt nhau ngây thơ mang lại +1.6% so với +46% của buy & hold, với mức sụt giảm tàn nhẫn −38%. Đó là kết quả đầu tiên bình thường của một backtest thực tế, và chính là lý do bạn cần quét tham số và kiểm chứng các giả định trước khi tin vào bất cứ điều gì.

Freqtrade — lựa chọn mặc định cho crypto

Freqtrade (51.7k ⭐, GPL-3.0) là dự án nhiều sao nhất trong danh sách này và là bot giao dịch crypto mã nguồn mở mặc định trên thực tế. Nó làm backtesting, giao dịch dry-run (giấy), và giao dịch live trên các sàn lớn, điều khiển qua Telegram hoặc một giao diện web tích hợp sẵn, và phát hành release hằng tháng. Nó chỉ dành cho crypto — không có chứng khoán — nhưng với crypto thì đây là chuẩn mực được bảo trì và được cộng đồng hậu thuẫn.

Lumibot, bt, PyBroker, Jesse, LEAN, zipline-reloaded

Nghĩa địa — tránh dùng cho dự án mới

Những cái này vẫn xuất hiện trong kết quả tìm kiếm và các bài blog cũ, nhưng đừng bắt đầu từ đây vào năm 2026:

Kiến trúc quan trọng: sự đánh đổi về tính thực tế

Sự phân chia vectorized và event-driven không phải chuyện hàn lâm. Tốc độ của vectorbt đến từ việc giả định mọi lệnh khớp tại giá của nến tiếp theo mà không có trượt giá. Với một bộ lọc momentum trên 500 tài sản thì điều đó ổn. Nhưng với một chiến lược mà lợi thế nằm ở việc khớp lệnh trong nến — đặt stop, khớp lệnh một phần, vị trí trong hàng đợi — một backtest vectorized sẽ lặng lẽ nói dối bạn, và bạn cần một engine event-driven (NautilusTrader, Backtrader) hoặc một lần dry-run live (Freqtrade, Lumibot) để có được con số trung thực. Quy trình chuyên nghiệp dùng cả hai: vectorbt để khám phá không gian tham số, một engine event-driven để kiểm chứng những cái sống sót.

Giấy phép — đọc cái này trước khi bạn xây sản phẩm

Các thư viện backtesting nặng về giấy phép một cách bất thường, và một số cái là copyleft:

Giấy phép Thư viện Điều cần biết
AGPL-3.0 backtesting.py Copyleft mạnh nhất; sử dụng qua mạng/SaaS có thể kích hoạt yêu cầu công khai mã nguồn
Apache-2.0 + Commons Clause vectorbt (bản OSS) Thoáng ngoại trừ việc bạn không được bán nó như một sản phẩm
GPL-3.0 Backtrader, Freqtrade, Lumibot Copyleft; phân phối một sản phẩm phái sinh nghĩa là phải mã nguồn mở nó
LGPL-3.0 NautilusTrader Copyleft yếu hơn; việc liên kết (linking) thường là ổn
MIT bt, Jesse, QSTrader, fastquant Thoáng — gần như làm được mọi thứ
Apache-2.0 LEAN, zipline-reloaded, finmarketpy Thoáng, kèm theo cấp quyền sáng chế (patent grant)

Nếu bạn đang xây dựng một thứ gì đó thương mại và mã nguồn đóng, các công cụ MIT/Apache là lựa chọn không vướng mắc; AGPL và Commons Clause thì cần một luật sư đọc qua.

So sánh tổng quan

Công cụ ⭐ Sao Kiến trúc Giấy phép Bảo trì Giao dịch live Phù hợp nhất cho
NautilusTrader 24.1k Event-driven (Rust) LGPL-3.0 🟢 Tích cực Production, độ thực tế tick/order-book
vectorbt 8.0k Vectorized Apache+CC 🟢 Tích cực Không Tìm kiếm tham số hàng loạt
backtesting.py 8.5k Event-driven AGPL-3.0 🟢 Tích cực Không Backtest đơn lẻ nhanh, sạch sẽ
Freqtrade 51.7k Event-driven GPL-3.0 🟢 Tích cực Có (crypto) Bot crypto được bảo trì
Backtrader 22.1k Event-driven GPL-3.0 🟡 Ngủ đông Dự án di sản (lưu ý độ cũ kỹ)
Lumibot 1.7k Event-driven GPL-3.0 🟢 Tích cực Đa tài sản, backtest/live hợp nhất
LEAN 20k Event-driven Apache-2.0 🟢 Tích cực Nền tảng đa tài sản hạng nặng
bt 2.9k Vectorized/trọng số MIT 🟢 Tích cực Không Chiến lược phân bổ danh mục
PyBroker 3.4k Event-driven OSS 🟢 Tích cực Không Chiến lược ML + walk-forward
zipline-reloaded 1.8k Event-driven Apache-2.0 🟢 Tích cực Không Học thuật, sách ML4T
Zipline (bản gốc) 19.9k Event-driven Apache-2.0 🔴 Bị bỏ rơi Không gì cả — hãy dùng reloaded
PyAlgoTrade 4.7k Event-driven 🔴 Bị lưu trữ Không gì mới

Số sao và trạng thái là ảnh chụp tại thời điểm 2026-06-22 và sẽ thay đổi; tình trạng bảo trì là chiều biến động nhất, vì vậy hãy kiểm tra lại hoạt động commit trước khi bạn cam kết.

Cách chọn, gói gọn trong một hơi thở

Một quy tắc duy nhất tồn tại qua mọi chế độ thị trường: kiểm tra ngày commit cuối cùng trước khi kiểm tra số sao. Một thư viện 22k sao chưa phát hành gì kể từ năm 2023 là con đường đến production chậm hơn so với một thư viện 8k sao đã phát hành tuần trước.


Phương pháp luận: Các chỉ số GitHub được lấy trực tiếp từ GitHub API vào 2026-06-22; các tuyên bố về kiến trúc, bảo trì, giấy phép và giao dịch live đã được đối chiếu chéo với các repo dự án và tài liệu chính thức cũng như kiểm chứng theo hướng phản biện, dựa trên các danh mục được tuyển chọn (PyTrade.org, awesome-systematic-trading) và danh sách các lựa chọn thay thế của kernc. Đường cong vốn, các thống kê và heatmap tham số là kết quả thực tế từ một lần chạy backtesting.py trên một chuỗi giá tổng hợp có thể tái lập — mang tính minh họa, không phải khuyến nghị chiến lược. Các con số hiệu suất được gán cho nhà cung cấp (mức tăng tốc của vectorbt, độ phân giải nanosecond của NautilusTrader) là do họ tự công bố, không phải benchmark độc lập.