Robust backtesting cho chiến lược quant trading

30/06/2025

876 lượt đọc

Trong giao dịch định lượng, backtest chỉ là bước khởi đầu. Một chuỗi kết quả ấn tượng trên dữ liệu lịch sử không đảm bảo chiến lược của bạn sẽ “sống sót” khi gặp dữ liệu thực. Để tự tin triển khai live trading, cần thiết lập một quy trình robust backtesting tức kiểm chứng chiến lược qua nhiều lớp ngăn ngừa sai lệch, đảm bảo tính ổn định, loại bỏ nguy cơ vỡ trận khi thị trường bất ngờ đổi chiều.

1. Ngăn chặn overfitting và data-snooping

Trong backtesting chiến lược định lượng, hai kẻ thù đáng sợ nhất chính là overfittingdata-snooping bias. Nếu không kiểm soát chặt chẽ, bạn dễ dàng thu được kết quả “tuyệt vời” trên dữ liệu lịch sử nhưng lại hoàn toàn thất bại khi live trading.

1.1. Cơ chế sinh overfitting và data-snooping

  1. Overfitting: Mô hình “học thuộc lòng” mọi biến động ngẫu nhiên (noise) trong tập dữ liệu backtest, bao gồm cả các cú spike bất thường, mà không nắm bắt được cấu trúc chung (signal) trước những biến động thị trường có tính lặp lại. Khi dữ liệu mới xuất hiện, “noise” không lặp lại ⇒ alpha biến mất.
  2. Data-snooping bias: Xảy ra khi bạn cố ý hay vô tình chọn tham số/chỉ báo dựa trên khả năng tối đa hóa performance trên dữ liệu lịch sử. Ví dụ thử 100 bộ lookback, chỉ giữ lại bộ tốt nhất ⇒ kết quả có thể chỉ là sự trùng hợp với sự kiện ngẫu nhiên.

1.2. K-fold cross-validation: đánh giá tính ổn định trên nhiều phân đoạn

Thay vì chia dữ liệu theo một bản train/test duy nhất, phương pháp k-fold cross-validation mang lại cái nhìn toàn diện và công bằng hơn:

  1. Chia dữ liệu thành k khoảng thời gian (fold) tương đương, chẳng hạn k = 5 hoặc 10.
  2. Lặp k lần: mỗi lần lấy k−1 fold làm tập train, fold còn lại làm tập test. Tính các chỉ số performance (Sharpe, maximum drawdown, hit rate…) trên mỗi lần test.
  3. Tổng hợp kết quả: lấy trung bình và độ lệch chuẩn của từng chỉ số qua k lần. Nếu Sharpe trên tập test dao động quá lớn (độ lệch chuẩn / Sharpe trung bình > 0.2), đó là dấu hiệu mô hình quá phụ thuộc vào lựa chọn dữ liệu cụ thể.

Lưu ý: Với series thời gian có tính tự tương quan, bạn nên áp dụng blocked k-fold—khi chia fold, đảm bảo không phá vỡ thứ tự thời gian (ví dụ fold 1: năm 2010–2012, fold 2: 2013–2015, …).

1.3. Walk-forward testing: mô phỏng quá trình tái tối ưu hóa định kỳ

Walk-forward testing (WFT) mô phỏng sát nhất quy trình live trading, trong đó bạn định kỳ tinh chỉnh (re-optimize) tham số trên dữ liệu mới nhất:

  1. Chọn chiều dài cửa sổ train (ví dụ 5 năm) và test (ví dụ 1 năm).
  2. Vòng 1: train trên 2010–2014 → test trên 2015.
  3. Vòng 2: train trên 2011–2015 → test trên 2016.
  4. Tiếp tục trượt cửa sổ đến năm cuối cùng.
  5. Tổng hợp performance của từng cửa sổ test: nếu performance trên các cửa sổ test liên tiếp có độ ổn định cao (Sharpe sống ổn định trong khoảng ±10% so với Sharpe backtest), bạn có thể tự tin hơn về khả năng live.

Thực hành: Khi re-optimize, chỉ tối ưu một nhóm nhỏ tham số (ví dụ lookback period) và giữ nguyên các tham số khác để tránh overfitting lan tỏa vào mọi khía cạnh mô hình.

1.4. Hạn chế số lượng tham số và sử dụng Regularization

