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ư hoặc tín hiệu giao dịch.
Trả lời ngắn: Backtest chạy bộ luật trên dữ liệu quá khứ để tạo kết quả giả định. Forward Test khóa bộ luật rồi quan sát nó xử lý dữ liệu mới theo thời gian. Backtest kiểm ý tưởng qua lịch sử; Forward Test kiểm hệ thống vận hành hôm nay. Cả hai không bảo đảm lợi nhuận.
Đọc xong, bạn sẽ hiểu:
- Backtest, Forward Test, out-of-sample và paper trading khác nhau ở đâu.
- Vì sao hai kết quả lệch nhau dù dùng cùng một bộ luật.
- Cách điền Test Handoff Card bằng dữ liệu giả, chưa dùng tiền thật.
1. Backtest và Forward Test khác nhau ở đâu?
a. Backtest giống xem lại camera cũ
Ruleset là bộ luật cố định nói khi nào đề xuất hành động, vào, thoát và tính chi phí. Backtest chạy ruleset trên historical data, tức dữ liệu đã có khi phép thử bắt đầu.
Máy phát lại nhiều năm trong vài phút. QuantConnect mô tả backtesting là mô phỏng thuật toán trên historical data QuantConnect — Backtesting. Bẫy là người nghiên cứu đã thấy cả cuộn phim: code đọc giá sớm hoặc tham số sửa sau khi xem kết quả đều làm sai phép thử.
b. Forward Test đứng chờ dữ liệu mới đến
Event là một mẩu dữ liệu mới; feed là luồng chở các mẩu đó. Forward Test chạy ruleset đã khóa khi event xuất hiện. Hệ thống phải chờ feed và giữ đúng trạng thái.
Trong bài này, Forward Test dùng paper trading: dữ liệu mới theo thời gian thật, nhưng vốn và khớp lệnh được mô phỏng. Order (lệnh) là yêu cầu giao dịch; fill là kết quả khớp. Order paper không đi ra sàn QuantConnect — Paper Trading.
c. Bảng so sánh nhanh
| Tiêu chí | Backtest | Forward Test |
|---|---|---|
| Dữ liệu | Quá khứ đã có sẵn | Dữ liệu mới đang đến |
| Đồng hồ | Có thể chạy rất nhanh | Chạy theo thời gian vận hành |
| Ruleset | Dễ bị sửa sau khi xem kết quả | Phải khóa trước khi bắt đầu |
| Fill | Mô phỏng theo mô hình tester | Paper fill vẫn mô phỏng; live fill mới là thực |
| Lặp lại | Có thể chạy lại cùng đoạn | Không thể tua lại “lần đầu thấy dữ liệu” |
| Mẫu | Gom nhiều giao dịch nhanh | Tích lũy chậm theo tần suất thật |
| Bắt lỗi tốt | Logic, dữ liệu, giả định chi phí | Feed, clock, state, restart, order lifecycle |
| Câu hỏi chính | Ý tưởng có sống qua lịch sử không? | Hệ thống có chạy đúng luật lúc này không? |
Out-of-sample là đoạn lịch sử không dùng để chọn hoặc tinh chỉnh ruleset. Nó vẫn là Backtest, chưa phải Forward Test.
Hình 1 — Backtest lọc ý tưởng bằng lịch sử; Forward Test kiểm cách hệ thống chạy khi dữ liệu mới đến.
2. Hai bài thi bắt những lỗi khác nhau như thế nào?
a. Backtest kiểm logic và hành vi dài hơn
Backtest giúp loại ý tưởng vô lý. Ruleset đường trung bình tạo 120 giao dịch giả định trong ba năm để kiểm chuỗi thua và kết quả sau phí. Signal là kết quả điều kiện đề xuất hành động; nó chưa phải order hay fill.
Tester có giới hạn: MetaTrader 5 có thể sinh tick thay thế khi dữ liệu thiếu MQL5 — Testing Trading Strategies. Cùng phần mềm chưa chắc cùng điều kiện.
b. Forward Test kiểm đường ống vận hành
Forward Test lộ lỗi feed, warm-up (nạp dữ liệu ban đầu), restart và order lặp. Có signal nhưng order vẫn có thể bị từ chối, trễ hoặc chỉ khớp một phần.
Ví dụ có 12 signal: một signal trễ 9 giây; một order dự kiến 100,00 nhưng paper fill 100,15. Slippage là chênh lệch giá dự kiến với giá fill, ở đây 0,15%. Latency là thời gian event hoặc order đi qua hệ thống.
c. Đừng chấm chỉ bằng lời hay lỗ
Backtest có lời còn Forward Test lỗ sau 12 giao dịch chưa đủ chứng minh ruleset hỏng. Mẫu có thể nhỏ, thị trường khác hoặc bug làm mất signal. Forward có lời cũng chưa chứng minh lợi thế bền vững.
Chắc chắn: hai phép thử dùng đồng hồ khác nhau. Có điều kiện: độ lệch có thể đến từ thị trường, mẫu hoặc vận hành. Không có log thì chưa biết.
d. Reconciliation là đối chiếu từng dòng
Reconciliation là đối chiếu event, signal và fill dự kiến với quan sát trên cùng ngày:
- Hai bên có cùng event và timestamp không?
- Signal và order có cùng hướng, kích thước không?
- Expected fill khác observed fill bao nhiêu?
- Phí và slippage có cùng cách tính không?
QuantConnect dùng đường OOS để so với live và tìm sai khác từ data, mô hình hoặc nơi nhận lệnh QuantConnect — Reconciliation. Lời/lỗ là dòng cuối, không phải chỗ điều tra đầu tiên.
3. Vì sao Backtest đẹp nhưng Forward Test xấu?
a. Năm tầng tạo ra độ lệch
- Data: lịch sử khác feed live; timestamp, bar close hoặc event thiếu.
- Signal: code đọc tương lai, warm-up hoặc cách làm tròn thời gian khác.
- Fill: tester khớp ngay; paper/live có chênh giá mua–bán, trễ hoặc từ chối.
- Cost: phí và slippage bị bỏ quên hay tính quá nhẹ.
- Result: sai khác phía trên dồn vào đường vốn.
Ví dụ nến 10:00 chỉ hoàn tất lúc 10:01. Backtest đọc giá đóng ngay 10:00 là dùng tương lai; Forward phải chờ nên signal đến khác lúc.
Hình 2 — Đừng vội sửa tham số khi chưa biết độ lệch bắt đầu từ data, signal hay fill.
b. Thị trường và kích thước mẫu cũng đổi
Regime là môi trường như có xu hướng, đi ngang hoặc biến động mạnh. Backtest ba năm có thể chứa nhiều regime; Forward ngắn chỉ gặp đoạn yên ắng. Sample size là số quan sát thực có. Một thìa canh chưa đại diện cả nồi; cũng không có ngưỡng dùng chung mọi ruleset.
Overfitting là ruleset khớp quá sát lịch sử và yếu trên dữ liệu mới. Thử nhiều biến thể rồi giữ bản đẹp nhất làm nguy cơ tăng Bailey et al. — Probability of Backtest Overfitting.
c. Forward paper vẫn chưa phải thực tế đầy đủ
Paper không tái tạo hết thanh khoản, tác động của lệnh lên giá hay kỷ luật khi tiền thật chịu rủi ro. NFA cảnh báo kết quả giả định không đại diện giao dịch thực và không phản ánh đủ trượt giá hoặc rủi ro tài chính NFA — Hypothetical Performance Results. Cả hai phép thử đều không bảo đảm lợi nhuận.
4. Quy trình kiểm tra: khóa luật trước, so lệch sau
- Viết Test Contract. Ghi mã giao dịch, khung thời gian, luật, chi phí và stop rule.
- Tách dữ liệu theo thời gian. Xây luật ở development; giữ đoạn out-of-sample để kiểm.
- Chạy Backtest có ma sát. Thêm phí, spread, slippage; lưu code hash và config.
- Freeze ruleset. Sửa luật thì mở test mới, không nối kết quả cũ.
- Forward bằng paper/demo. Log event, signal, order, fill, reject và restart.
- Reconcile cùng cửa sổ. Phân loại gap theo data, signal, fill, cost hoặc state.
- Quyết định.
Continue,Extendnếu mẫu nhỏ, hoặcStop + investigatekhi gap chưa rõ.
Đứng ngoài nếu ruleset mơ hồ, Backtest không có chi phí, Forward bị sửa giữa chừng hoặc thiếu timestamp. Nếu restart làm mất state và gửi lại order, hãy dừng điều tra; đừng tối ưu tham số để che bug.
5. Bài tập 15 phút: điền Test Handoff Card
a. Công cụ và dữ liệu giả
Mở Google Sheets hoặc LibreOffice Calc. Tạo hai ledger tám dòng: expected từ Backtest và observed từ Forward paper. Dùng các cột event_time, signal, order, fill, latency, gap_type, note.
Forward giả có bảy signal thay vì tám: một thiếu, một trễ 9 giây, một fill lệch 0,15% và một restart. Đây không phải dữ liệu thị trường.
b. Mẫu đối chiếu đã điền
| Trường | Mẫu tham khảo |
|---|---|
| Ruleset | v1.0 — đã khóa trước Forward Test |
| Data clock | event time + received time |
| Backtest window | 8 event demo |
| Forward start | Sau khi lưu code hash v1.0 |
| Cost model | Phí 0,05% + slippage quan sát |
| Expected / observed | 8 / 7 signal |
| Divergence | 1 missing, 1 trễ 9 giây, 1 fill lệch 0,15% |
| Stop rule | Missing signal hoặc state mất sau restart |
| Owner | Người học đối chiếu log |
| Decision | STOP + INVESTIGATE — chưa sửa tham số |
Hình 3 — Mẫu bàn giao khóa ruleset và ghi rõ lý do dừng trước khi dùng tiền thật.
c. Tự kiểm
Che cột mẫu rồi tự điền. Chỉ ghi “Forward lỗ” mà không chỉ được event lệch thì chưa đạt. Dừng ở card: chưa kết nối broker, chưa nhập API key và chưa dùng tiền thật.
6. Tổng kết
a. Năm ý chính
- Backtest dùng dữ liệu quá khứ; Forward Test quan sát dữ liệu mới theo đồng hồ vận hành.
- Out-of-sample historical test vẫn là Backtest; paper trading vẫn dùng fill mô phỏng.
- Backtest bắt lỗi ý tưởng và giả định; Forward Test bắt lỗi feed, clock, state và order lifecycle.
- Khi hai kết quả lệch, reconcile từ data tới signal, fill, cost rồi mới nhìn P&L.
- Khóa ruleset trước Forward Test; có gap chưa giải thích thì dừng điều tra, không sửa tham số giữa bài.
b. Câu hỏi tự kiểm tra
- Vì sao một đoạn historical out-of-sample chưa phải Forward Test?
- Signal và fill khác nhau ở đâu?
- Backtest và Forward Test lệch thì nên kiểm tầng nào trước?
- Forward paper có chứng minh hệ thống sẽ có lời bằng tiền thật không?
c. Gợi ý đáp án
Xem gợi ý câu 1
Vì toàn bộ dữ liệu của đoạn đó đã thuộc quá khứ và có thể chạy lại nhanh; Forward Test chờ dữ liệu mới đến theo thời gian. → xem mục 1.
Xem gợi ý câu 2
Signal chỉ đề xuất hành động; fill là kết quả order được khớp hoặc mô phỏng khớp. → xem mục 2.
Xem gợi ý câu 3
Kiểm data trước, rồi signal, fill, cost và state; P&L là kết quả cuối. → xem mục 2 và 3.
Xem gợi ý câu 4
Không. Paper vẫn mô phỏng vốn/fill và không phản ánh đủ thanh khoản, market impact hay kỷ luật khi tiền thật chịu rủi ro. → xem mục 3.
d. Thuật ngữ cần nhớ
| Thuật ngữ | Giải thích ngắn |
|---|---|
| Ruleset | Bộ luật cố định về signal, order, thoát và chi phí. |
| Backtest | Chạy ruleset trên dữ liệu đã xảy ra. |
| Forward Test | Chạy ruleset đã khóa khi dữ liệu mới đến. |
| Out-of-sample | Lịch sử không dùng để chọn hoặc tinh chỉnh luật. |
| Paper trading | Dữ liệu mới với vốn và fill mô phỏng. |
| Signal | Kết quả điều kiện đề xuất một hành động. |
| Fill | Kết quả order được khớp hoặc mô phỏng khớp. |
| Slippage | Chênh lệch giữa giá dự kiến và giá fill. |
| Reconciliation | Đối chiếu expected với observed từng event. |
| Overfitting | Ruleset khớp lịch sử quá sát và yếu trên dữ liệu mới. |
e. Nguồn tham khảo
- QuantConnect — Backtesting Getting Started
- QuantConnect — Paper Trading
- QuantConnect — Live Reconciliation
- MQL5 — Testing Trading Strategies
- NFA — Use of Promotional Material Containing Hypothetical Performance Results
- Bailey et al. — The Probability of Backtest Overfitting
- CFA Institute — Backtesting & Simulation
Đọc lại Kiến trúc dữ liệu thời gian thực cho AI Trading và Backtest là gì trong AI Trading?, hoặc quay về AI Trading là gì?. Bài #20 sẽ mở rộng sang Walk-forward Analysis, nơi nhiều cửa sổ train và test được cuộn theo thời gian.
Chọn đúng bài trong lộ trình
Bài này tập trung vào backtest vs forward test — so sánh hai phép kiểm thử và quy trình handoff. Nếu bạn cần bức tranh chung trước khi đi sâu, hãy bắt đầu từ AI Trading là gì? Hướng dẫn từ nền tảng đến kiểm định. Các bước liên quan trực tiếp là Backtest là gì trong AI Trading, Walk-forward Analysis là gì và Paper Trading có chứng minh hệ thống hiệu quả không.
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ư hoặc tín hiệu giao dịch. Mọi thị trường đều có rủi ro mất vốn.
Bài tiếp theo