P.Thai Capital P.Thai Capital Journal

Cách Backtest Cổ Phiếu Việt Nam Đúng Phương Pháp (2026)

Trả lời nhanh: Backtest cổ phiếu Việt Nam đúng phương pháp nghĩa là kiểm thử chiến lược trên dữ liệu lịch sử sạch, đã điều chỉnh cổ tức và chia tách, mô phỏng đúng cơ chế HOSE — phí, thuế, biên độ, chu kỳ thanh toán T+2 — đồng thời tránh nhìn trước dữ liệu (look-ahead) và kiểm tra ngoài mẫu (out-of-sample) trước khi tin vào bất kỳ con số nào. Nội dung tham khảo, không phải khuyến nghị đầu tư.

Backtest cổ phiếu là gì và vì sao retail hay làm sai?

Backtest (kiểm thử ngược) là quá trình áp một bộ quy tắc mua/bán cố định lên dữ liệu giá quá khứ để xem nếu bạn đã giao dịch theo quy tắc đó, kết quả ra sao. Đây là bước bắt buộc trong chứng khoán định lượng (quantitative investing) — bạn không tin vào cảm giác “đồ thị đẹp”, bạn tin vào bằng chứng có thể đo và lặp lại.

Vấn đề: phần lớn nhà đầu tư cá nhân backtest sai phương pháp, rồi tin vào kết quả ảo. Một backtest sai không phải là vô dụng — nó còn tệ hơn không backtest, vì nó cho bạn cảm giác tự tin giả để rót tiền thật.

Ba cái sai phổ biến nhất ở thị trường Việt Nam:

Bài này trình bày cách backtest cổ phiếu Việt Nam đúng phương pháp theo một quy trình 6 bước, kèm những đặc thù của HOSE/HNX/UPCOM mà các tài liệu nước ngoài không nhắc tới. Nội dung mang tính tham khảo phương pháp, không phải khuyến nghị mua bán bất kỳ mã nào.

Nguyên tắc nền tảng: backtest mô phỏng quá khứ trung thực, không phải vẽ đường cong đẹp

Trước khi vào quy trình, cần khắc cốt một nguyên tắc: mục tiêu của backtest không phải tạo ra đường vốn (equity curve) đẹp nhất, mà là ước lượng trung thực xem chiến lược sẽ hành xử thế nào nếu chạy thật. Một backtest tốt thường cho kết quả khiêm tốn hơn bạn mong đợi — và đó là dấu hiệu lành mạnh.

Có hai loại sai lệch (bias) phải chống quyết liệt:

Loại sai lệch Bản chất Hậu quả nếu mắc phải
Look-ahead bias (nhìn trước) Dùng thông tin chưa thể biết tại thời điểm ra lệnh Kết quả backtest đẹp ảo, không tái lập được khi chạy thật
Survivorship bias (sống sót) Chỉ test trên mã còn niêm yết hôm nay Bỏ quên mã đã hủy niêm yết, đánh giá quá lạc quan
Data-snooping (dò dữ liệu) Thử nhiều tham số/chiến lược rồi chọn cái đẹp nhất Khớp với nhiễu ngẫu nhiên, không phải quy luật thật
Cost ignorance (bỏ phí) Không trừ phí, thuế, trượt giá Lãi giấy biến thành lỗ thật khi giao dịch

Toàn bộ quy trình dưới đây thực chất là một chuỗi rào chắn để chặn bốn loại sai lệch này.

Bước 1 — Chuẩn bị dữ liệu sạch: điều chỉnh cổ tức, chia tách và sự kiện doanh nghiệp

Dữ liệu là gốc rễ. Backtest trên dữ liệu bẩn thì mọi bước sau đều vô nghĩa.

Vì sao phải dùng giá điều chỉnh?

Khi một cổ phiếu chia cổ tức bằng tiền, trả cổ tức bằng cổ phiếu, hoặc chia tách (stock split), giá thị trường sẽ bị điều chỉnh giảm trong ngày giao dịch không hưởng quyền. Nếu bạn dùng giá thô (raw price), chiến lược sẽ hiểu nhầm cú điều chỉnh kỹ thuật này thành một phiên giảm sâu — kích hoạt tín hiệu bán giả hoặc cắt lỗ giả.

