Bài 4.4 Chặng 4: Xây hệ thống & thực hành
Backtest — chạy thử công thức trên dữ liệu quá khứ
Backtest là đem setup chạy thử trên biểu đồ quá khứ để biết nó có kỳ vọng dương không — miễn là bạn không nhìn trộm đáp án và không "học tủ".
Học xong bài này bạn sẽ
- Backtest thủ công được một setup bằng Bar Replay trên TradingView
- Tính được kỳ vọng từ kết quả backtest, có trừ phí và trượt giá
- Nhận ra dấu hiệu overfitting và biết cách kiểm tra trên dữ liệu chưa dùng
Bạn đã có setup, có kế hoạch, có nhật ký. Câu hỏi tiếp theo rất tự nhiên: công thức này có thật sự kiếm được tiền không?
Có hai cách tìm câu trả lời. Cách thứ nhất: trade thật vài tháng rồi xem — tốn tiền, tốn thời gian. Cách thứ hai: đem công thức chạy thử trên dữ liệu quá khứ, xem nếu ngày xưa bạn làm đúng như vậy thì kết quả ra sao. Cách thứ hai gọi là backtest, và bài này dạy bạn làm nó cho đúng.
Giải thích
Backtest là áp dụng một setup đã viết rõ lên dữ liệu giá quá khứ, ghi lại từng lệnh nó tạo ra, rồi tính kết quả bằng R. Có hai cách:
- Thủ công bằng Bar Replay (TradingView): cho nến chạy từng cây như đang xem trực tiếp, tự quyết định vào lệnh. Chậm, nhưng luyện “mắt nhìn” cực tốt. Người mới nên bắt đầu ở đây.
- Tự động bằng Strategy Tester + Pine Script (TradingView) hoặc Python: viết setup thành code, máy chạy hàng nghìn nến trong vài giây. Trợ lý AI có thể giúp bạn viết code Pine, nhưng bạn vẫn phải hiểu từng dòng nó làm gì.
Các bước backtest bằng Bar Replay
- Mở biểu đồ, chọn đúng khung thời gian trong kế hoạch.
- Bấm nút Replay (biểu tượng tua lại) và chọn một điểm trong quá khứ — phần biểu đồ phía sau bị che đi.
- Cho nến chạy từng cây. Mỗi khi setup xuất hiện, ghi vào bảng: giá vào, cắt lỗ, chốt lời.
- Chạy tiếp cho đến khi lệnh chạm cắt lỗ hoặc chốt lời, ghi kết quả bằng R.
- Làm ít nhất 50–100 lệnh, trải qua nhiều giai đoạn: tăng, giảm, đi ngang.
- Tính kỳ vọng. Kỳ vọng âm → sửa setup. Không có chuyện “trade thật thì sẽ khác”.
Ba cái bẫy của backtest
1. Nhìn trộm đáp án. Lỡ kéo biểu đồ sang phải, thấy giá sau đó tăng, rồi “à, chỗ này đúng là setup”. Backtest kiểu đó luôn đẹp và luôn sai. Luôn dùng Replay, không bao giờ backtest trên biểu đồ đã thấy hết.
2. Quên chi phí. Phí giao dịch, thuế, spread, trượt giá (khớp lệnh tệ hơn giá dự kiến) đều ăn vào kết quả. Với setup lời ít mỗi lệnh, chi phí có thể biến lãi thành lỗ.
3. Học tủ (overfitting). Bạn chỉnh tham số liên tục — RSI 30 không đẹp thì thử 27, MA50 không đẹp thì thử MA37, thêm điều kiện “chỉ vào thứ Ba” — cho đến khi kết quả quá khứ đẹp lung linh. Bạn không tìm ra quy luật thị trường; bạn chỉ học thuộc đáp án của một đề thi đã qua.
Cách phòng học tủ:
- Giữ setup đơn giản, ít tham số, dùng các giá trị phổ biến (MA20, MA50, RSI 30/70).
- Chia dữ liệu làm hai. Ví dụ dùng 2 năm đầu để xây và chỉnh setup, rồi “khóa” lại, chạy thử một lần trên năm thứ ba mà bạn chưa đụng tới — giống làm một đề thi chưa từng thấy.
- Nếu kết quả trên phần dữ liệu mới tệ hơn hẳn, đó là dấu hiệu học tủ.
Ví dụ bằng số
Hùng backtest setup C trên cổ phiếu và crypto khung ngày, tổng cộng 60 lệnh, qua cả giai đoạn tăng, giảm và đi ngang:
- Thắng: 24 lệnh × trung bình +1,9R
- +45,6R
- Thua: 36 lệnh × −1R
- −36R
- Tổng trước chi phí
- +9,6R
- Kỳ vọng trước chi phí: 9,6R ÷ 60
- +0,16R/lệnh
- Chi phí ước tính: 0,05R × 60 lệnh
- −3R
- Kỳ vọng sau chi phí: 6,6R ÷ 60
- +0,11R/lệnh
Tỷ lệ thắng chỉ 40% nhưng kỳ vọng vẫn dương nhờ lời trung bình gần gấp đôi lỗ. Đây là kết quả quá khứ, không phải lời hứa cho tương lai.
Rồi Hùng thử “tối ưu” thêm: đổi RSI 30 thành 27, chỉ vào lệnh khi khối lượng gấp 1,7 lần trung bình, bỏ các tháng 6–8. Kết quả:
| Phiên bản (kỳ vọng sau chi phí) | Dữ liệu dùng để chỉnh (2 năm đầu) | Dữ liệu chưa dùng (năm thứ ba) |
|---|---|---|
| Setup C gốc | +0,12R/lệnh | +0,09R/lệnh |
| Setup C “tối ưu” | +0,60R/lệnh | −0,20R/lệnh |
Bản gốc giữ được phong độ trên đề mới. Bản “tối ưu” đẹp gấp năm lần trên đề cũ, gặp đề mới thì thua. Đó chính là học tủ.
Thử trả lời Backtest 60 lệnh cho kỳ vọng −0,1R. Bạn nghĩ: 'Lúc trade thật mình sẽ chọn lệnh kỹ hơn, chắc sẽ ổn.' Suy nghĩ này đúng không? Xem đáp án
Không đúng. Trade thật thường tệ hơn backtest chứ không tốt hơn: có phí, có trượt giá, có cảm xúc. Nếu “chọn kỹ hơn” là một quy tắc, hãy viết nó thành điều kiện cụ thể trong setup rồi backtest lại. Nếu không viết ra được, đó chỉ là hy vọng. Kỳ vọng âm nghĩa là sửa setup (hoặc đổi setup), chưa đem tiền ra thử.
Sai lầm hay gặp
- Quá ít lệnh. Backtest 10 lệnh thắng 7 rồi kết luận “setup thắng 70%”. Với 10 lệnh, may rủi còn lớn hơn kỹ năng; cần ít nhất 50 lệnh.
- Chỉ test một giai đoạn. Setup mua theo xu hướng test trên năm thị trường tăng mạnh thì đẹp là đương nhiên. Phải test cả lúc giảm và đi ngang.
- Tinh chỉnh đến khi đẹp. Mỗi lần chỉnh một tham số rồi chạy lại là một lần tiến gần tới học tủ. Chỉnh ít, chỉnh có lý do, và luôn kiểm tra trên dữ liệu chưa dùng.
Thực hành ngay
- Mở biểu đồ khung ngày của một mã bạn quen, thêm các chỉ báo setup của bạn cần (vd: MA20, MA50 cho setup A).
- Bấm Replay, chọn một điểm cách hiện tại khoảng 2–3 năm.
- Cho nến chạy từng cây bằng nút tiến tới (Forward). Mỗi khi setup xuất hiện, ghi vào trang tính “Backtest” trong file nhật ký: vào, cắt lỗ, chốt lời, kết quả R.
- Làm 20 lệnh đầu tiên hôm nay. Những buổi sau làm tiếp cho đủ 50–100 lệnh, trên vài mã khác nhau.
- Khi đủ lệnh, nhập tỷ lệ thắng, lời và lỗ trung bình vào máy tính kỳ vọng để xem kỳ vọng mỗi lệnh.
Tóm tắt
Backtest là luyện đề các năm trước: chạy setup trên dữ liệu quá khứ bằng Bar Replay, đủ 50–100 lệnh, trừ chi phí, rồi tính kỳ vọng. Cẩn thận ba cái bẫy: nhìn trộm, quên chi phí, và học tủ. Bài tiếp theo: paper trading và tài khoản demo — bước thử công thức trong thời gian thực, trước khi dùng tiền thật.
Kiểm tra cuối bài
Q&A: 5 câu hỏi
Trả lời hết rồi bấm Nộp bài. Đúng từ 4/5 câu trở lên là hoàn thành bài. Mỗi câu đều có giải thích sau khi nộp — sai cũng là một cách học.
0/5