Cách đọc kết quả backtest

Tám con số Blave Agent báo cáo — mỗi con số nghĩa là gì và nên tin con số nào.

Cập nhật lần cuối 2026-09
Điểm chính
  • Backtest là chạy một bộ quy tắc giao dịch trên dữ liệu lịch sử, để bạn thấy nó đã hoạt động ra sao trước khi quyết định bỏ tiền thật vào.
  • Lợi nhuận phải đọc cùng với rủi ro: chiến lược ví dụ btc_sma_cross lãi +145.8%, mua và nắm giữ +68.2%, còn drawdown tối đa trong cùng giai đoạn là −42.6%.
  • Ví dụ này không đặt ngày kết thúc backtest, nên mỗi lần chạy đều chạy tới đúng ngày hôm đó; các con số phía trên là ảnh chụp của một lần chạy như vậy, còn bạn tự chạy hôm nay sẽ ra những con số khác.
  • Sharpe cho biết mỗi đơn vị rủi ro tổng bạn gánh đổi được bao nhiêu lợi nhuận: 0.5–1.0 là chấp nhận được với chiến lược theo xu hướng; trên 1.5 mà kỳ backtest chưa tới hai năm thì phải nhìn bằng con mắt nghi ngờ.
  • Chi phí ăn hết một lợi thế mỏng: cùng chiến lược đó đã trả phí bằng 22% vốn trong bốn năm, và Omega của nó chỉ là 1.04.

Bạn đang cầm một báo cáo backtest với tổng lợi nhuận +145.8%, và bạn không biết con số đó nên khiến mình phấn khích hay cảnh giác. Backtest là chạy một bộ quy tắc giao dịch trên dữ liệu lịch sử để xem nó đã hoạt động ra sao; thứ bạn nhận được không phải là dự đoán “sẽ lãi bao nhiêu”, mà là một nhóm con số để đánh giá: lợi nhuận, rủi ro, chi phí. Cách đánh giá là đọc cả ba cùng lúc, chứ không chỉ nhìn con số đầu tiên.

Một ví dụ thật để neo các khái niệm

Chiến lược btc_sma_cross (SMA45/SMA100 trên BTCUSDT 1h, từ 2022-01-01) cho ra kết quả dưới đây. Ví dụ này không đặt ngày kết thúc backtest, nên mỗi lần chạy đều chạy tới đúng ngày hôm đó: các con số bên dưới là ảnh chụp của một lần chạy như vậy, còn bạn tự chạy hôm nay sẽ ra những con số khác.

Tổng lợi nhuận
+145.8%
Chuẩn so sánh (Buy & Hold)
+68.2%
Drawdown tối đa
−42.6%
Tỷ lệ Sharpe
0.77
Tỷ lệ Sortino
0.72
Tỷ lệ Omega
1.04

Chiến lược này lãi hơn gấp đôi so với mua và nắm giữ — nhưng cũng có lúc chịu drawdown −42.6%, một mức rất nặng. Chấp nhận được hay không hoàn toàn tuỳ mức chịu rủi ro của bạn, và các chỉ số bên dưới sẽ giúp bạn cân nhắc điều đó. Báo cáo còn cho thấy hai con số chi phí — Tổng phí đã trả (ở đây là 22% vốn, trong 4 năm) và Số giao dịch — sẽ được nhắc lại ở phần Omega bên dưới.

Đây là ví dụ thật do chính engine backtest của Blave Agent chạy ra. Nếu bạn chưa có chiến lược của riêng mình và không biết bắt đầu từ đâu, bạn không cần viết lại từ đầu — mọi chiến lược trong thư viện chiến lược chính thức đều kèm backtest thật, nên bạn có thể xem số liệu trước rồi mới quyết định có triển khai hay không.

Tỷ lệ Sharpe — lợi nhuận đã điều chỉnh rủi ro

Tỷ lệ Sharpe = lợi nhuận thường niên hoá ÷ biến động thường niên hoá (cả chiều tăng lẫn chiều giảm). Nó trả lời: mỗi đơn vị rủi ro tổng thể đổi được bao nhiêu lợi nhuận?

SharpeDiễn giải
< 0Lỗ sau khi điều chỉnh rủi ro
0 – 0.5Yếu — gần như không bù được rủi ro
0.5 – 1.0Chấp nhận được với chiến lược theo xu hướng (ví dụ SMA ở trên nằm ở đây)
1.0 – 1.5Tốt
> 1.5Mạnh — nên hoài nghi nếu kỳ backtest ngắn
Sharpe cao trên một backtest ngắn là dấu hiệu đáng ngờ. Sharpe 3.0 trong 6 tháng = chưa tới 130 điểm dữ liệu. Đó là nhiễu, không phải tín hiệu. Hãy đòi ít nhất 2 năm trước khi tin một Sharpe trên 1.5.

Tỷ lệ Sortino — chỉ tính rủi ro chiều giảm

Tỷ lệ Sortino giống Sharpe, nhưng chỉ phạt biến động chiều giảm. Biến động chiều tăng không bị tính là rủi ro. Nó trả lời: mỗi đơn vị biến động xấu đổi được bao nhiêu lợi nhuận?

Với SMA Cross, Sortino (0.72) gần bằng Sharpe (0.77) — nghĩa là biến động của chiến lược khá đối xứng. Một chiến lược có Sortino cao hơn Sharpe rõ rệt thì có những nhịp tăng lớn nhưng drawdown được kiểm soát, và đó là điều đáng mong muốn.