Giải pháp: dùng giá điều chỉnh (adjusted price) đã tính lại toàn bộ lịch sử theo các sự kiện quyền. Hầu hết nguồn dữ liệu định lượng nghiêm túc đều cung cấp cột giá điều chỉnh; bộ dữ liệu mở định lượng mà P.Thai Capital biên soạn cũng đi theo nguyên tắc này.

Kiểm tra chất lượng dữ liệu trước khi tin

Bước 2 — Định nghĩa chiến lược thành quy tắc tuyệt đối, không mơ hồ

Một chiến lược backtest được phải là tập quy tắc rõ ràng đến mức máy tính chạy được, không còn chỗ cho phán đoán cảm tính. Mỗi quy tắc cần trả lời bốn câu:

  1. Điều kiện vào lệnh: tín hiệu nào kích hoạt mua? (ví dụ minh hoạ: giá đóng cửa vượt trung bình động 50 phiên).
  2. Điều kiện thoát lệnh: chốt lời và cắt lỗ ở đâu? Theo giá, theo thời gian, hay theo tín hiệu đảo chiều?
  3. Khối lượng vị thế (position sizing): mỗi lệnh bao nhiêu phần trăm vốn, làm tròn theo lô 100 cổ phiếu của HOSE.
  4. Vũ trụ cổ phiếu (universe): test trên VN30, top thanh khoản, hay toàn sàn? Quy tắc chọn rổ phải cố định trước khi xem kết quả.

Nếu bạn không viết được quy tắc rõ ràng đến mức này, vấn đề không nằm ở công cụ — mà ở chỗ chiến lược của bạn vẫn còn là cảm giác chứ chưa phải hệ thống.

Bước 3 — Mô phỏng đúng cơ chế thị trường Việt Nam (đây là phần ai cũng quên)

Đây là khác biệt lớn nhất giữa backtest cổ phiếu Việt Nam đúng phương pháp và sao chép tài liệu nước ngoài. Thị trường Việt có những ràng buộc cơ chế mà nếu bỏ qua, kết quả backtest sẽ lệch rất xa thực tế.

Chu kỳ thanh toán T+2

Khi bạn mua cổ phiếu, cổ phiếu chỉ thực sự về tài khoản theo chu kỳ thanh toán T+2 (về trước trưa ngày làm việc thứ hai sau ngày khớp lệnh), và bạn chỉ có thể bán từ phiên chiều ngày T+2. Hệ quả cho backtest: bạn không thể mua rồi bán ngay trong cùng phiên như nhiều thị trường khác. Chiến lược lướt sóng siêu ngắn nếu không cài đúng ràng buộc thời điểm cổ phiếu về tài khoản sẽ tạo ra hàng loạt giao dịch không thể thực hiện ngoài đời — lãi ảo hoàn toàn. (Lưu ý: chu kỳ thanh toán có thể được cơ quan quản lý điều chỉnh theo thời gian, nên hãy đối chiếu quy định hiện hành tại thời điểm bạn backtest.)

Biên độ dao động giá

Mỗi sàn có biên độ trần/sàn khác nhau trong phiên: HOSE ±7%, HNX ±10%, UPCOM ±15% (và biên độ rộng hơn cho phiên đầu niêm yết). Nếu chiến lược của bạn giả định vào lệnh tại một mức giá vượt trần, lệnh đó không thể khớp trong thực tế. Backtest đúng phải chặn mọi lệnh ngoài biên độ trần/sàn.

Phí, thuế và trượt giá

Phải trừ đủ chi phí round-trip (một vòng mua–bán) trước khi tin vào lợi nhuận:

Khoản chi phí Áp dụng khi
Phí môi giới mua Mỗi lần mua
Phí môi giới bán Mỗi lần bán
Thuế thu nhập khi bán Mỗi lần bán cổ phiếu
Trượt giá (slippage) Mọi lệnh, đặc biệt mã thanh khoản thấp