Mỗi tín hiệu (signal) chỉ nên dựa trên 2–3 biến cốt lõi—ví dụ momentum và volatility—và tránh tham số hóa quá sâu (ví dụ không thử nhiều hơn 5 mức lookback cho bất kỳ biến nào). Các kỹ thuật regularization từ machine learning cũng có thể áp dụng:

  1. Ridge/Lasso regression khi xây dựng tín hiệu bằng hồi quy: thêm penalty cho tổng bình phương (Ridge) hoặc độ lớn tuyệt đối (Lasso) của hệ số, giúp đẩy hệ số không quan trọng về 0.
  2. Dropout khi dùng neural network: ngẫu nhiên bỏ bớt (drop) một tỉ lệ neuron trong mỗi epoch, tránh mạng quá khớp với dữ liệu train.

1.5. Kiểm soát data-snooping bằng Reality Check và SPA test

Sau khi thu được kết quả backtest, bạn có thể áp dụng:

  1. White’s Reality Check: kiểm định xem performance của chiến lược có vượt trội so với benchmark một cách thống kê, tính toán p-value điều chỉnh cho data-snooping.
  2. Superior Predictive Ability (SPA) test của Hansen: một cải tiến của Reality Check, giảm bias do chỉ tập trung vào best-performing model.

Nếu kết quả Reality Check cho p-value > 0.1, nguy cơ chiến lược chỉ là kết quả trùng hợp cao bạn nên xem lại cả thiết kế tín hiệu và quy trình backtest.

2. Mô phỏng chi phí giao dịch và stress-test thị trường

Một chiến lược định lượng chỉ thực sự mạnh khi nó chịu được áp lực chi phí giao dịch và những cú sốc lớn của thị trường. Nếu backtest chỉ tính lợi nhuận mà bỏ qua chi phí và những giai đoạn khủng hoảng, khi live trading bạn sẽ nhanh chóng đối mặt với kết quả “chua chát”.

2.1 Giả lập transaction cost theo thực tế

1. Commission theo tier broker

  1. Mỗi broker có mức phí khác nhau, thường chia theo cấp độ khối lượng giao dịch (tier). Ví dụ:
  2. Tier 1 (≥ 1 triệu usd/tháng): 0.03%/lệnh
  3. Tier 2 (≥ 100k usd/tháng): 0.05%/lệnh
  4. Tier 3 (< 100k usd/tháng): 0.1%/lệnh

Trong mô hình backtest, gán commission cho mỗi lệnh dựa trên khối lượng giả định và tier phù hợp.

2. Bid–ask spread độnG

  1. Thay vì dùng spread cố định (ví dụ 0.1%), hãy xây dựng phân phối lịch sử:
  2. Thu thập spread trung bình mỗi ngày của cổ phiếu trong 1–2 năm qua.
  3. Ước tính phân phối (histogram hoặc kernel density).
  4. Khi backtest, sampling spread ngẫu nhiên từ phân phối để giả lập biến động spread theo thị trường.

3. Slippage theo khối lượng so với ADV

  1. Slippage (chi phí “trượt giá”) tỷ lệ thuận với kích thước order so với ADV (Average Daily Volume). Ví dụ công thức: slippage = base_slippage × (order_size / ADV)

Trong đó base_slippage có thể là 0.02% (mức trung bình của nhóm large-cap).

  1. Khi order_size bằng 5% ADV, slippage = 0.02% × 0.05 = 0.001% → ứng dụng cho giá entry và exit.

Áp dụng đồng thời ba thành phần trên, mô hình không chỉ “ăn” đúng spread hay phí nhất định mà còn phản ánh chi phí giao dịch thay đổi theo thời điểm, mã và kích thước lệnh.

2.2 Stress-test đa kịch bản

Để đánh giá khả năng chịu đựng của chiến lược, bạn cần mô phỏng các giai đoạn thị trường khốc liệt nhất trong lịch sử và những kịch bản giả định vĩ mô tương lai.

  1. Khủng hoảng 2008
  2. Lấy dữ liệu VN-Index (nếu dùng thị trường Việt Nam) hoặc chỉ số toàn cầu (S&P 500) giai đoạn 2007–2009.
  3. Áp kịch bản: VIX tăng gấp đôi, nhiều cổ phiếu large-cap mất 40–50% chỉ trong vài tháng.
  4. Chạy lại backtest với transaction cost model và đo lại drawdown.
  5. Đại dịch 2020
  6. Phiên “Thứ sáu đen tối” COVID-19 (ngày 13/03/2020) và các phiên tiếp theo.
  7. Nhiều mã lao dốc 30–50% trong 5–10 phiên.
  8. Mô phỏng slippage và spread bùng nổ do thanh khoản cạn kiệt, áp thêm chi phí funding rate (nếu trade phái sinh).
  9. Biến động vĩ mô năm 2025
  10. Giả lập Ngân hàng Nhà nước tăng lãi suất thêm 200 điểm cơ bản trong vòng 2 tháng.
  11. Dòng vốn dịch chuyển: cổ phiếu small-cap mất thanh khoản, bid–ask spread nới rộng 50–100%.
  12. Thêm kịch bản: đảo chiều đột ngột của dòng vốn ngoại, điều chỉnh tỷ giá lớn.

