Backtesting — Kiểm tra trên dữ liệu lịch sử
Ba con số quyết định một hệ thống có sống được không: tỷ lệ thắng, tỷ lệ R:R và chi phí. Công cụ này cho biết bạn còn cách ngưỡng hoà vốn bao xa.
Cùng R:R 2/1 và chi phí 0.02R, chỉ đổi tỷ lệ thắng. Đường cắt mức 0 tại 34.00% — bạn đang ở 45.00%, tức cách ngưỡng +11.00%. Độ dốc 3R cho mỗi 100% tỷ lệ thắng cho biết ước lượng sai vài phần trăm thì kỳ vọng lệch bao nhiêu.
Đây là con số quyết định. Dưới 0 thì mọi thứ còn lại — tỷ lệ thắng đẹp, chuỗi thắng dài — chỉ là cách thua tiền chậm hơn.
Chi phí trừ thẳng vào kỳ vọng, không nhân với gì cả. Đó là lý do một hệ thống 'gần như hoà' trên backtest không tính phí thường lỗ đều khi chạy thật.
Mỗi 1% tỷ lệ thắng đổi được 0.0300R kỳ vọng. Biên mỏng nghĩa là sai số ước lượng tỷ lệ thắng — vốn rất lớn khi mẫu dưới 100 lệnh — đủ để lật dấu kết quả.
Tổng lãi chia tổng lỗ. Từ 1,0 đến 1,3 là mỏng tới mức chi phí giao dịch và trượt giá có thể xoá sạch — và PF ở đây tính trên kỳ vọng GỘP, nên con số thật sau phí còn thấp hơn.
| Kỳ vọng trước chi phí | +0.3500R |
| Hoà vốn khi chưa tính chi phí | 33.33% |
| Trên 100 lệnh | +33.0R |
Cùng R:R 2/1 và chi phí 0.02R, chỉ đổi tỷ lệ thắng. Đường cắt mức 0 tại 34.00% — bạn đang ở 45.00%, tức cách ngưỡng +11.00%. Độ dốc 3R cho mỗi 100% tỷ lệ thắng cho biết ước lượng sai vài phần trăm thì kỳ vọng lệch bao nhiêu.
Trục ngang là chi phí mỗi lệnh tính bằng R. Kỳ vọng gộp +0.3500R bị chi phí bào theo tỷ lệ 1:1, nên chi phí vượt 0.3500R là hệ thống chuyển sang lỗ. Đây là đường mà spread giãn và trượt giá đẩy bạn đi dọc theo.
Ranh giới 34.00% đã tính cả chi phí 0.02R; chưa tính chi phí thì nó là 33.33%. Khoảng cách giữa hai mốc chính là phần tỷ lệ thắng bạn phải kiếm thêm chỉ để trả phí.
| Tỷ lệ thắng | Kỳ vọng gộp | Kỳ vọng ròng | Trên 100 lệnh | Kết luận |
|---|---|---|---|---|
| 20% | -0.4000R | -0.4200R | -42.0R | lỗ |
| 25% | -0.2500R | -0.2700R | -27.0R | lỗ |
| 30% | -0.1000R | -0.1200R | -12.0R | lỗ |
| 35% | +0.0500R | +0.0300R | +3.0R | lãi |
| 40% | +0.2000R | +0.1800R | +18.0R | lãi |
| 45% | +0.3500R | +0.3300R | +33.0R | lãi |
| 50% | +0.5000R | +0.4800R | +48.0R | lãi |
| 55% | +0.6500R | +0.6300R | +63.0R | lãi |
| 60% | +0.8000R | +0.7800R | +78.0R | lãi |
| 65% | +0.9500R | +0.9300R | +93.0R | lãi |
| 70% | +1.1000R | +1.0800R | +108.0R | lãi |
| 75% | +1.2500R | +1.2300R | +123.0R | lãi |
| 80% | +1.4000R | +1.3800R | +138.0R | lãi |
| Kỳ vọng trước chi phí | +0.3500R |
| Hoà vốn khi chưa tính chi phí | 33.33% |
| Trên 100 lệnh | +33.0R |
E = p·W − (1−p)·L − chi phí · hoà vốn khi p = (L+chi phí)/(W+L)
Đây là công thức thật mà mã nguồn chạy, không phải mô tả gần đúng.
API tại /api/v1/tools/expectancy gọi đúng hàm
này, nên kết quả trên trang và qua API không thể lệch nhau.
Backtest là chạy lại chiến lược trên dữ liệu lịch sử để ước lượng hiệu suất. Nó dễ làm đúng về mặt kỹ thuật và rất dễ làm sai về mặt phương pháp: phần lớn backtest đẹp là kết quả của rò rỉ dữ liệu hoặc dò tham số, không phải của edge.
| Expectancy (R) | lãi kỳ vọng mỗi lệnh |
| Profit factor | tổng lãi / tổng lỗ |
| Max drawdown | sụt vốn sâu nhất |
| Phân bổ theo năm | lộ ra nếu lãi dồn vào vài tháng may |
Phần quan trọng nhất của trang này. Một phương pháp được mô tả mà không nói chỗ nó hỏng là phiên bản quảng cáo của phương pháp đó.
Chưa có mô hình nào gắn riêng cho chủ đề này. Đây là những mô hình của cả ngành — liên quan ở cấp ngành, không phải cấp chủ đề.
Nhãn trạng thái gắn theo thực tế.
Backtesting Engine beta Kiểm tra trên dữ liệu lịch sửBacktest là chạy lại chiến lược trên dữ liệu lịch sử để ước lượng hiệu suất. Nó dễ làm đúng về mặt kỹ thuật và rất dễ làm sai về mặt phương pháp: phần lớn backtest đẹp là kết quả của rò rỉ dữ liệu hoặc dò tham số, không phải của edge.
1. Xử lý tuần tự theo từng nến; không hàm nào được nhìn dữ liệu sau t. 2. Tính chi phí thật: spread theo giờ, phí, trượt giá, phí qua đêm. 3. Mô phỏng đúng cơ chế khớp: lệnh limit chỉ khớp khi giá thật chạm qua. 4. Chia dữ liệu theo thời gian, giữ một đoạn cuối chưa từng chạm tới.
Nhìn trộm tương lai: dùng giá đóng cửa của nến hiện tại để quyết định vào lệnh trong chính nến đó. Survivorship bias khi dùng danh sách tài sản hiện tại cho quá khứ. Bỏ chi phí. Với chiến lược tần suất cao, chi phí thường lớn hơn toàn bộ biên lợi thế.
Expectancy (R) — lãi kỳ vọng mỗi lệnh; Profit factor — tổng lãi / tổng lỗ; Max drawdown — sụt vốn sâu nhất; Phân bổ theo năm — lộ ra nếu lãi dồn vào vài tháng may.
Đang thử nghiệm: chạy được nhưng phương pháp chưa kiểm định đầu-cuối, nên đừng dựa vào nó để ra quyết định tiền thật.
Backtesting Engine (đang thử nghiệm).