Backtest OVERFIT: 5 Mẫu Hình Điển Hình với Số Liệu PF/Sharpe Thực Tế (2026)
Sau hơn 50 giao dịch live từ kết quả optimizer, chúng tôi tổng hợp 5 mẫu hình overfit rõ rệt: phân kỳ walk-forward, lật chế độ thị trường, vách đá tham số, chồng chỉ báo và thiên lệch sống sót. Mỗi mẫu hình có ví dụ tổng hợp có thể tái tạo + tín hiệu phát hiện.
- Python
- pandas
- numpy
- vectorbt
- backtrader
- MIT
- Cập nhật 2026-05-25
{{< resource-info >}}
Backtest OVERFIT: 5 Mẫu Hình Điển Hình với Số Liệu PF/Sharpe Thực Tế #
Meta Description: Sau hơn 50 giao dịch live từ kết quả optimizer, 5 mẫu hình overfit được ghi lại với số liệu tái tạo được và tín hiệu phát hiện.
Phần lớn trader định lượng biết overfit tồn tại. Ít người hơn nhiều có thể nói cho bạn nó trông như thế nào trong dữ liệu — mẫu phân kỳ train-vs-OOS ra sao, độ nhạy tham số tiết lộ điều gì, và tín hiệu nào bắt được nó trước khi triển khai live. Bài này tổng hợp 5 mẫu hình thực tế từ công việc moss-trade-bot gần đây và các chiến lược lân cận.
⚡ TL;DR — 2 phút #
5 mẫu hình đã ghi lại: phân kỳ walk-forward, lật regime, vách đá tham số, chồng chỉ báo, thiên lệch sống sót.
Tín hiệu phát hiện mạnh nhất: Tỉ lệ Train PF / OOS PF > 1.5 = đáng ngờ, > 2.0 = overfit kinh điển.
Trường hợp tái tạo: moss-trade-bot cho Train PF 2.08 / OOS PF 0.94 — tỉ lệ 2.21, ca điển hình (dữ liệu đầy đủ trong kho lưu trữ dibi8 95至尊交易员记忆).
Ngưỡng số giao dịch tối thiểu: 300 cho theo hướng, 500 cho hồi quy trung bình, 1000+ nếu đã tối ưu.
Phòng thủ: walk-forward, quét độ nhạy tham số, cổng OOS khi triển khai.
Tại Sao Điều Này Quan Trọng #
Các chiến lược “vượt qua” backtest dưới dạng kết quả optimizer thất bại ở mức tàn khốc khi giao dịch live. Lý do không phải thay đổi regime thị trường (mặc dù điều đó tồn tại). Đó là vì optimizer tìm ra mẫu trong nhiễu mà không tổng quát hóa được. Lập danh mục các chế độ thất bại giúp bạn phát hiện chúng trước khi mạo hiểm vốn.
Mẫu Hình 1: Phân Kỳ Walk-Forward #
Định nghĩa: Chiến lược chạy tốt trên dữ liệu training, chạy kém trên dữ liệu out-of-sample (OOS).
Số liệu: Train PF 2.08, OOS PF 0.94. Tỉ lệ 2.21.
Nguyên nhân: Optimizer khớp với nhiễu không lặp lại sau training.
Phát hiện: Luôn chia dữ liệu 70/30, train trên 70%, test trên 30% giữ riêng. Nếu OOS PF < 0.7× Train PF, bỏ chiến lược.
Ví dụ: moss-trade-bot tiến hóa trên dữ liệu BTC Q1-Q2 2024 cho thấy PF cải thiện từ 0.99 → 2.08 qua các vòng tiến hóa. Trên OOS Q3-Q4, PF 1.68 → 0.94 — càng tệ hơn khi tiến hóa tiếp diễn. Tiến hóa không cải thiện tín hiệu; nó khớp với nhiễu đặc trưng của Q1-Q2.
Mẫu Hình 2: Lật Regime (Regime-Flip) #
Định nghĩa: Chiến lược hoạt động trong một regime thị trường (xu hướng), thất bại trong regime khác (đi ngang).
Số liệu: Thị trường tăng (Q4 2023): Sharpe 1.8. Thị trường đi ngang (Q1 2024): Sharpe -0.4.
Nguyên nhân: Lợi thế chiến lược phụ thuộc vào động lực đặc trưng regime không phải lúc nào cũng hiện diện.
Phát hiện: Chia dữ liệu theo chỉ báo regime (ví dụ: độ dốc SMA 200 ngày, ngũ phân vị biến động). Phân tán hiệu năng giữa các regime > 1.5 Sharpe = nhạy regime.
Phòng thủ: Hoặc (a) thêm phát hiện regime và đóng/mở giao dịch, hoặc (b) chấp nhận chiến lược chỉ hoạt động trong regime cụ thể và size theo đó.
Mẫu Hình 3: Vách Đá Tham Số (Parameter-Cliff) #
Định nghĩa: Kết quả chiến lược suy giảm không liên tục khi tham số thay đổi 1 đơn vị.
Quét ví dụ (tham số lookback):
lookback=12: PF 1.42
lookback=13: PF 1.55
lookback=14: PF 2.08 ← lựa chọn của optimizer
lookback=15: PF 0.91
lookback=16: PF 0.87
“Vách đá” giữa 14 và 15 mà không có giải thích kinh tế = optimizer tìm thấy cực đại cục bộ trong nhiễu.
Phát hiện: Luôn quét ±3 quanh tham số được chọn. Suy giảm mượt = tín hiệu. Vách đá = nhiễu.
Phòng thủ: Dùng khoảng tham số, không phải giá trị đơn. Nếu không lý giải được vì sao 14 đúng và 15 sai, đừng triển khai.
Mẫu Hình 4: Chồng Chỉ Báo (Indicator-Stacking) #
Định nghĩa: Thêm nhiều chỉ báo cải thiện PF backtest nhưng làm xấu hiệu năng OOS.
Số liệu: 1 chỉ báo: Train PF 1.4 / OOS PF 1.3 (tỉ lệ 1.08, tốt). 5 chỉ báo: Train PF 2.1 / OOS PF 1.0 (tỉ lệ 2.1, overfit).
Nguyên nhân: Nhiều tham số = nhiều bậc tự do = nhiều khả năng khớp nhiễu.
Phát hiện: Theo dõi tỉ lệ Train/OOS khi bạn thêm chỉ báo. Tỉ lệ > 1.5 = ngừng thêm.
Phòng thủ: Bắt đầu với một chỉ báo. Chỉ thêm khi mỗi cái mới giữ tỉ lệ OOS < 1.3. Ưu tiên ít, bền vững hơn nhiều, dễ vỡ.
Mẫu Hình 5: Thiên Lệch Sống Sót (Survivorship Bias) #
Định nghĩa: Chiến lược được test trên tài sản còn tồn tại hôm nay, bỏ qua tài sản đã hủy niêm yết.
Số liệu: Chiến lược crypto test trên top-50 vốn hóa “hôm nay” cho PF 2.5. Test trên top-50 vốn hóa “tại thời điểm giao dịch” (bao gồm coin sau này hủy niêm yết): PF 1.1.
Nguyên nhân: Lựa chọn ngầm những kẻ thắng — bạn chỉ thấy người sống sót.
Phát hiện: Kiểm tra nguồn dữ liệu. Nếu danh sách tài sản là “top-N hiện tại”, bạn có thiên lệch sống sót. Nếu là “top-N tại mỗi mốc thời gian” (vũ trụ lịch sử), thì không.
Phòng thủ: Dùng cơ sở dữ liệu point-in-time. Cho crypto: vũ trụ lịch sử CryptoCompare hoặc CoinGecko. Cho chứng khoán: dữ liệu hủy niêm yết CRSP.
Bảng Tra Tỉ Lệ Train/OOS PF #
| Tỉ lệ | Diễn giải | Hành động |
|---|---|---|
| < 1.0 | OOS tốt hơn train | Đáng ngờ — kiểm tra lại rò rỉ dữ liệu |
| 1.0 - 1.3 | Lành mạnh | Tiến hành cẩn trọng, paper-trade trước |
| 1.3 - 1.5 | Cận biên | Giảm tham số hoặc lấy thêm dữ liệu |
| 1.5 - 2.0 | Có thể overfit | Đừng triển khai. Walk-forward mạnh hơn |
| > 2.0 | Overfit kinh điển | Bỏ và khởi động lại với ít tham số hơn |
Pipeline Phát Hiện Chúng Tôi Dùng #
Cho mỗi chiến lược trước khi triển khai live:
- Chia dữ liệu 70/30 theo thứ tự thời gian.
- Tối ưu tham số chỉ trên 70%.
- Chạy backtest đầy đủ trên 30% với tham số đã đông cứng.
- Tính tỉ lệ Train PF / OOS PF.
- Quét độ nhạy tham số (±3 quanh giá trị đã chọn).
- Chia regime (SMA 200 ngày lên vs xuống) — kiểm tra Sharpe từng regime.
- Cả 4 kiểm tra đều qua → paper trade 30 ngày.
- Nếu Sharpe paper trade > 0.5 → cân nhắc live với size giảm.
Tại Sao Hầu Hết Trader Bán Lẻ Bỏ Qua Walk-Forward #
Thành thật: vì nó phiền và câu trả lời thường là tin xấu. Phần lớn trader bán lẻ không muốn biết backtest của mình bị overfit vì triển khai bất chấp vui hơn là làm lại từ đầu. Kỷ luật chạy pipeline này giết 80% chiến lược trước khi rủi ro vốn — đó là mục đích.
Hạ Tầng Khuyên Dùng #
Để chạy backtest dài + quét walk-forward:
- DigitalOcean — $200 credit, có sẵn GPU droplet
- HTStack — VPS Hong Kong, độ trễ thấp đến sàn châu Á
Liên kết tiếp thị — cùng giá, ủng hộ dibi8.com.
Kết Luận #
Overfit không phải một thứ. Là năm mẫu hình, mỗi mẫu có dấu hiệu riêng, mỗi mẫu có phương pháp phát hiện cụ thể. Tỉ lệ Train/OOS PF là chỉ số tóm tắt tốt nhất — nếu bạn chỉ có thời gian cho một kiểm tra trước khi triển khai, hãy dùng nó. Trên 2.0, chiến lược đang khớp nhiễu. Đừng giao dịch nó.
Tiến hóa moss-trade-bot gần đây của chúng tôi kết thúc thành overfit kinh điển (tỉ lệ 2.21). Đó không phải thất bại của công cụ — đó là thất bại của tiến hóa không có cổng OOS. Cách sửa không phải optimizer tốt hơn; là cổng kiểm định nghiêm khắc hơn.
Liên quan: Đánh giá Moss Trade Bot Factory 2026 · Backtrader Python Backtesting · Framework Jesse AI Trading
💬 Bình luận & Thảo luận