Mức phí và thuế cụ thể tùy công ty chứng khoán và quy định hiện hành, nên hãy lấy đúng biểu phí tài khoản của bạn thay vì dùng số chung chung. Nguyên tắc bất biến: luôn backtest đã trừ phí ngay từ đầu, đừng bao giờ tính lãi gross rồi mới “ước lượng trừ phí sau”.

Thanh khoản và lô giao dịch

Lệnh khớp theo lô 100 cổ phiếu trên HOSE. Quan trọng hơn, đừng giả định bạn có thể mua/bán khối lượng lớn ở mã thanh khoản mỏng mà không làm dịch giá. Một quy tắc thực dụng: giới hạn khối lượng mô phỏng mỗi lệnh dưới một tỷ lệ nhỏ của khối lượng khớp trung bình phiên của mã đó.

Bước 4 — Chống nhìn trước (look-ahead) và rò rỉ dữ liệu

Look-ahead bias là kẻ giết người thầm lặng vì nó rất khó phát hiện. Vài bẫy thường gặp:

Nguyên tắc vàng để tự kiểm tra: tại mỗi thời điểm trong backtest, hãy tự hỏi “thông tin này tôi có thật sự biết được vào lúc đó không?”. Nếu câu trả lời là không, bạn đang nhìn trước.

Bước 5 — Kiểm thử ngoài mẫu và walk-forward để biết chiến lược có thật hay chỉ may

Đây là bước phân biệt người nghiệp dư và người chuyên nghiệp. Nếu bạn tối ưu tham số rồi báo cáo kết quả trên chính tập dữ liệu đã tối ưu, con số đó gần như vô nghĩa — nó chỉ phản ánh việc bạn đã khớp với nhiễu quá khứ.

Chia tập in-sample / out-of-sample

Nếu hiệu suất ngoài mẫu sụt giảm mạnh so với trong mẫu, đó là dấu hiệu kinh điển của overfit (khớp quá mức). Một lần đã “ngó” vào tập ngoài mẫu để cải tiến, tập đó coi như đã hỏng — bạn cần dữ liệu mới hoặc chờ thời gian trôi.

Walk-forward: mô phỏng cách bạn thực sự vận hành

Phương pháp chặt chẽ hơn là walk-forward: trượt một cửa sổ thời gian, tối ưu trên đoạn quá khứ rồi test trên đoạn ngay sau đó mà chiến lược “chưa thấy”, lặp lại nhiều lần. Cách này mô phỏng đúng việc bạn sẽ định kỳ hiệu chỉnh chiến lược trong thực tế. Vì TTCK Việt Nam mới có chuỗi dữ liệu sạch đủ dài sau khoảng năm 2010, hãy thận trọng: số lượng giao dịch độc lập càng nhỏ thì độ tin cậy thống kê càng thấp.

Hạn chế số tham số

Mỗi tham số tự do bạn thêm vào là một cơ hội để chiến lược khớp với may rủi. Quy tắc thực dụng: ưu tiên ít tham số có ý nghĩa kinh tế rõ ràng hơn là nhồi nhiều tham số rồi mong đường cong đẹp.

Bước 6 — Đọc kết quả bằng chỉ số rủi ro, không chỉ nhìn tổng lợi nhuận

Tổng lợi nhuận là chỉ số gây hiểu lầm nhiều nhất, vì nó không nói gì về cái giá rủi ro để đạt được nó. Người làm định lượng đọc một backtest qua nhiều lăng kính:

Một backtest “đẹp” với sụt giảm tối đa mà bạn không thể chịu đựng trong đời thực là một backtest vô dụng — vì bạn sẽ bỏ cuộc đúng đáy. Hãy chọn chiến lược bạn có thể bám theo cả lúc thua, không phải chiến lược trông hấp dẫn nhất trên giấy.

Một ví dụ minh hoạ về cách số liệu đánh lừa