Mục tiêu chung: Sau khi áp toàn bộ chi phí giao dịch và 3 kịch bản stress-test, Maximum Drawdown (MDD) live phải ≤ 1.5 × MDD_backtest. Nếu MDD_live vượt ngưỡng này, bạn cần:

  1. Điều chỉnh tham số: tăng threshold entry, kéo stop-loss rộng hơn theo ATR.
  2. Thêm cơ chế de-risking: tự động giảm tỷ trọng 30–50% khi volatility (ATR) vượt ngưỡng lịch sử (ví dụ 1.5 × ATR_6m).

3. Đối chiếu forward-test và paper-trading

Backtest trên lịch sử chỉ giúp bạn biết chiến lược hoạt động thế nào với dữ liệu “đóng hộp”. Nhưng live trading thực sự giống đặt cược vào những kịch bản chưa từng thấy biến động, lệnh lỗi, chi phí thị trường. Trước khi đưa tiền thật vào, hãy cho chiến lược “chạy thử” qua forward-test và paper-trading trong 6–12 tháng.

3.1. Thiết lập môi trường paper-trading

  1. Tạo tài khoản giả lập trên cùng nền tảng giao dịch bạn sẽ dùng live (Interactive Brokers, MetaTrader, v.v.).
  2. Cài đặt chi phí giao dịch, bid–ask spread và slippage giống như backtest đã giả lập.
  3. Đảm bảo dữ liệu giá/khối lượng thực tế, real-time feed để tái hiện sát nhất môi trường thị trường.

3.2. Chạy forward-test liên tục

  1. Chạy chiến lược auto-execute trong 6–12 tháng, để hệ thống tự đặt lệnh, tự thu thập kết quả.
  2. Không can thiệp thao tác thủ công, để kiểm tra xem chiến lược có thể vận hành tự động mà không cần “bàn tay con người”.
  3. Ghi nhận mọi con số: tổng lệnh, lệnh thắng/thua, lợi nhuận ròng, drawdown tối đa, thời gian hold trung bình.

3.3. So sánh equity curve: kỳ vọng vs. thực tế

  1. Vẽ hai đường đồ thị song song:
  2. Equity backtest: đường vốn ảo trên dữ liệu lịch sử đã qua tối ưu.
  3. Equity forward-test: đường vốn ảo khi chạy paper-trading.
  4. Đánh giá khoảng cách giữa hai đường:
  5. Nếu equity_forward xoay quanh 80–90% của equity_backtest, đó là tín hiệu chấp nhận được.
  6. Nếu equity_forward chỉ đạt dưới 70%, hoặc có giai đoạn đi ngang dài, cần xem lại.

3.4. Các chỉ báo cảnh báo cơ bản

  1. Sharpe ratio (điều chỉnh rủi ro): Sharpe_forward < 0.8 × Sharpe_backtest → hiệu suất giảm hơn 20% so với kỳ vọng.
  2. Tỷ lệ thắng (hit rate): Hit rate_forward giảm > 5 điểm phần trăm so với backtest → alpha đang mất dần.
  3. Drawdown: MDD_forward > 1.2 × MDD_backtest → khả năng chịu đựng thị trường sụp giảm không đạt.

Khi bất kỳ chỉ báo nào chạm ngưỡng cảnh báo, hệ thống sẽ:

  1. Tạm dừng mở lệnh mới.
  2. Gửi thông báo (Slack/Telegram) cho nhóm vận hành.
  3. Mời team phân tích bước vào rà soát: data feed, tham số, cơ chế chi phí.

3.5. Ví dụ cụ thể

Giả sử bạn có chiến lược Breakout trên rổ VN30:

  1. Backtest (2015–2020): Lợi nhuận +120%, Sharpe 1.5, hit rate 55%, MDD 18%.
  2. Forward-test (2021–Q2/2022):
  3. Lợi nhuận +80% (≈67% của backtest).
  4. Sharpe_forward = 1.0 (≈67% × 1.5).
  5. Hit rate_forward = 49% (giảm 6 pt).
  6. MDD_forward = 22% (>1.2 × 18% = 21.6%).

