Trang chủBlogKinh nghiệm TradingCách đánh giá hiệu suất của một chiến lược giao dịch thuật toán
Cách đánh giá hiệu suất của một chiến lược giao dịch thuật toán
Kinh nghiệm Trading

Cách đánh giá hiệu suất của một chiến lược giao dịch thuật toán

Hiệu suất của 1 chiến lược giao dịch thuật toán

Ngọc Hải LươngNgọc Hải Lương
19/8/2026
14 phút phút đọc
12 lượt xem

Một chiến lược giao dịch thuật toán có lợi nhuận cao chưa chắc đã là một chiến lược tốt. Backtest tăng 40% trong một năm nghe rất hấp dẫn, nhưng nếu có thời điểm tài khoản giảm 35%, giao dịch quá nhiều, chi phí lớn hoặc phần lớn lợi nhuận chỉ đến từ vài giao dịch may mắn thì kết quả thực tế có thể hoàn toàn khác.

Đánh giá một chiến lược vì vậy không nên dừng lại ở câu hỏi chiến lược kiếm được bao nhiêu tiền. Cần nhìn toàn bộ quá trình tạo ra lợi nhuận: phải chịu bao nhiêu rủi ro, mức sụt giảm lớn nhất là bao nhiêu, kết quả có ổn định không, sau phí giao dịch còn lại bao nhiêu và chiến lược có tiếp tục hoạt động trên dữ liệu chưa từng được sử dụng để xây dựng hay không.

Một quy trình đánh giá tương đối đầy đủ có thể hình dung theo cycle:

Lợi nhuận → Rủi ro → Độ ổn định → Chi phí → Kiểm tra ngoài mẫu → Quyết định giữ, sửa hoặc loại chiến lược.

fbc3ffe9-7649-42c9-8dbb-d9cd6c27e764.png

Phần 1. Đừng chỉ nhìn lợi nhuận – phải xem lợi nhuận được tạo ra như thế nào

Chỉ số dễ thấy nhất trong một backtest là Total Return – tổng lợi nhuận. Ví dụ vốn ban đầu 100 triệu đồng, kết thúc giai đoạn kiểm định với 140 triệu đồng thì tổng lợi nhuận là 40%. Đây là thông tin cần thiết nhưng chưa đủ để đánh giá chiến lược.

Giả sử có hai chiến lược cùng tạo ra 20%/năm. Chiến lược A tăng khá đều và mức giảm lớn nhất của tài khoản chỉ khoảng 8%. Chiến lược B thường xuyên tăng giảm mạnh và có lúc mất 30% tài khoản trước khi phục hồi. Lợi nhuận cuối cùng giống nhau nhưng chất lượng của hai chiến lược hoàn toàn khác nhau.

Đây là lý do Maximum Drawdown rất quan trọng. Drawdown là mức giảm của tài khoản từ một đỉnh xuống đáy tiếp theo. Maximum Drawdown là lần giảm sâu nhất trong toàn bộ khoảng thời gian backtest. Các nghiên cứu đánh giá hệ thống giao dịch thường sử dụng đồng thời lợi nhuận và drawdown thay vì chỉ nhìn lợi nhuận cuối cùng.

Ví dụ đường vốn tăng từ 100 triệu lên 130 triệu, sau đó giảm xuống 104 triệu rồi mới tăng trở lại. Drawdown trong giai đoạn đó là khoảng 20% tính từ đỉnh 130 triệu. Con số này có ý nghĩa thực tế rất lớn vì chiến lược có thể sinh lời về dài hạn nhưng vẫn phải trải qua những giai đoạn thua lỗ đáng kể.

Tiếp theo là Sharpe Ratio, một trong những chỉ số được sử dụng phổ biến để đánh giá lợi nhuận trong tương quan với mức biến động của lợi nhuận. Ý tưởng của Sharpe Ratio là lợi nhuận cao chỉ thực sự hấp dẫn khi không phải đánh đổi bằng mức biến động quá lớn. William Sharpe mô tả chỉ số này như một cách so sánh phần lợi nhuận vượt trội với mức biến động của lợi nhuận.

Có thể hiểu rất đơn giản: nếu hai chiến lược cùng kiếm 15% nhưng một chiến lược tạo ra đường vốn ổn định hơn thì chiến lược đó thường có Sharpe tốt hơn.

Tuy nhiên cũng không nên nhìn Sharpe Ratio như một con số tuyệt đối. Một Sharpe đẹp trong backtest không đảm bảo chiến lược sẽ hoạt động tương tự trong tương lai. Nếu chiến lược được thử hàng trăm hoặc hàng nghìn bộ tham số rồi chỉ giữ lại phiên bản có Sharpe cao nhất, kết quả có thể bị overfitting. Nghiên cứu về Probability of Backtest Overfitting cho thấy việc lựa chọn chiến lược dựa trên quá nhiều lần thử có thể tạo ra kết quả rất tốt trong mẫu nhưng suy giảm mạnh khi đưa sang dữ liệu mới.

