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ủ".

≈ 18 phút Chứng khoán VNCryptoForex & vàngCổ phiếu Mỹ Đã học

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

  1. Mở biểu đồ, chọn đúng khung thời gian trong kế hoạch.
  2. 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.
  3. 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.
  4. 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.
  5. Làm ít nhất 50–100 lệnh, trải qua nhiều giai đoạn: tăng, giảm, đi ngang.
  6. Tính kỳ vọng. Kỳ vọng âm → sửa setup. Không có chuyện “trade thật thì sẽ khác”.
Biểu đồ đi ngang giữa vùng hỗ trợ quanh 48 và vùng kháng cự quanh 52. Ba lệnh mua ở gần hỗ trợ: lệnh 1 và lệnh 2 thắng khi giá lên kháng cự, lệnh 3 thua khi giá phá xuống dưới hỗ trợ về khoảng 46. 46 48 50 52 Kháng cự Hỗ trợ L1 thắng L2 thắng L3 thua
Minh họa Backtest setup C (giao dịch trong biên độ) bằng Bar Replay: lệnh 1 và 2 mua gần hỗ trợ, chốt gần kháng cự; lệnh 3 bị cắt lỗ khi giá phá thủng biên độ. Một backtest thật cần 50–100 lệnh như thế này, không phải 3.

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

TradingView (Bar Replay) ≈ 45 phút
  1. 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).
  2. Bấm Replay, chọn một điểm cách hiện tại khoảng 2–3 năm.
  3. 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.
  4. 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.
  5. 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.

  1. Câu 1 Backtest 50 lệnh: 20 lệnh thắng trung bình +2R, 30 lệnh thua −1R. Chi phí (phí, thuế, trượt giá) ước tính 0,05R mỗi lệnh. Kỳ vọng sau chi phí là bao nhiêu R mỗi lệnh?
  2. Câu 2 Bạn có hai phiên bản setup. Bản gốc cho +0,10R/lệnh trên dữ liệu dùng để chỉnh và +0,08R trên năm dữ liệu chưa dùng. Bản "tối ưu" (đổi RSI 30 thành 27, thêm hai điều kiện) cho +0,55R trên dữ liệu dùng để chỉnh nhưng −0,15R trên dữ liệu chưa dùng. Nên tin bản nào?
  3. Câu 3 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". Bạn nên làm gì?
  4. Câu 4 Một người backtest 10 lệnh, thắng 7, rồi kết luận "setup này thắng 70%". Vấn đề lớn nhất là gì?
  5. Câu 5 Vì sao bài học khuyên luôn backtest bằng Bar Replay thay vì trên biểu đồ đã hiện đầy đủ?

0/5 câu đã trả lời