Kết quả cho thấy Sharpe và hit rate đều vượt ngưỡng cảnh báo, MDD_forward cũng nhỉnh hơn giới hạn 1.2×. Bạn sẽ phải:

  1. Xem lại ngưỡng xác định breakout (threshold).
  2. Điều chỉnh cơ chế lọc nhiễu (volatility filter).
  3. Cân nhắc giảm khối lượng mỗi lệnh, tăng thời gian hold (từ intraday sang swing).

Từ paper-trading đến live

  1. Khi forward-test đạt các chỉ tiêu: Sharpe_forward ≥ 0.8 × Sharpe_backtest, hit rate_forward ≥ hit rate_backtest − 5 pt, MDD_forward ≤ 1.2 × MDD_backtest, bạn có thể tự tin chuyển sang live với một phần vốn thử (nhỏ) để tiếp tục giám sát.
  2. Luôn duy trì dashboard cảnh báo real-time để phát hiện sớm mọi sai lệch giữa live và kỳ vọng.

Hãy xây dựng và kiểm thử chiến lược giao dịch phái sinh của bạn trên nền tảng QMTRADE trước khi sử dụng tiền thật để tránh những rủi ro không đáng có.

Chia sẻ bài viết

Đánh giá

Hãy là người đầu tiên nhận xét bài viết này!

Đăng ký nhận tin

Nhập Email để nhận được bản tin mới nhất từ QM Capital.

Bài viết liên quan

Khi nào biết dòng tiền đang quay lại thật, chứ không chỉ là một nhịp hồi kỹ thuật?
26/03/2026
66 lượt đọc

Khi nào biết dòng tiền đang quay lại thật, chứ không chỉ là một nhịp hồi kỹ thuật? C

Sai lầm rất phổ biến của người mới là thấy chỉ số tăng mạnh một phiên rồi kết luận thị trường đã tạo đáy. Thực tế, một nhịp hồi kỹ thuật thường có 3 đặc điểm: giá bật lên sau chuỗi giảm sâu, tâm lý bớt hoảng loạn, nhưng khối lượng chưa thật sự cải thiện và chỉ số vẫn chưa vượt lại các vùng kỹ thuật quan trọng. Phiên ngày 17/03/2026 là ví dụ khá rõ. VN-Index tăng 17,08 điểm, đóng cửa ở 1.710,29 điểm, số mã tăng là 179 so với 147 mã giảm, nhưng giá trị khớp lệnh HoSE chỉ khoảng 20,9 nghìn tỷ đồng, vẫn dưới trung bình 20 phiên. Cùng lúc đó, phân tích kỹ thuật của AseanSC cho thấy VN-Index khi ấy vẫn đóng cửa dưới MA10, MA20 và MA50, tức là xu hướng ngắn hạn chưa thực sự đảo chiều, nên nhịp tăng này nghiêng nhiều hơn về một nhịp hồi kỹ thuật hơn là tín hiệu xác nhận tiền lớn quay lại.

Chu kỳ vĩ mô đổi pha thì tiền thường đi đâu trước?
26/03/2026
360 lượt đọc

Chu kỳ vĩ mô đổi pha thì tiền thường đi đâu trước? C

Điều đầu tiên người mới cần nhớ là thị trường gần như luôn đi trước nền kinh tế thật một nhịp. Khi chu kỳ vĩ mô bắt đầu đổi pha, tiền không chờ đến lúc GDP, lợi nhuận doanh nghiệp hay tín dụng tăng rõ ràng rồi mới vào. Nó thường phản ứng ngay khi có dấu hiệu áp lực lãi suất bớt căng, thanh khoản dễ thở hơn, hoặc rủi ro hệ thống giảm xuống. Việt Nam năm 2023 là ví dụ rất dễ kiểm chứng. Trong năm đó, Ngân hàng Nhà nước giảm lãi suất điều hành 4 lần; Reuters ghi rõ lãi suất tái cấp vốn và tái chiết khấu đều giảm tổng cộng 150 điểm cơ bản. Cùng giai đoạn đó, VNDIRECT ghi nhận đến ngày 25/5/2023 VN-Index đã lên 1.064,6 điểm, tăng 5,7% từ đầu năm, và thanh khoản bình quân 3 sàn trong tháng 5 lên 13.905 tỷ đồng mỗi phiên, tăng 4,7% so với tháng trước. Nghĩa là tiền đã bắt đầu quay lại thị trường ngay khi điều kiện tài chính bớt xấu, dù nền kinh tế thực lúc đó vẫn còn khó.

Vì sao backtest rất đẹp nhưng live trading vẫn thua?
25/03/2026
69 lượt đọc