Ngoài lợi nhuận và drawdown, cần xem cấu trúc của các giao dịch. Những chỉ số đơn giản như Win Rate, Average Win, Average Loss và Profit Factor giúp nhìn rõ hơn chiến lược kiếm tiền bằng cách nào.

Ví dụ một chiến lược chỉ thắng 40% số giao dịch vẫn có thể có lãi nếu các giao dịch thắng trung bình lớn hơn nhiều so với các giao dịch thua. Ngược lại, một chiến lược thắng 80% số lần vẫn có thể nguy hiểm nếu mỗi lần thắng chỉ kiếm rất ít nhưng thỉnh thoảng xuất hiện một khoản lỗ rất lớn.

Một ví dụ đơn giản:

  • 40 giao dịch thắng, trung bình +5%.

  • 60 giao dịch thua, trung bình -2%.

Tổng thể chiến lược vẫn có thể có lợi thế dù Win Rate chỉ 40%.

Vì vậy, tỷ lệ thắng cao không đồng nghĩa chiến lược tốt. Cần nhìn cả kích thước của khoản lời và khoản lỗ.

Điểm cuối cùng trong phần này là đường vốn – Equity Curve. Một con số lợi nhuận cuối kỳ không thể hiện được quá trình. Đường vốn giúp nhìn thấy chiến lược tăng đều hay chỉ kiếm phần lớn lợi nhuận trong một vài tháng, có những giai đoạn đi ngang rất lâu hay thường xuyên xuất hiện drawdown lớn.

Một chiến lược đáng chú ý thường không chỉ có một con số lợi nhuận đẹp mà còn có cấu trúc lợi nhuận đủ hợp lý để có thể tiếp tục được nghiên cứu.

Phần 2. Backtest đẹp vẫn chưa đủ – cần kiểm tra độ ổn định và chi phí thực tế

Sau khi một chiến lược vượt qua bước kiểm tra lợi nhuận và rủi ro, câu hỏi tiếp theo là kết quả đó có ổn định hay không.

Giả sử một chiến lược sử dụng đường trung bình MA50. Backtest cho kết quả rất tốt. Nhưng khi đổi MA50 thành MA49, chiến lược gần như không còn lợi nhuận; đổi thành MA51 cũng thất bại. Đây là dấu hiệu cần thận trọng.

Một chiến lược thực sự có logic thường không nên phụ thuộc tuyệt đối vào một con số quá chính xác. Nếu MA45, MA50, MA55 đều tạo ra kết quả tương đối hợp lý thì tín hiệu có vẻ bền hơn. Nếu chỉ đúng một tham số duy nhất tạo ra kết quả xuất sắc thì khả năng chiến lược đã được điều chỉnh quá sát với dữ liệu quá khứ sẽ cao hơn.

Đây chính là phần Parameter Stability – độ ổn định của tham số.

Sau đó cần kiểm tra chiến lược trong nhiều trạng thái thị trường khác nhau. Có chiến lược hoạt động rất tốt trong thị trường tăng nhưng thất bại khi thị trường đi ngang. Có chiến lược mean reversion hoạt động tốt trong giai đoạn sideway nhưng chịu thua lỗ lớn khi xuất hiện xu hướng mạnh.

Vì vậy, kết quả nên được tách theo từng giai đoạn:

  • Thị trường tăng.

  • Thị trường giảm.

  • Thị trường đi ngang.

  • Biến động cao.

  • Biến động thấp.

Việc này giúp biết lợi nhuận đến từ đâu và điều kiện nào khiến chiến lược dễ thất bại.

Một yếu tố cực kỳ quan trọng khác là transaction cost – chi phí giao dịch.

Backtest thường có xu hướng đẹp hơn giao dịch thật nếu không tính đầy đủ phí, spread, slippage và tác động của thanh khoản. Lý thuyết về giao dịch động cũng chỉ ra rằng chi phí giao dịch ảnh hưởng trực tiếp đến tốc độ và quy mô điều chỉnh danh mục; trong thực tế, việc liên tục đưa danh mục về đúng vị thế “lý tưởng” có thể không còn tối ưu khi phải trả chi phí.

Ví dụ một chiến lược kiếm trung bình 0,30% trên mỗi giao dịch. Nếu toàn bộ chi phí mua bán và trượt giá vào khoảng 0,20%, lợi thế thực tế chỉ còn khoảng 0,10%. Chỉ cần điều kiện thanh khoản xấu hơn một chút, phần lợi thế còn lại có thể biến mất.

