Mục lục
Nội dung này phục vụ mục đích giáo dục, không phải lời khuyên đầu tư, bảng xếp hạng EA hoặc ngưỡng risk dùng chung.
Trả lời ngắn: Đánh giá EA cần xem năm mặt: kiếm được bao nhiêu, có thể mất bao nhiêu, kết quả có đều không, lệnh được xử lý ra sao và kết quả có giữ được trên dữ liệu khác không. Lợi nhuận ròng hay tỷ lệ lệnh thắng riêng lẻ chưa đủ.
Đọc xong, bạn sẽ hiểu:
- Vì sao một metric dễ đánh lừa.
- Return và drawdown được đọc cùng nhau thế nào.
- Stability khác Robustness ra sao.
- Cách lập scorecard có flag thay vì “điểm đẹp”.
1. Một metric không đại diện chất lượng EA
a. Năm trục, một test passport
Chỉ so report khi EA version, inputs, data window, tick model, costs và initial state tương đương. Sau đó đọc năm trục:
- Return: kết quả tạo ra bao nhiêu.
- Risk: đường đi xấu tới đâu.
- Stability: kết quả có phân bố đều hay tập trung.
- Execution Quality: request/result/cost có vấn đề không.
- Robustness: kết quả có giữ khi đổi sample/assumption hợp lý.
Hình 1 — Một EA chỉ được đọc đủ khi cả năm trục đều có evidence.
b. Rule reject đứng trước score
Một số lỗi làm report không đủ điều kiện chấm:
- logic case fail;
- data leakage;
- passport thiếu;
- report không tái tạo;
- position state không khớp result;
- costs bị bỏ.
Nếu gate đỏ, dừng. Không cộng “điểm profit” để bù lỗi dữ liệu.
c. So táo với táo
EA A +20% với initial 1.000 và EA B +20% với initial 10.000 giống tỷ lệ nhưng có thể khác volume/cost/risk. Win rate 80% với payoff nhỏ khác win rate 40% với payoff lớn. So metric cần cùng định nghĩa, sample và assumptions.
2. Return và Risk: kết quả cùng đường đi
a. Return có mẫu số
Demo: initial equity 1.000, net result +200.
Return = 200 ÷ 1.000 × 100 = 20%
Con số không phải claim. Cần ghi period, currency, deposits/withdrawals, compounding, gross/net costs. Annualization từ sample ngắn có thể phóng đại.
Profit factor, expected payoff và recovery factor là statistics khác. Mỗi cái có công thức riêng; không trộn. MQL5 Tester Statistics liệt kê nhiều property như profit, drawdown và ratios. MQL5 Reference — Tester Statistics
b. Drawdown là rơi từ đỉnh
Drawdown là mức giảm từ peak tới trough sau đó. Demo:
- Peak equity
1.200. - Trough
950. - Absolute drop
250. - Relative drawdown
250 ÷ 1.200 × 100 = 20,83%.
Hình 2 — Drawdown cần cả độ sâu, thời lượng và điểm phục hồi, không chỉ một tỷ lệ.
Drawdown 20% trong hai ngày khác 20% kéo dài mười tháng. Thêm duration, time to recovery và số episode.
c. Balance và equity drawdown
Balance chỉ đổi khi deal được ghi; equity phản ánh floating P/L. Strategy giữ lỗ mở lâu có balance curve đẹp nhưng equity drawdown sâu. Phải biết report dùng loại nào.
Không có drawdown “an toàn phổ quát”. Ngưỡng phụ thuộc mandate, capital, horizon và risk policy. Bài không đề xuất ngưỡng.
d. Return/risk ratio cần context
Recovery factor hoặc return/DD giúp đặt kết quả cạnh downside. Nhưng tỷ lệ cao từ sample nhỏ vẫn yếu. Nếu denominator drawdown bị underestimate do tick/cost assumption, ratio bị thổi.
Kết luận nên là “trong run này, return X đi cùng equity DD Y theo passport Z”, không phải “EA tốt”.
e. Tail loss và recovery không nên bị làm phẳng
Average loss có thể che tail. Ví dụ 99 loss quanh -1 và một loss -50: average nhìn nhỏ hơn nếu sample lớn, nhưng một event cực đoan vẫn quyết định capital path. Hãy xem max loss, percentile, sequence và nguyên nhân.
Recovery cũng cần cơ sở. Sau drawdown 20%, equity phải tăng 25% từ trough mới về peak cũ: 950 → 1.200 là +250, tương đương 26,32% trên 950 trong demo. Mức giảm và mức phục hồi không đối xứng theo phần trăm. Điều này không dự báo thời gian recovery; nó chỉ giúp đọc arithmetic đúng.
3. Stability, Execution và Robustness
a. Stability: phân bố trong sample
Stability hỏi kết quả có trải qua nhiều trade/regime hay phụ thuộc vài điểm.
Demo: tổng profit 200, ba trade lớn đóng góp 140 = 70%. Bỏ ba outlier, phần còn lại chỉ 60.
Hình 3 — Concentration cao cho thấy report nhạy với vài trade, dù tổng profit vẫn dương.
Kiểm theo month/quarter, symbol, direction, session và trade contribution. Không cần mọi bucket dương; cần biết nguồn return.
b. Execution Quality: strategy và hạ tầng gặp nhau
Theo dõi:
- requests/accepted/rejected;
- retcode distribution;
- slippage/deviation giả;
- spread/cost paid;
- duplicate/timeout/retry;
- orphan position/order.
Demo 100 request, 8 reject. Tỷ lệ 8% chưa tự tốt/xấu; phải phân reason. Nếu cả 8 do invalid volume step, đó là bug configuration/execution. Nếu market closed theo expected, classification khác.
c. Robustness: ra khỏi sample chọn
Robustness hỏi behavior giữ tới đâu khi:
- chạy holdout;
- đổi window/regime;
- tăng costs hợp lý;
- thay input quanh baseline;
- dùng tick model phù hợp khác;
- forward demo.
Robust không nghĩa metrics giống hệt. Nó nghĩa conclusion không sụp vì thay assumption nhỏ. Holdout giảm nhẹ khác holdout đổi dấu và tăng DD mạnh.
d. Stability khác Robustness
Stability nhìn phân bố bên trong một run/sample. Robustness nhìn qua nhiều run/sample/assumption. Một run có monthly curve đều vẫn có thể fail holdout. Ngược lại, return theo tháng lồi lõm nhưng behavior giữ qua nhiều regime có thể robust hơn.
e. Regime map thay vì một đường trung bình
Chia sample theo volatility cao/thấp, trend/range, session hoặc cost bucket — nhưng định nghĩa bucket phải được chốt trước. Ta không tạo bucket sau khi thấy kết quả chỉ để giải thích curve.
Ví dụ EA tạo +180 trong regime A và -160 ở B. Tổng +20 che dependency rất mạnh. Flag đúng là REGIME_DEPENDENT, rồi kiểm strategy contract có chấp nhận hay không. Không xóa regime B khỏi report.
Execution cũng nên map theo regime: reject tăng khi session mở, slippage tăng trong data gap? Nếu có, cần operational mitigation và test, không chỉ giảm trade count để làm metric đẹp.
4. Sai lầm, giới hạn và rủi ro
a. Win rate trap
Win rate 90% có thể đi cùng average loss lớn hơn average win nhiều lần. Phải đọc payoff distribution và tail.
Demo 9 win × +1 = +9; 1 loss × -12 = -12; net -3 dù win rate 90%.
b. Metric shopping
Chạy nhiều report rồi chọn metric đẹp nhất là metric shopping. Nếu Profit Factor yếu nhưng win rate đẹp, người bán có thể chỉ show win rate. Cần scorecard định trước.
c. Sample size và dependency
1.000 trade không chắc là 1.000 quan sát độc lập; nhiều trade cùng regime/correlation. Sample size thô cần đi cùng diversity.
Câu chắc chắn: report mô tả sample đã chạy.
Câu có điều kiện: nếu passport, holdout, robustness và execution evidence đều tốt, ta có thể tăng confidence — không guarantee live.
Nếu trước đây bạn coi “nhiều trade = chắc”, cần sửa thành “nhiều independent conditions hơn mới hữu ích”.
d. Backtest-to-live gap
Live có latency, reject, data gap, operational error, provider changes và human intervention. Demo/forward evidence giúp phát hiện một phần gap, không xóa nó.
Testing Report cung cấp graph, trades/deals và statistics, nhưng reviewer vẫn phải đọc journal/log và assumptions. MetaTrader 5 Help — Testing Report
e. Multiple comparisons
Nếu thử 100 EA/preset rồi chọn top 1, top result có thể cao chỉ vì chance. Đây là selection bias. Phải ghi số candidate đã thử, criterion chọn và correction/holdout độc lập.
Một report đứng riêng không kể search process. EA “best” trong 500 pass cần scrutiny khác baseline được định trước. Không có con số correction đơn giản phù hợp mọi case, nhưng việc công bố search space là gate tối thiểu.
Ngoài ra, version drift làm comparison vô nghĩa: EA A dùng data update mới, EA B dùng cache cũ. Re-run cùng environment hoặc ghi rõ không comparable.
e. Khi phải reject
Reject evidence nếu:
- drawdown type không rõ;
- deposits/withdrawals lẫn return;
- outlier concentration bị giấu;
- execution rejects không phân loại;
- holdout được tune;
- metric definition không nhất quán;
- không có raw trades/log.
5. Checklist và scorecard 15 phút
a. Checklist theo thứ tự
- Gate passport/data/logic.
- Ghi return period/mẫu số/cost.
- Ghi equity/balance DD, depth/duration/recovery.
- Phân trade contribution.
- Phân execution outcomes.
- So development/holdout.
- Stress cost/input/window.
- Ghi uncertainty và missing evidence.
- Đặt flag, không rating cảm tính.
- Quyết định reject/retest/research tiếp.
b. Bài tập
Dùng Sheets/giấy, 10–15 phút; không account/tiền thật.
Mẫu đối chiếu đã điền
| Trục | Evidence giả | Flag |
|---|---|---|
| Return | +200 trên 1000 | context needed |
| Risk | DD 250 từ peak 1200 | 20,83% |
| Stability | 70% profit từ 3 trade | concentration |
| Execution | 8 reject / 100 request | investigate |
| Robustness | holdout giảm mạnh | fragile |
Không cộng thành 72/100. Flag concentration, investigate, fragile cần xử lý trước. Kết quả mong đợi là danh sách evidence cần thêm.
Thêm cột Next evidence:
- Return: period/cost breakdown.
- Risk: duration/recovery.
- Stability: contribution by month/regime.
- Execution: reject reasons.
- Robustness: untouched holdout + cost stress.
Sau 15 phút, output phải là review queue, không phải phán quyết mua/dùng EA.
c. Điểm dừng
Dừng nếu raw trade/log thiếu hoặc run không comparable. Không suy từ screenshot curve.
6. Tổng kết
a. Năm ý chính
- Đánh giá EA cần năm trục, không một metric.
- Return phải đọc cùng drawdown path.
- Stability nhìn concentration trong sample.
- Execution Quality nối strategy với result thật.
- Robustness cần holdout/stress/forward evidence.
b. Câu hỏi tự kiểm tra
- Vì sao win rate 90% vẫn có thể net âm?
- Relative DD demo được tính thế nào?
- Stability khác Robustness ở đâu?
- Khi holdout đã tune, flag gì?
c. Gợi ý đáp án
Xem gợi ý câu 1
Average loss có thể lớn hơn tổng win; xem demo 9×1 và 1×-12. Xem lại mục 4.
Xem gợi ý câu 2
(1.200−950)/1.200 = 20,83%. Xem lại mục 2.
Xem gợi ý câu 3
Stability trong một sample; Robustness qua sample/assumption. Xem lại mục 3.
Xem gợi ý câu 4
Holdout invalid/data leakage; không dùng làm evidence ngoài mẫu. Xem lại mục 3 và mục 4.
d. Thuật ngữ cần nhớ
| Thuật ngữ | Giải thích ngắn |
|---|---|
| Return | Kết quả so với mẫu số đã khai báo. |
| Drawdown | Mức giảm từ peak tới trough. |
| Stability | Mức phân bố kết quả trong sample. |
| Execution Quality | Chất lượng request/result/cost. |
| Robustness | Khả năng giữ conclusion qua assumption khác. |
| Concentration | Kết quả phụ thuộc ít trade/bucket. |
| Outlier | Quan sát cực đoan ảnh hưởng mạnh. |
| Holdout | Dữ liệu không dùng chọn rule. |
| Metric shopping | Chỉ chọn metric đẹp để kể chuyện. |
e. Nguồn tham khảo
- MQL5 Reference — Tester Statistics
- MetaTrader 5 Help — Testing Report
- MetaTrader 5 Help — Strategy Testing
Bài trước: Backtest EA là gì? #10. Bài tiếp theo: Các chiến lược EA phổ biến #12.
Nội dung này phục vụ mục đích giáo dục; không phải lời khuyên đầu tư, xếp hạng EA hoặc ngưỡng risk áp dụng chung.
Bài tiếp theo