Sortino so với SharpeĐiều đó gợi ý gì
Sortino ≈ SharpeLợi nhuận đối xứng — biến động chiều tăng và chiều giảm tương đương
Sortino >> SharpeLợi nhuận lệch dương — lãi lớn, lỗ nhỏ (lý tưởng)
Sortino << SharpeLợi nhuận lệch âm — lãi nhỏ, thỉnh thoảng lỗ lớn (nguy hiểm)

Drawdown tối đa (MDD) — khoảnh khắc tệ nhất của bạn

Drawdown tối đa là mức sụt giảm lớn nhất từ đỉnh xuống đáy của đường vốn trong kỳ backtest. Nếu vốn đạt đỉnh $100,000 rồi rơi xuống $57,380 trước khi hồi phục, MDD = −42.6%.

MDD quan trọng vì nó đo mức đau bạn phải chịu đựng để bám trụ với chiến lược. Phần lớn mọi người bỏ cuộc từ lâu trước khi nó hồi phục.

Đừng bao giờ phân bổ nhiều vốn hơn mức mà về mặt tâm lý bạn chịu được nếu mất gấp đôi.
Nếu MDD là −42.6%, phân bổ $100K nghĩa là bạn có thể đối mặt với khoản lỗ trên giấy $42,600. Nếu điều đó khiến bạn dừng chiến lược, hãy phân bổ ít hơn.

Tỷ lệ Omega — bức tranh đầy đủ

Tỷ lệ Omega = tổng lợi nhuận trên một ngưỡng ÷ tổng lợi nhuận dưới ngưỡng đó. Ngưỡng thường là 0 (hoà vốn). Khác với Sharpe, Omega nắm được toàn bộ phân bố lợi nhuận, không chỉ trung bình và phương sai.

OmegaDiễn giải
< 1.0Tổng lỗ lớn hơn tổng lãi — không sinh lời
1.0 – 1.1Lãi rất mỏng, dễ vỡ trước chi phí thực tế
1.1 – 1.3Vững
> 1.5Mạnh — hoặc có thể đã overfit

SMA Cross có Omega = 1.04 — chỉ nhỉnh hơn 1.0 một chút. Sau 22% vốn đã trả cho phí trong 4 năm, lợi thế thực tế còn rất mỏng. Điều này là bình thường với chiến lược theo xu hướng; với loại chiến lược này, tỷ lệ Sharpe và Sortino mới là chỉ số chất lượng chính đáng tin hơn.

Năm sai lầm hay gặp nhất khi backtest

1

Lookahead bias: Dùng dữ liệu chưa có tại thời điểm ra quyết định. Mặc định Blave Agent khớp ở giá mở cửa của nến kế tiếp để ngăn điều này (ngoại lệ là những nến mà chính chiến lược đánh dấu exec_at_close — chẳng hạn phiên thanh toán khi hợp đồng tương lai chuyển tháng, sẽ khớp ở giá đóng cửa của chính nến đó), nhưng cách tính chỉ báo tự viết vẫn có thể tạo ra nó — ví dụ tính Z-score bằng trung bình của toàn bộ chuỗi.

2

Bỏ qua giai đoạn khởi động: Các chỉ báo như SMA(100) cần 100 nến trước khi có ý nghĩa. 100 nến đầu tiên phải bị loại khỏi phần đo hiệu suất. Tham số WARMUP của Blave Agent xử lý việc này tự động.

3

Tối ưu trên toàn bộ dữ liệu: Nếu bạn quét tham số bằng tất cả dữ liệu có sẵn rồi báo cáo hiệu suất trên chính dữ liệu đó, bạn đang báo cáo sai số huấn luyện chứ không phải khả năng tổng quát hoá. Luôn giữ lại ít nhất 20–30% dữ liệu để kiểm định ngoài mẫu. (Trên Blave việc đó thực tế làm thế nào, xem Cách kiểm định ngoài mẫu hoạt động.)

4

Bỏ qua phí: Chiến lược btc_sma_cross đã trả 22% vốn cho phí trong 4 năm. Với chiến lược tần suất cao hơn, phí có thể dễ dàng vượt quá alpha. Hãy đặt mức phí theo đúng thị trường bạn giao dịch: FEE = 0.0005 là phí taker 0.05% của hợp đồng tương lai USD-M trên Binance ở bậc VIP0 (maker là 0.02%); còn giao ngay Binance ở bậc thấp nhất tính 0.1% cho cả maker lẫn taker, nên chiến lược giao ngay viết 0.0005 là đang tính thiếu chi phí.

5

Nhầm tổng lợi nhuận với lợi nhuận đã điều chỉnh rủi ro: Một chiến lược lãi 200% với MDD −80% không "tốt hơn" một chiến lược lãi 80% với MDD −15%. Chiến lược đầu sẽ khiến phần lớn người dùng thật hoảng loạn thoát gần đáy.

Những điều các con số này không nói cho bạn

  • Toàn bộ các con số này được tính từ cùng một đoạn lịch sử. Đổi giai đoạn thì con số cũng đổi — nhóm số phía trên là ảnh chụp của một lần chạy, không phải thành tích cố định của chiến lược này.
  • Giai đoạn càng ngắn thì mỗi con số càng bất định. Sharpe 3.0 trong 6 tháng là nhiễu chứ không phải tín hiệu; sự nghi ngờ đó cũng phải dành cho Sortino và Omega, vì chúng ăn cùng một chuỗi lợi nhuận.
  • Tránh hết năm sai lầm ở trên thì thứ bạn có là một backtest trung thực, không phải một chiến lược sinh lời. Câu hỏi tiếp theo sau sự trung thực là “thành tích này có phải may mắn không”, và điều đó phải kiểm riêng.