Điều này đặc biệt quan trọng với các chiến lược có Turnover cao, tức mua bán quá thường xuyên.

Một chiến lược giao dịch 10 lần mỗi năm và một chiến lược giao dịch 500 lần mỗi năm có thể cùng đạt 20% trong backtest, nhưng mức độ nhạy cảm với phí và slippage rất khác nhau. Khi số giao dịch tăng, những sai số rất nhỏ trong giả định giá khớp cũng có thể tích lũy thành một khoản đáng kể.

Vì vậy nên chạy ít nhất hai phiên bản:

Backtest trước chi phí → Backtest sau chi phí thực tế.

Sau đó có thể chạy thêm stress test chi phí. Nếu phí và slippage tăng 50%, chiến lược còn có lãi không? Nếu chi phí gấp đôi, lợi thế còn tồn tại không? Một nghiên cứu walk-forward gần đây cũng thực hiện cost-sensitivity test và chỉ ra rằng kết luận về một chiến lược có thể thay đổi khi giả định chi phí thay đổi.

Ngoài ra cần kiểm tra số lượng giao dịch. Một chiến lược có Sharpe rất cao nhưng chỉ thực hiện 12 giao dịch trong 10 năm chưa chắc đã có đủ dữ liệu để kết luận mạnh. Một vài giao dịch lớn có thể quyết định phần lớn kết quả.

Có thể kiểm tra thêm mức độ tập trung của lợi nhuận. Nếu loại 5 giao dịch tốt nhất mà toàn bộ chiến lược chuyển từ lãi sang lỗ, hệ thống đang phụ thuộc quá nhiều vào một số sự kiện hiếm.

Đến đây, cycle đánh giá đã đi được bốn bước:

Lợi nhuận → Rủi ro → Độ ổn định → Chi phí.

Nhưng vẫn còn bước quan trọng nhất: kiểm tra xem chiến lược có hoạt động với dữ liệu mà quá trình xây dựng chưa từng nhìn thấy hay không.

Phần 3. Out-of-Sample mới là bài kiểm tra quan trọng – và cycle đánh giá nên kết thúc thế nào?

Một lỗi phổ biến trong xây dựng chiến lược thuật toán là sử dụng toàn bộ dữ liệu để liên tục chỉnh sửa mô hình. Ví dụ có dữ liệu từ năm 2015 đến 2025, toàn bộ giai đoạn này được sử dụng để thử MA, RSI, stop loss, take profit và rất nhiều điều kiện khác. Sau hàng trăm lần thử, cuối cùng tìm được một chiến lược có backtest rất đẹp.

Vấn đề là dữ liệu 2015-2025 lúc này không còn thực sự là dữ liệu kiểm định nữa. Nó đã tham gia trực tiếp vào quá trình thiết kế chiến lược.

Cách hợp lý hơn là tách dữ liệu. Một phần được sử dụng để xây dựng và điều chỉnh mô hình, phần còn lại được giữ riêng để kiểm tra sau cùng. Phần dữ liệu chưa được dùng để lựa chọn chiến lược thường được gọi là Out-of-Sample.

Nếu chiến lược có kết quả tốt trong giai đoạn xây dựng nhưng thất bại hoàn toàn ở out-of-sample, khả năng cao lợi thế trong backtest không đủ bền.

Nghiên cứu về backtest overfitting tập trung chính vào vấn đề này: khi quá nhiều cấu hình được thử trên cùng dữ liệu, khả năng chọn nhầm một mô hình chỉ tình cờ hoạt động tốt trong lịch sử sẽ tăng lên.

Một bước cao hơn là Walk-Forward Testing. Thay vì chỉ chia dữ liệu thành một đoạn train và một đoạn test, quá trình được thực hiện nhiều lần theo thời gian. Ví dụ dùng dữ liệu 2015-2018 để xây dựng mô hình rồi kiểm tra năm 2019; tiếp tục dùng 2016-2019 để xây dựng và kiểm tra năm 2020; sau đó tiếp tục dịch cửa sổ về phía trước. Cách này gần hơn với thực tế vì tại mỗi thời điểm, chiến lược chỉ được sử dụng những dữ liệu đã tồn tại trước đó. Các nghiên cứu walk-forward cũng nhấn mạnh vai trò của out-of-sample độc lập khi đánh giá độ bền của một hệ thống giao dịch.

