Backtesting Without Fooling Yourself
A step-by-step path from what your backtest really optimizes to proving an edge survives overfitting, multiple testing, and live execution. Read top to bottom — each part builds on the last.
- 01
Jul 2, 2026 #algotradingThiết Kế Hàm Mục Tiêu: Chỉ Số Bạn Tối Ưu Hóa Âm Thầm Chọn Chiến Lược Của Bạn
Để tìm kiếm chiến lược 'tốt nhất' bạn trước tiên phải định nghĩa 'tốt nhất' — và con số vô hướng đó âm thầm chọn ra người chiến thắng. Trên dữ liệu tổng hợp với lợi thế đã biết (600 seed, T=2000, 80 ngưỡng), một Sharpe per-trade ngây thơ tôn vinh một vé số: nó chọn một người chiến thắng có mức độ tiếp xúc dưới 5% trong 56% số seed và thoái hóa trong 57% — ở seed cực đoan nhất, 8 giao dịch đạt Sharpe in-sample 21.09 sụp đổ xuống 0.13 out-of-sample. Cách khắc phục trung thực gần như nhàm chán: đo trên toàn bộ dòng thời gian, thứ không bao giờ thoái hóa (out-of-sample 1.71). Một shrinkage theo số lượng giao dịch (conf_k) và một sàn tiếp xúc (exposure floor) có thể vá lại một chỉ số per-trade, nhưng ngay cả khi được sửa hoàn toàn chúng cũng chỉ khớp với Sharpe toàn dòng thời gian (1.70 so với 1.71) — không bao giờ vượt qua nó. Định luật Goodhart, trong một backtest, với ground truth có kiểm soát.
- 02
Mar 15, 2026 #algotradingWalk-Forward Optimization: Bài Kiểm Tra Chiến Lược Trung Thực Duy Nhất
Tại sao một lần phân chia train/test không bảo vệ được khỏi overfitting, cách walk-forward optimization kiểm tra tính bền vững của tham số một cách có hệ thống, và tại sao chiến lược với +3342% PnL@ML trên 21 tham số là một quả bom hẹn giờ nếu thiếu WFO.
- 03
Mar 12, 2026 #algotradingPhân Tích Plateau: Cách Phân Biệt Tối Ưu Bền Vững với Overfitting
Tại sao tìm ra các tham số chiến lược tốt nhất chỉ là nửa công việc. Cách phân biệt trực quan và định lượng một plateau ổn định với một đỉnh nhọn mong manh, và tại sao các biểu đồ đường đồng mức Optuna là bước bắt buộc trước khi đưa chiến lược đã tối ưu vào production.
- 04
Mar 6, 2026 #algotradingMonte Carlo Bootstrap: Cách Lấy Khoảng Tin Cậy cho Backtest trong 10 Dòng Code
Tại sao ước lượng đơn điểm từ backtest là một ảo tưởng nguy hiểm. Làm thế nào Monte Carlo bootstrap trong 2 giây tính toán cho bạn khoảng tin cậy 95% cho PnL và MaxDD, và tại sao đây là bước bắt buộc trước khi triển khai chiến lược vào thực tế.
- 05
Jul 2, 2026 #algotradingProbability of Backtest Overfitting: Tìm Kiếm Của Bạn Có Đánh Bại Được Một Lần Tung Đồng Xu?
Deflated Sharpe Ratio định giá chiến lược thắng cuộc; PBO định giá tìm kiếm đã chọn ra nó. Combinatorially Symmetric Cross-Validation chạy C(16,8) = 12,870 lượt chia train/test trên một ma trận hiệu suất 1000x200 và hỏi: liệu kẻ thắng cuộc in-sample có rơi vào nửa dưới out-of-sample hay không? Cái bẫy mà hầu như ai cũng bỏ lỡ — null của PBO là 0.5, không phải 1. Trên 200 chiến lược không-lợi-thế, Sharpe hàng năm in-sample tốt nhất là 1.98 sụp đổ xuống 0.06 out-of-sample và PBO = 0.476: một lần tung đồng xu, overfit hoàn toàn. Cài đặt một lợi thế thực (Sharpe hàng năm 2.38) thì PBO giảm xuống 0.001, con số in-sample 3.73 sống sót đến out-of-sample 2.34. Một lưới trung bình động trên một random walk thuần túy cũng không có kỹ năng out-of-sample nào — PBO 0.463 trung bình trên 60 ma trận, không thể phân biệt về mặt thống kê với null — và trên một ma trận đại diện, ảo ảnh hiện lên rõ ràng: Sharpe in-sample tốt nhất 2.33 sụp đổ xuống trung vị out-of-sample -0.22, PBO 0.573, 63% xác suất thua lỗ.
- 06
Jul 2, 2026 #algotradingDeflated Sharpe Ratio: Có Bao Nhiêu Chiến Lược 'Thắng' Trong Backtest Của Bạn Sống Sót Qua Multiple Testing?
Một tìm kiếm tham số là một cỗ máy sản xuất may mắn. Trên nhiễu thuần túy — 1,000 chiến lược với lợi thế thực bằng không — Sharpe hàng năm tốt nhất trung bình đạt 1.63 và bài kiểm định ý nghĩa ngây thơ báo hiệu một phát hiện 100% số lần. Chúng tôi xây dựng ground truth có kiểm soát và chỉ ra rằng Deflated Sharpe Ratio, haircut Harvey-Liu, và White's Reality Check khôi phục sự trung thực: phát hiện sai giảm từ 1.000 xuống 0.001-0.057, các lợi thế thực sự trên trần nhiễu được giữ lại với sức mạnh phát hiện ~1 — và một cái bẫy thực sự (lưới tham số tương quan) nơi DSR thô khử lạm phát quá mức và phán quyết phải được đọc trên toàn bộ dải các ước lượng số lần thử hiệu quả, chứ không phải chỉ một.
- 07
Mar 7, 2026 #algotradingBacktest-live parity: tại sao bot của bạn giao dịch khác so với backtest
Phân loại đầy đủ các sai lệch giữa backtest và giao dịch thực: từ slippage và khớp lệnh một phần đến sự không đồng bộ codebase. Các mô hình kiến trúc để đạt được parity, ví dụ Python về module core dùng chung, và danh sách kiểm tra giám sát production.