Ví dụ minh hoạ (số tròn giả định, không phải kết quả thật): giả sử hai chiến lược cùng cho cùng một mức lợi nhuận tổng sau giai đoạn test, nhưng chiến lược A đạt được với sụt giảm tối đa thấp, còn chiến lược B với sụt giảm tối đa sâu gấp nhiều lần. Cùng lợi nhuận, nhưng A vượt trội về chất lượng vì rủi ro thấp hơn nhiều — và quan trọng là khả năng bạn còn ở lại để hái được khoản lãi đó cao hơn hẳn. Đây là lý do không bao giờ đánh giá backtest chỉ bằng một con số lợi nhuận.

Từ backtest tới giao dịch thật: bước cuối không được bỏ qua

Backtest tốt mới chỉ là điều kiện cần. Trước khi rót vốn thật, hãy:

Công cụ “Quét cổ phiếu” với P.Thai Quant Score, bộ dữ liệu mở định lượng và các báo cáo định giá cổ phiếu của site được xây trên đúng tinh thần này — dữ liệu điểm-theo-thời-gian, mô phỏng trung thực cơ chế thị trường Việt, và đánh giá theo rủi ro chứ không chỉ lợi nhuận.

FAQ

Backtest cổ phiếu Việt Nam cần ít nhất bao nhiêu năm dữ liệu? Không có con số tuyệt đối, nhưng quan trọng hơn số năm là số giao dịch độc lập mà chiến lược tạo ra và việc dữ liệu phải đi qua nhiều trạng thái thị trường khác nhau (tăng, giảm, đi ngang). Chuỗi dữ liệu sạch của TTCK Việt Nam tương đối dài sau khoảng năm 2010; càng ít giao dịch thì kết luận càng kém tin cậy.

Tôi mới học, có nên dùng phần mềm backtest có sẵn không? Nên, nhưng phải hiểu nguyên lý trước. Các thư viện và phần mềm backtest giúp bạn chạy nhanh hơn, nhưng nếu không nắm các bẫy như nhìn trước, bỏ phí hay overfit, bạn sẽ mắc sai lầm mà không hề biết. Công cụ không thay được tư duy phương pháp.

Vì sao backtest của tôi đẹp nhưng giao dịch thật lại thua? Phổ biến nhất là bốn nguyên nhân: nhìn trước dữ liệu, không trừ đủ phí và thuế, bỏ qua ràng buộc chu kỳ thanh toán T+2 và biên độ giá, hoặc overfit do tối ưu trên chính tập dữ liệu test. Hãy soát lại từng bước trong quy trình ở trên.

Backtest có cần điều chỉnh cổ tức và chia tách không? Bắt buộc. Dùng giá điều chỉnh để tránh việc các đợt chốt quyền tạo ra cú sụt giá giả kích hoạt tín hiệu sai. Đây là một trong những lỗi dữ liệu phổ biến nhất ở nhà đầu tư cá nhân Việt Nam.

Walk-forward khác gì kiểm thử ngoài mẫu thông thường? Kiểm thử ngoài mẫu chia dữ liệu một lần thành phần phát triển và phần đóng băng. Walk-forward trượt cửa sổ nhiều lần, lặp lại việc tối ưu trên quá khứ rồi test trên tương lai gần, mô phỏng đúng cách bạn định kỳ hiệu chỉnh chiến lược khi vận hành thật. Nội dung mang tính tham khảo, không phải tư vấn đầu tư.


Miễn trừ trách nhiệm: Nội dung mang tính phân tích định lượng, không phải khuyến nghị đầu tư. Nhà đầu tư tự chịu trách nhiệm với quyết định của mình.

Miễn trừ trách nhiệm: Nội dung là phân tích định lượng dựa trên dữ liệu lịch sử, mang tính tham khảo. KHÔNG phải khuyến nghị mua/bán. Giao dịch có rủi ro, kết quả backtest không đảm bảo hiệu suất tương lai. Nhà đầu tư tự chịu trách nhiệm cho quyết định của mình.