Sau backtest và walk-forward vẫn chưa nên chuyển ngay sang giao dịch với quy mô lớn. Có thể thêm giai đoạn paper trading hoặc forward test để theo dõi chiến lược trên dữ liệu thị trường mới. Đây là lúc những vấn đề khó nhìn thấy trong backtest bắt đầu xuất hiện: tín hiệu đến chậm, giá thực tế không khớp như giả định, thanh khoản thay đổi hoặc dữ liệu thực tế có những lỗi mà dữ liệu lịch sử đã được làm sạch không thể hiện.

Toàn bộ cycle đánh giá một chiến lược lúc này có thể tóm gọn như sau:

1. Lợi nhuận: Chiến lược có tạo ra lợi nhuận hay không?

2. Rủi ro: Drawdown và mức biến động có nằm trong khả năng kiểm soát không?

3. Chất lượng lợi nhuận: Lợi nhuận đến từ nhiều giao dịch hay chỉ một vài giao dịch đặc biệt?

4. Độ ổn định: Thay đổi nhẹ tham số hoặc giai đoạn thị trường thì chiến lược có còn hoạt động không?

5. Chi phí: Sau phí, spread và slippage còn bao nhiêu lợi nhuận?

6. Out-of-Sample: Dữ liệu chưa dùng để phát triển mô hình có xác nhận kết quả không?

7. Forward Test: Khi chạy trên thị trường mới, kết quả có gần với backtest không?

8. Quyết định: Giữ nguyên, giảm quy mô, sửa chiến lược hoặc loại bỏ.

Đây là một cycle chứ không phải công việc thực hiện một lần. Khi chiến lược được đưa vào giao dịch thật, hiệu suất vẫn phải được theo dõi liên tục. Sharpe có thể giảm, drawdown có thể lớn hơn lịch sử, chi phí có thể tăng hoặc thị trường có thể chuyển sang một trạng thái mà chiến lược không còn phù hợp.

Một ví dụ đơn giản sẽ cho thấy sự khác biệt.

Giả sử chiến lược A có kết quả:

  • Lợi nhuận: 35%/năm.

  • Maximum Drawdown: 32%.

  • Sharpe: 0,8.

  • Giao dịch: 500 lần/năm.

  • Sau phí còn 21%.

  • Out-of-sample chỉ còn 5%.

Trong khi chiến lược B có:

  • Lợi nhuận: 22%/năm.

  • Maximum Drawdown: 10%.

  • Sharpe: 1,5.

  • Giao dịch: 60 lần/năm.

  • Sau phí còn 19%.

  • Out-of-sample đạt 17%.

Nếu chỉ nhìn lợi nhuận backtest, chiến lược A hấp dẫn hơn rất nhiều. Nhưng khi thêm rủi ro, chi phí và out-of-sample, chiến lược B lại có cấu trúc đáng tin cậy hơn. Đây chính là lý do đánh giá hệ thống không thể chỉ xếp hạng theo Total Return. Sharpe được thiết kế để đặt lợi nhuận trong tương quan với mức biến động, còn nghiên cứu về overfitting cho thấy kết quả trong mẫu cần được kiểm chứng bằng dữ liệu độc lập.

Kết luận

Đánh giá một chiến lược giao dịch thuật toán không phải là mở báo cáo backtest rồi tìm con số lợi nhuận lớn nhất. Một chiến lược tốt cần vượt qua nhiều lớp kiểm tra.

Lợi nhuận cao nhưng drawdown quá lớn có thể khiến chiến lược khó sử dụng thực tế. Win Rate cao nhưng mỗi lần thua quá lớn vẫn có thể tạo ra rủi ro nghiêm trọng. Sharpe đẹp nhưng chỉ xuất hiện trong dữ liệu train có thể là dấu hiệu overfitting. Backtest tốt nhưng turnover quá cao có thể mất phần lớn lợi nhuận sau phí và slippage. Kết quả tốt trong một trạng thái thị trường cũng chưa đảm bảo chiến lược hoạt động trong trạng thái khác.

Vì vậy, cách đánh giá hợp lý hơn là giữ một cycle cố định:

Return → Risk → Stability → Cost → Out-of-Sample → Forward Test → Review.

Khi một chiến lược đi qua toàn bộ cycle này và vẫn giữ được kết quả tương đối ổn định, mức độ tin cậy mới bắt đầu tăng lên. Ngược lại, nếu một chiến lược chỉ đẹp ở bước đầu tiên nhưng liên tục thất bại ở những bước sau, việc loại bỏ nó thường có giá trị hơn việc tiếp tục chỉnh tham số để cố tạo ra một backtest đẹp.

Trong giao dịch thuật toán, mục tiêu cuối cùng không phải tìm backtest đẹp nhất, mà là tìm một chiến lược có khả năng tồn tại khi chuyển từ dữ liệu lịch sử sang thị trường thực tế.