Vì sao backtest rất đẹp nhưng live trading vẫn thua? C

Khi mới học quant trading, rất nhiều người có chung một cảm giác phấn khích. Chỉ cần tải dữ liệu giá về, viết vài dòng Python, gắn thêm một vài điều kiện như MA cắt nhau, RSI quá bán hay breakout đỉnh cũ, rồi chạy backtest là có ngay một đường vốn tăng rất đẹp. Nhìn vào kết quả đó, ai cũng dễ nghĩ rằng mình vừa tìm ra một chiến lược có thể kiếm tiền thật. Nhưng vấn đề nằm ở chỗ backtest chỉ cho ta biết chiến lược sẽ trông như thế nào nếu quá khứ diễn ra đúng như dữ liệu đang có trong máy. Nó không hề đảm bảo rằng khi bước ra thị trường thật, nơi có độ trễ, có chi phí, có tâm lý và có những biến động bất ngờ, chiến lược đó vẫn giữ được hiệu quả như vậy.

News sentiment trong quant trading quan trọng như thế nào, và thực tế nó được sử dụng ra sao
18/03/2026
330 lượt đọc

News sentiment trong quant trading quan trọng như thế nào, và thực tế nó được sử dụng ra sao C

Trong quant trading, rất nhiều người mới thường nhìn thị trường như một bài toán thuần số liệu. Họ tập trung vào giá, khối lượng, biến động, chỉ báo kỹ thuật, đôi khi thêm vài biến cơ bản như P/E, tăng trưởng lợi nhuận hay dòng tiền. Cách tiếp cận đó không sai, nhưng nó vẫn thiếu một lớp rất quan trọng, đó là lớp thông tin đang làm thay đổi kỳ vọng của thị trường theo thời gian thực. Giá là thứ ta nhìn thấy trên biểu đồ, nhưng trước khi giá dịch chuyển luôn tồn tại một quá trình hình thành nhận thức. Nhà đầu tư đọc tin, diễn giải tin, so sánh tin đó với kỳ vọng đã có sẵn trong đầu, rồi mới ra quyết định mua hay bán. News sentiment nằm đúng ở khoảng giữa đó. Nó không chỉ nói rằng có tin tức xuất hiện, mà còn giúp đo xem thị trường nhiều khả năng sẽ cảm nhận tin đó theo hướng nào, mạnh hay yếu, bất ngờ hay đã được phản ánh từ trước.

Quant là gì? Họ thực sự làm gì trong thị trường tài chính
15/03/2026
510 lượt đọc

Quant là gì? Họ thực sự làm gì trong thị trường tài chính C

Trong tài chính, quant (quantitative analyst) là những người sử dụng toán học, thống kê, lập trình và dữ liệu để nghiên cứu thị trường và xây dựng chiến lược đầu tư. Điểm khác biệt lớn nhất giữa quant và trader truyền thống nằm ở cách họ nhìn thị trường. Một trader thông thường có thể dựa vào kinh nghiệm, tin tức hoặc cảm nhận để quyết định mua bán. Trong khi đó, quant cố gắng định lượng mọi thứ bằng dữ liệu. Họ không hỏi “cổ phiếu này có vẻ sẽ tăng không?”, mà hỏi “trong dữ liệu 15 năm qua, khi cổ phiếu có những đặc điểm như thế này thì xác suất tăng là bao nhiêu?”.

Alpha Decay trong Trading: vì sao một chiến lược tốt dần mất hiệu quả?
11/03/2026
489 lượt đọc

Alpha Decay trong Trading: vì sao một chiến lược tốt dần mất hiệu quả? C

Trong đầu tư và quant trading, alpha được hiểu là phần lợi nhuận vượt trội mà một strategy tạo ra so với thị trường. Nếu một chiến lược có thể kiếm được lợi nhuận tốt hơn mức tăng chung của thị trường một cách ổn định, người ta nói rằng strategy đó có alpha. Ví dụ nếu chỉ số thị trường tăng trung bình 10% mỗi năm, nhưng một strategy trading tạo ra lợi nhuận 15% mỗi năm, thì phần 5% vượt trội có thể được xem là alpha. Nhiệm vụ chính của các trader định lượng và các quỹ quant chính là tìm ra những signal hoặc pattern trong dữ liệu có thể tạo ra alpha như vậy.

video-image

Truy Cập Miễn Phí Thư Viện Bot Tín Hiệu Giao Dịch Tự Động

Được nghiên cứu và phát triển bởi các chuyên gia từ QMTrade và cộng đồng nhà đầu tư chuyên nghiệp.

Truy cập ngay!