Backtesting trong thực tế — quy trình xác nhận nhiều giai đoạn
Hầu hết mọi người nghiêm túc với một chiến lược đều chạy kiểm thử ngược (backtesting), nhưng rất ít người tuân theo một quy trình xác nhận trung thực, nhiều giai đoạn — và chính quy trình đó mới phân biệt tài khoản sống sót qua năm đầu tiên với tài khoản bị xoá sổ vào tháng thứ ba. Bài viết này hướng dẫn bạn toàn bộ quy trình: viết quy tắc rõ ràng, chọn khung thời gian dữ liệu lịch sử, chia tách dữ liệu, walk-forward, tài khoản demo và giao dịch micro-lot đầu tiên với tiền thật. Không phải hướng dẫn cho một lần kiểm thử, mà là kỷ luật đưa chiến lược từ ý tưởng đến tài khoản thực tế.
Tại sao một lần backtesting không phải là một quy trình
Một lần kiểm thử ngược (backtesting) duy nhất cho bạn một con số mà bạn không thực sự hiểu rõ. Chiến lược đã sinh lời ba mươi phần trăm — nhưng liệu đó là do nó nắm bắt được lợi thế thực sự, hay vì bạn chạy ba trăm tổ hợp tham số cho đến khi một tổ hợp khớp với nhiễu lịch sử? Con số đơn lẻ không thể trả lời được điều đó. Một quy trình có thể, bằng cách dần loại bỏ khả năng của nhà giao dịch tự học từ chính dữ liệu mà chiến lược được đánh giá cuối cùng. Mỗi giai đoạn là một cái sàng với mắt lưới nhỏ hơn. Trong bài về thực hành Forex, tôi trình bày cách chạy một lần kiểm thử duy nhất; ở đây tôi tập trung vào kỷ luật bắt đầu trước rất lâu trước khi nhấn nút "Bắt đầu" lần đầu tiên.
Quy tắc phải được viết ra giấy, không được diễn giải
Một chiến lược không thể chuyển thành mã lệnh hoặc một tập quy tắc chính xác là chưa sẵn sàng để kiểm thử. Hãy viết các quy tắc vào lệnh, thoát lệnh, cắt lỗ (stop loss), chốt lời (take profit) và khối lượng giao dịch chính xác đến mức một người khác đọc tài liệu sẽ đặt các lệnh giao dịch giống hệt. "Tôi mua khi thấy xu hướng" là ấn tượng cảm tính, không phải quy tắc. Phiên bản có thể kiểm thử: "mua tại thời điểm đóng cửa nến ngày khi EMA(50) nằm trên EMA(200), RSI(14) dưới bảy mươi, giá chạm đường trung bình 20 kỳ từ trên xuống; cắt lỗ tại 1.5 ATR(14) dưới điểm vào; mục tiêu 2.5 ATR phía trên; rủi ro một phần trăm". Kỷ luật này loại bỏ hầu hết các ý tưởng ngay trước khi kiểm thử bắt đầu chạy.
Cửa sổ dữ liệu phải bao trùm nhiều hơn một chế độ thị trường
Bộ lọc thứ hai là dữ liệu lịch sử. Quy tắc của tôi: tối thiểu mười năm cho chiến lược khung ngày, năm năm cho M30 và M15, hai năm dữ liệu tick thực tế cho scalping — từ dữ liệu tick thật, không phải lịch sử broker tổng hợp. Thập kỷ vừa qua bao gồm xu hướng DXY dài hạn (2014–2017), cú sốc biến động tháng 3/2020, chu kỳ tăng lãi suất (2022–2023) và giai đoạn đi ngang năm 2024. Một chiến lược chỉ hoạt động trong một trong những giai đoạn đó là ảo tưởng được khớp với một kỷ nguyên cụ thể. Ít hơn một trăm giao dịch trong năm năm là quá nhỏ — một trăm là ngưỡng tối thiểu, các chuyên gia hướng tới ba trăm.
Chia tách dữ liệu và bảo vệ khối out-of-sample
Giai đoạn thứ ba là tự lấy đi dữ liệu của mình. Chia lịch sử thành bảy mươi phần trăm in-sample (IS) để tối ưu hoá tham số và hai mươi lăm đến ba mươi phần trăm out-of-sample (OOS), chưa được chạm tới cho đến khi hoàn tất việc tối ưu hoá. OOS là cái sàng trung thực — nó cho thấy liệu các tham số được chọn trên dữ liệu huấn luyện có giá trị ngoài dữ liệu đó không. Nếu IS cho win rate tám mươi phần trăm và profit factor 2.4, trong khi các tham số tương tự cho năm mươi phần trăm và 1.1 trên OOS, bạn vừa phát hiện mình đang curve-fitting. Mười hai phần trăm mỗi năm trên IS và mười một trên OOS thực sự tốt hơn ba mươi trên IS và tám trên OOS. Tính nhất quán mới quan trọng, không phải giá trị đỉnh.
Walk-forward — cái sàng tinh tế nhất
Một lần chia IS/OOS duy nhất cho một con số. Walk-forward lặp lại năm đến bảy lần: IS đầu tiên từ 2018–2021, OOS là 2022; IS thứ hai dịch sang 2019–2022, OOS là 2023; và cứ thế tiếp tục. Với mỗi cửa sổ, bạn tối ưu hoá lại, đóng băng tham số tốt nhất, kiểm thử trên OOS, ghi kết quả, rồi dịch cửa sổ. Sau năm đến bảy chu kỳ, OOS trung bình là thước đo trung thực nhất cho những gì tài khoản thực tế sẽ tạo ra. Walk-forward Efficiency (WFE) trong khoảng 0.5–0.75 cho thấy chiến lược đáng được đưa tiếp; dưới 0.3 là bằng chứng của curve-fitting. Cơ chế và sự khác biệt giữa các biến thể cửa sổ cố định và cửa sổ cuộn được trình bày trong mục phân tích kỹ thuật.
"Toàn bộ mục đích của phân tích walk-forward là để tiết lộ hiệu suất giao dịch thực tế của một chiến lược trong thời gian thực mà không thực sự giao dịch bằng tiền thật trong thời gian thực." — Robert Pardo, 2008
Demo và micro-lot thực — nơi chiến lược gặp thực tế
Một chiến lược đã qua walk-forward đã sẵn sàng cho tài khoản demo, không phải tiền thật ngay. Ba đến sáu tháng kiểm thử thuận chiều (forward testing) với tham số đóng băng là bài kiểm tra hành vi thời gian thực đầu tiên: spread thực tế, các thông báo kinh tế vĩ mô thực, khoảng trống giá Chủ Nhật tối, thanh khoản thực trong giờ giao dịch. Demo cho thấy những điều backtesting không bao giờ tiết lộ — một chiến lược được đánh giá là thanh khoản trên lịch sử có thể khó thực thi thực tế vì tín hiệu xuất hiện khi bạn đang ngủ.
Sau khi kiểm thử demo, bạn không nhảy thẳng lên khối lượng đầy đủ. Bạn tiến với micro-lot — một phần mười kích thước mục tiêu — trong ba đến sáu tháng bằng tiền thật. Mục đích là thu thập thông tin: xem thực thi lệnh thực tế khác demo như thế nào, mức trượt giá (slippage) thực tế, cách broker phản ứng xung quanh NFP, và bạn phản ứng ra sao với những khoản lỗ thực sự, dù nhỏ. Bảng theo dõi qua các giai đoạn có bốn cột: IS, OOS, demo, micro-lot. Các con số càng gần nhau thì rủi ro bạn đang sống trong ảo tưởng càng thấp. Sự phân kỳ lớn hơn là tín hiệu để lùi lại, không phải để tăng quy mô.
Lưu ý về bối cảnh Việt Nam: Giao dịch ngoại hối/CFD bán lẻ thông qua các nhà môi giới (broker) nước ngoài không được cấp phép cho nhà đầu tư cá nhân tại Việt Nam theo quy định hiện hành của Ngân hàng Nhà nước Việt Nam (NHNN). Giao dịch qua broker nước ngoài không có giấy phép NHNN tiềm ẩn rủi ro pháp lý và tài chính đáng kể. Bài viết này mang tính giáo dục thuần túy và không phải lời khuyên đầu tư.
Ví dụ minh hoạ — toàn bộ quy trình cho một chiến lược breakout
Chiến lược breakout trên EUR/USD, M30: vào lệnh khi giá phá vỡ đỉnh cao nhất của hai mươi nến, thoát tại đáy thấp nhất của mười nến. Dữ liệu lịch sử 2014–2023, IS 2014–2020, OOS 2021–2023. Tối ưu hoá trên IS: hai mươi ba cho đỉnh cao, mười một cho đáy thấp, cắt lỗ 1.4 ATR, win rate năm mươi tám phần trăm, profit factor 1.72, hai mươi hai phần trăm mỗi năm. Trên OOS: win rate năm mươi bốn phần trăm, profit factor 1.51, mười tám phần trăm mỗi năm. Năm vòng walk-forward cho WFE trung bình 0.71. Bốn tháng demo xác nhận trượt giá nhiều hơn nửa pip so với giả định; win rate và profit factor vẫn nằm trong ngưỡng. Micro-lot thực tế từ tháng Một cho win rate năm mươi mốt phần trăm sau ba tháng — dưới backtest, nhưng vẫn dương. Quý ba đưa ra quyết định: tăng quy mô, hay đợi thêm nếu biến động lệch khỏi chuẩn. Các con số chỉ mang tính minh hoạ.
Bước tiếp theo của bạn
- Viết các quy tắc chiến lược vào một tập tin văn bản với độ chính xác đủ để một người khác đọc sẽ đặt đúng các lệnh giống nhau — không có cách diễn giải, không có câu "tôi cảm nhận xu hướng", kèm theo giá trị tham số cụ thể, công thức tính cắt lỗ (stop loss) và khối lượng giao dịch theo phần trăm vốn tài khoản; chỉ khi chiến lược đã được viết đầy đủ mới chạy bất kỳ kiểm thử nào.
- Tải dữ liệu lịch sử cho cặp tiền bạn thực sự giao dịch — tối thiểu mười năm cho biểu đồ ngày, năm năm cho M30 và M15, hai năm dữ liệu tick thực cho scalping; xác minh rằng mẫu dữ liệu bao gồm các chế độ thị trường khác nhau, bao gồm xu hướng, đi ngang, cú sốc biến động và chu kỳ lãi suất để chiến lược không chỉ được khớp với một thời kỳ duy nhất.
- Chia dữ liệu thành bảy mươi phần trăm in-sample và hai mươi lăm đến ba mươi phần trăm out-of-sample, không chạm vào OOS cho đến khi hoàn tất tối ưu hoá IS, rồi chạy năm đến bảy vòng walk-forward; nếu WFE thấp hơn 0.5 hoặc tham số nhảy vọt hơn năm mươi phần trăm giữa các vòng, hãy đơn giản hoá logic chiến lược thay vì tiếp tục tối ưu hoá thêm.
- Với chiến lược đã qua walk-forward, chạy ba đến sáu tháng forward testing trên demo với tham số đóng băng — lưu ý thời điểm các tín hiệu xuất hiện theo giờ Việt Nam (ICT, UTC+7) để xác nhận rằng bạn có thể thực sự thực thi chúng — sau đó ba đến sáu tháng micro-lot thực; chỉ khi bốn bộ kết quả nhất quán mới tăng lên kích thước mục tiêu, kết hợp với các kỹ thuật quản lý rủi ro như mô phỏng Monte Carlo.
- Đọc kết quả qua lăng kính nhất quán, không phải lợi nhuận cao nhất: mười hai phần trăm mỗi năm ở mọi giai đoạn tốt hơn ba mươi trên IS và tám trên OOS, bởi vì tính nhất quán quyết định liệu tài khoản có sống sót qua năm đầu tiên hay không; để hiểu thêm về lợi thế mà quy trình này kiểm thử, hãy xem qua phần chiến lược giao dịch.
Nguồn và tài liệu tham khảo
-
Robert Pardo The Evaluation and Optimization of Trading Strategies · klasyczny podręcznik o ewaluacji systemów transakcyjnych i metodyce walk-forward onlinelibrary.wiley.com ↗
-
MetaQuotes MetaTrader 5 Help — Strategy Tester · oficjalna dokumentacja MT5 dotycząca Strategy Testera, forward testingu i optymalizacji parametrów www.metatrader5.com ↗
-
MetaQuotes MetaTrader 4 Help — Strategy Testing · opis Strategy Testera MT4: parametry uruchomienia, modele tickowe, interpretacja raportu www.metatrader4.com ↗
-
Backtrader Backtrader documentation — Introduction · wprowadzenie do otwartego silnika backtestowego w Pythonie używanego przez quants www.backtrader.com ↗
-
TradingView Pine Script v6 — Welcome · oficjalna dokumentacja Pine Script i Strategy Testera w TradingView www.tradingview.com ↗
Câu hỏi thường gặp
Quy trình nhiều giai đoạn này khác gì so với một lần backtesting duy nhất?
Một lần kiểm thử ngược (backtesting) duy nhất cho một con số và một cách diễn giải. Nó cho thấy liệu chiến lược có lợi nhuận trong lịch sử hay không, nhưng ngầm giả định rằng quá trình tối ưu hoá không học từ nhiễu dữ liệu. Quy trình nhiều giai đoạn biến con số đó thành một chuỗi cái sàng. Đầu tiên, các quy tắc được viết ra lọc bỏ những ý tưởng không thể kiểm chứng. Tiếp theo, một cửa sổ lịch sử dài lọc bỏ các chiến lược chỉ hoạt động trong một chế độ thị trường. Sau đó, việc chia IS/OOS lọc bỏ các tham số chỉ hoạt động trên dữ liệu huấn luyện. Walk-forward lọc bỏ các tham số chỉ hoạt động trong một cửa sổ OOS ngẫu nhiên duy nhất. Demo lọc bỏ các chiến lược không thể thực thi với spread thực tế. Micro-lot thực lọc bỏ các nhà giao dịch không vững tâm lý. Sau khi qua tất cả sáu cái sàng, chỉ còn một phần nhỏ của nhóm chiến lược ban đầu, nhưng đó chính là phần có cơ hội thực sự sống sót qua năm đầu tiên. Một lần backtesting duy nhất không thực thi việc chọn lọc đó, và đó là lý do tám mươi phần trăm nhà giao dịch bán lẻ thua lỗ dù tám mươi phần trăm đã chạy một loại kiểm thử lịch sử nào đó.
Toàn bộ quy trình từ ý tưởng đến micro-lot thực mất bao lâu?
Một lịch trình thực tế kéo dài từ chín đến mười lăm tháng, từ khi viết quy tắc đầu tiên đến khi tăng vị thế lên kích thước mục tiêu. Hai tuần đầu dành cho việc viết quy tắc chính xác và tải dữ liệu lịch sử. Hai đến bốn tuần tiếp theo bao gồm tối ưu hoá in-sample và lần xác nhận out-of-sample đầu tiên; nếu thất bại, bạn quay lại quy tắc thay vì đi tìm một bài kiểm thử tốt hơn. Walk-forward với năm đến bảy vòng lặp thêm một tháng nữa vì mỗi cửa sổ yêu cầu tối ưu hoá riêng. Tiếp theo là ba đến sáu tháng forward testing trên tài khoản demo. Sau đó, thêm ba đến sáu tháng micro-lot thực. Chỉ sau khi so sánh bốn bộ kết quả và xác nhận tính nhất quán của chúng mới có thể tăng lên kích thước vị thế mục tiêu. Rút ngắn lịch trình xuống dưới chín tháng có nghĩa là bỏ qua một trong các cái sàng, và mỗi cái sàng bị bỏ qua chuyển rủi ro từ giai đoạn xác nhận sang giai đoạn thực — nơi nó tiêu tốn tiền thật.
Cần theo dõi những chỉ số nào qua các giai đoạn để phát hiện sự không nhất quán?
Bảng theo dõi xuyên suốt quy trình nên có bốn cột kết quả (in-sample, out-of-sample, demo, micro-lot thực) và ít nhất bốn hàng chỉ số cho mỗi cột. Đầu tiên là win rate tính bằng phần trăm — khoảng cách lớn hơn mười điểm phần trăm giữa các giai đoạn báo hiệu sự không nhất quán. Thứ hai là profit factor, tổng lợi nhuận chia cho tổng lỗ — khoảng cách lớn hơn 0.3 giữa các giai đoạn là dấu hiệu cảnh báo. Thứ ba là tỷ lệ rủi ro/lợi nhuận trung bình — khoảng cách lớn hơn 0.5 R gợi ý rằng cắt lỗ (stop loss) hành xử khác so với trong kiểm thử. Thứ tư là sụt giảm vốn (drawdown) tối đa, gần như luôn tăng từ giai đoạn này sang giai đoạn tiếp theo, nhưng mức tăng trên năm mươi phần trăm giữa hai giai đoạn liền kề có nghĩa là chiến lược đang gặp phải các điều kiện vắng mặt trong kiểm thử. Thứ năm, tuỳ chọn, là trượt giá (slippage) trung bình tính bằng pip — sự chênh lệch giữa backtest và demo, và giữa demo và micro-lot, cho bạn biết liệu broker có hành xử đúng theo giả định hay không. Sự không nhất quán ở bất kỳ chỉ số nào là tín hiệu để lùi lại một giai đoạn và tìm hiểu nguyên nhân, thay vì tăng quy mô vị thế.
Hoàn thành toàn bộ quy trình có đảm bảo chiến lược sẽ sinh lời khi giao dịch thực không?
Không. Mỗi giai đoạn nâng cao xác suất chiến lược có lợi thế thực sự, nhưng không có tập hợp kiểm thử lịch sử hoặc forward nào loại bỏ rủi ro cơ bản: thị trường quý tới có thể không giống bất cứ điều gì bạn thấy trong dữ liệu. Toàn bộ quy trình ngầm giả định rằng chế độ thị trường trong các cửa sổ OOS và trong demo sẽ đủ giống với chế độ thực tế. Nếu chiến lược học thị trường 2018 đến 2023 với hai cú sốc biến động và hai chu kỳ tăng lãi suất, rồi giao dịch từ 2024 trong giai đoạn đi ngang dài với biến động thấp và ít công bố số liệu rung chuyển thị trường hơn, micro-lot thực có thể cho kết quả rất xa với backtest. Đó là lý do kỷ luật không chỉ dừng lại ở việc vượt qua các cái sàng một cách sạch sẽ, mà còn ở chỗ giữ micro-lot đủ lâu để so sánh kết quả bằng tiền thật với ba giai đoạn trước đó. Bổ sung hữu ích là mô phỏng Monte Carlo, xáo ngẫu nhiên thứ tự các giao dịch và tiết lộ phân phối của các đường cong vốn có thể xảy ra — ước tính tình huống tệ nhất hợp lý mà một lần backtesting đơn độc không bao giờ phơi bày. Bài viết này chỉ mang tính giáo dục và không phải lời khuyên đầu tư.