25/03/2026
258 lượt đọ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.
Người mới thường mắc sai lầm ở chỗ nhìn backtest như một bài kiểm tra cuối cùng, trong khi thực ra nó chỉ là bài kiểm tra đầu tiên. Một strategy có lợi nhuận cao trong quá khứ chưa chắc là strategy tốt. Nó có thể chỉ là một cách sắp xếp dữ liệu khéo léo, hoặc tệ hơn, là một mô hình vô tình học thuộc lòng quá khứ.
Ví dụ rất quen thuộc ở Việt Nam là bạn lấy dữ liệu của một số cổ phiếu lớn như FPT, MWG, HPG, ACB, VCB rồi chạy chiến lược momentum đơn giản. Giai đoạn thị trường tăng tốt thì chiến lược này nhìn rất ổn, lợi nhuận đều, drawdown thấp. Nhưng đến khi đem áp dụng sang giai đoạn thị trường rung lắc mạnh, tín hiệu bắt đầu nhiễu, lệnh vào ra liên tục và lợi nhuận co lại rất nhanh. Điều đó cho thấy một đường backtest đẹp chưa nói lên nhiều điều, vì điều quan trọng không phải là chiến lược từng thắng trong lịch sử, mà là vì sao nó thắng, nó thắng trong điều kiện nào, và điều kiện đó có còn tồn tại nữa hay không.
Một lỗi khác rất hay gặp là dùng nhầm thông tin của tương lai mà không nhận ra. Người mới hay tải dữ liệu về rồi tính indicator cho cả bộ dữ liệu, sau đó sinh tín hiệu mua bán luôn trong cùng cây nến hoặc cùng ngày. Nghe thì có vẻ bình thường, nhưng thực tế nếu bạn dùng giá đóng cửa hôm nay để quyết định mua ngay ở giá đóng cửa hôm nay, thì đó là một giả định không thực tế. Trong đời thật, bạn chỉ biết giá đóng cửa sau khi phiên đã kết thúc. Nghĩa là lệnh hợp lý hơn phải là mua ở phiên sau. Chỉ cần sai lệch một bước rất nhỏ như vậy thôi, kết quả backtest có thể đẹp hơn rất nhiều so với giao dịch thật. Đây là lý do tại sao có những chiến lược lúc viết code thì Sharpe rất cao, nhưng đến khi paper trade hoặc vào lệnh thật lại thấy kết quả khác hẳn.
Với sinh viên hoặc người mới, cách hiểu đơn giản nhất là thế này. Backtest giống như bạn giải đề thi bằng đáp án đã có sẵn ở cuối sách. Bạn có thể làm đúng rất nhiều câu, nhưng điều đó chưa chứng minh được rằng khi đi thi thật bạn cũng sẽ làm tốt như vậy. Muốn biết chiến lược có thật sự mạnh hay không, phải kiểm tra nó trong điều kiện gần với thực tế hơn nhiều.
Một trong những cái bẫy lớn nhất của người mới làm quant là tin rằng dữ liệu lịch sử luôn khách quan. Thực ra dữ liệu có thể vô tình làm bạn hiểu sai chiến lược rất nhiều. Cái bẫy đầu tiên là chỉ nhìn vào những cổ phiếu còn “sống khỏe” đến hiện tại. Ví dụ bạn muốn kiểm tra một chiến lược trên nhóm VN30, rồi bạn lấy danh sách VN30 hiện tại chạy ngược về 5 năm trước. Làm vậy rất tiện, nhưng không chính xác, vì thành phần của chỉ số qua từng năm không giống nhau. Có mã từng ở trong rổ rồi bị loại, có mã trước kia yếu nhưng giờ mới mạnh lên. Khi bạn chỉ test trên nhóm cổ phiếu đang tốt ở hiện tại, bạn vô tình bỏ qua những mã kém hơn từng tồn tại trong quá khứ. Kết quả là chiến lược nhìn đẹp hơn thực tế, vì bộ dữ liệu đã bị làm sạch quá mức.
Ở Việt Nam, lỗi này càng dễ gặp vì nhiều người mới chỉ quen backtest trên những mã nổi tiếng, thanh khoản cao, tên quen thuộc. Nhưng thị trường thật không chỉ có FPT, VCB, HPG hay SSI. Trong nhiều giai đoạn, dòng tiền luân chuyển rất mạnh sang midcap hoặc smallcap. Có thời điểm nhóm chứng khoán chạy mạnh, có thời điểm nhóm bất động sản hút tiền, có lúc lại quay về ngân hàng. Nếu dữ liệu của bạn chỉ toàn những cổ phiếu nhìn đẹp ở hiện tại, bạn sẽ có cảm giác strategy nào cũng hiệu quả. Nhưng khi bước vào thị trường thật, danh mục thực tế luôn bừa bộn hơn nhiều.
Cái bẫy thứ hai là thử quá nhiều cách cho đến khi ra kết quả đẹp. Người mới thường bắt đầu bằng một ý tưởng rất đơn giản, chẳng hạn MA 10 cắt MA 30 thì mua. Chạy thử thấy chưa đẹp, liền đổi sang MA 15 và MA 40. Chưa ổn thì thêm điều kiện RSI phải trên 50. Sau đó lại thêm volume phải lớn hơn trung bình 20 phiên. Rồi thêm stop-loss 5 phần trăm, take-profit 12 phần trăm. Sau một hồi chỉnh sửa, cuối cùng cũng ra được một đường vốn rất mượt. Lúc đó ai cũng có cảm giác như mình vừa tối ưu được hệ thống. Nhưng thực ra nhiều khi mình chỉ đang “vẽ lại” chiến lược cho khớp với đoạn lịch sử vừa test mà thôi.
Hãy tưởng tượng bạn nhìn lại dữ liệu của HPG từ năm 2020 đến 2024 và tìm ra rằng MA 18 cắt MA 43 cho kết quả tốt nhất. Con số này nghe rất cụ thể nên dễ tạo cảm giác khoa học. Nhưng vấn đề là vì sao lại là 18 và 43, chứ không phải 20 và 50. Rất có thể đó chỉ là bộ tham số hợp nhất với đoạn dữ liệu cũ, chứ không phản ánh một quy luật ổn định của thị trường. Khi sang năm sau, hoặc chuyển từ HPG sang MSN hay CTG, chiến lược đó có thể yếu đi rất nhanh. Đây là kiểu bẫy rất phổ biến với người mới học Python và backtest, vì việc thử hàng trăm tổ hợp tham số quá dễ, trong khi việc kiểm soát xem mình có đang tối ưu quá mức hay không lại khó hơn nhiều.
Với người mới, có thể hiểu đơn giản thế này. Nếu bạn thử đủ nhiều cách, gần như lúc nào bạn cũng sẽ tìm ra một cách nhìn rất đẹp trong quá khứ. Nhưng đẹp trong quá khứ không có nghĩa là có lợi thế thật. Nó chỉ chứng minh rằng bạn đã tìm ra một chìa khóa khớp với ổ khóa cũ, còn ổ khóa của thị trường tương lai có thể đã khác rồi.
Đây là phần khiến nhiều người vỡ mộng nhất. Trên backtest, bạn thấy chiến lược lãi đều. Nhưng khi giao dịch thật, bạn mới nhận ra thị trường không cho bạn mua bán dễ dàng như trong code. Trên máy tính, bạn có thể giả định rằng cứ có tín hiệu là khớp ở đúng giá đóng cửa, hoặc đúng giá mở cửa hôm sau. Nhưng ngoài đời, luôn có một khoảng chênh giữa mức giá bạn muốn và mức giá bạn thật sự nhận được. Đó là lý do rất nhiều chiến lược lợi nhuận thấp nhưng tần suất giao dịch cao sẽ chết ngay khi đưa chi phí vào.
Ở Việt Nam, điều này rất dễ thấy. Ví dụ bạn viết một strategy lướt sóng ngắn trên cổ phiếu SSI. Mỗi lệnh bạn chỉ kỳ vọng lời khoảng 2 phần trăm. Nhìn trên backtest, tỷ lệ thắng khá tốt nên tổng thể vẫn đẹp. Nhưng khi vào giao dịch thật, bạn phải chịu phí giao dịch, thuế khi bán, rồi thêm chênh lệch mua bán trên bảng điện. Đôi khi thấy tín hiệu đẹp, bạn đặt mua nhưng cổ phiếu bật lên ngay, khớp cao hơn dự kiến. Đến lúc bán cũng không ra được đúng mức giá đẹp như trong mô phỏng. Tổng hợp những chi tiết nhỏ đó lại, lợi nhuận mỗi lệnh bị bào mòn rất nhanh. Một chiến lược lời 2 phần trăm mỗi trade trên giấy có thể chỉ còn rất ít, thậm chí âm khi bước vào thực chiến.
Với các mã thanh khoản vừa hoặc thấp, câu chuyện còn rõ hơn nữa. Giả sử bạn backtest trên một cổ phiếu midcap nào đó và thấy tín hiệu breakout rất hay. Nhưng lúc giao dịch thật, khi cổ phiếu bắt đầu tăng mạnh, bên bán mỏng đi rất nhanh. Bạn muốn mua giá 25.0 nhưng cuối cùng phải khớp lên 25.3 hoặc 25.4 mới đủ khối lượng. Đến khi cổ phiếu giảm, bạn lại không thoát được đúng mức giá mong muốn. Backtest thường không phản ánh được chuyện này. Nó nhìn thị trường như một dòng dữ liệu mượt mà, trong khi thị trường thật là nơi lệnh của bạn phải va chạm với lệnh của người khác.
Một điểm nữa mà sinh viên hay bỏ qua là vấn đề thời gian. Trong code, mọi thứ diễn ra tức thì. Nhưng ở thị trường thật, tín hiệu xuất hiện rồi bạn còn phải xử lý dữ liệu, gửi lệnh, chờ khớp, đôi khi mạng chậm hoặc bảng điện giật. Với những chiến lược ngắn hạn, chỉ cần chậm một chút là chất lượng giao dịch đã khác. Đây là lý do những người mới rất hay tự hỏi vì sao cùng một rule, cùng một dữ liệu mà backtest lãi còn trade thật thì không như mong đợi. Câu trả lời nằm ở chỗ thị trường thật có ma sát, còn backtest thường quá sạch sẽ.
Nói theo cách gần gũi, backtest giống như bạn tập đá bóng trong phòng gym, còn live trading là ra sân thật lúc trời mưa, cỏ trơn, khán giả ồn, đồng đội phối hợp không như tập. Kỹ thuật trên sân tập vẫn quan trọng, nhưng nếu không tính đến điều kiện thật thì kết quả sẽ khác rất xa.
Ngay cả khi dữ liệu của bạn sạch hơn, code của bạn đúng hơn và chi phí giao dịch đã được tính vào, vẫn còn một bẫy lớn nữa. Đó là thị trường không đứng yên. Một chiến lược có thể hoạt động rất tốt trong một giai đoạn, nhưng khi bối cảnh thay đổi, hiệu quả của nó cũng thay đổi theo. Đây là điều đặc biệt quan trọng với thị trường Việt Nam, vì Việt Nam thường có những giai đoạn luân chuyển rất rõ giữa các nhóm ngành và tâm lý thị trường thay đổi khá mạnh theo từng chu kỳ.
Ví dụ, một chiến lược mua theo breakout có thể hoạt động rất tốt trong giai đoạn thị trường hưng phấn, dòng tiền vào mạnh, nhà đầu tư sẵn sàng đẩy giá lên tiếp. Nhưng sang giai đoạn thị trường lình xình hoặc nghi ngờ, những cú breakout đó dễ trở thành bẫy tăng giá. Bạn mua xong thì cổ phiếu đứng lại hoặc quay đầu ngay. Ngược lại, một chiến lược bắt đáy ngắn hạn có thể rất hiệu quả khi thị trường đi ngang và hồi kỹ thuật thường xuyên, nhưng lại cực kỳ nguy hiểm trong những nhịp giảm mạnh kéo dài. Người mới thường thấy một strategy chạy tốt trong 2 năm rồi nghĩ rằng đó là quy luật bền vững. Thực ra rất có thể chiến lược đó chỉ hợp với một “mùa” của thị trường mà thôi.
Ở Việt Nam, chỉ cần nhìn lại vài năm gần đây là thấy rất rõ. Có giai đoạn cổ phiếu ngân hàng dẫn sóng, có giai đoạn chứng khoán và bất động sản bứt mạnh, nhưng cũng có lúc những nhóm đó suy yếu rõ rệt. Một chiến lược được xây trên logic rằng tiền sẽ luôn quay lại nhóm bluechip có thể hoạt động tốt ở một pha, nhưng sang pha khác lại không còn phù hợp. Điều quan trọng là phải hiểu chiến lược của mình sinh ra để kiếm tiền trong môi trường nào. Nó phù hợp với thị trường tăng mạnh, đi ngang hay biến động lớn. Nó cần thanh khoản cao hay chỉ cần biến động cao. Nó phù hợp với cổ phiếu vốn hóa lớn hay các mã đầu cơ. Khi chưa trả lời được những câu hỏi này, người mới rất dễ nhầm lẫn giữa chiến lược có lợi thế và chiến lược chỉ gặp đúng thời.
Vậy người mới nên làm gì để đỡ rơi vào 7 cái bẫy này. Cách đơn giản nhất là bớt tin vào một backtest đẹp ngay từ đầu. Hãy chia dữ liệu thành nhiều giai đoạn, thử xem chiến lược có còn ổn ở những khoảng thời gian khác nhau không. Đừng tối ưu quá nhiều tham số. Hãy tính cả phí, thuế, độ trượt giá vào từ sớm. Ưu tiên những chiến lược có logic đủ đơn giản để giải thích được. Và quan trọng nhất, trước khi nghĩ đến chuyện kiếm tiền nhanh từ quant, hãy coi backtest như một công cụ học cách nghi ngờ chính mình. Người sống lâu trong thị trường không phải người tạo được đường vốn đẹp nhất trong notebook, mà là người biết chiến lược của mình yếu ở đâu và còn sống được sau khi bỏ đi những ảo tưởng đẹp đẽ nhất.
Tóm lại, backtest đẹp không xấu. Nó vẫn là bước rất quan trọng trong quant trading. Nhưng điều nguy hiểm là quá yêu backtest của mình. Một chiến lược có lợi thế thật thường không quá hào nhoáng. Nó có thể không lãi khủng trong lịch sử, không có Sharpe đẹp như mơ, không có hàng chục điều kiện phức tạp. Nhưng đổi lại, nó thực tế hơn, bền hơn, dễ giải thích hơn và ít bị vỡ vụn khi đưa vào thị trường thật. Đó mới là thứ người mới nên theo đuổi.
0 / 5
Trong lĩnh vực quantitative finance, có một số công cụ mạnh mẽ nhưng ít được chú ý đến so với những mô hình phổ biến như Deep Learning hay SMA crossover. Một trong những công cụ mạnh mẽ đó chính là Mô hình Không gian Trạng thái (State-space models) và Bộ lọc Kalman (Kalman filter). Mặc dù có vẻ phức tạp, nhưng những công cụ này lại cực kỳ hữu ích và mạnh mẽ khi áp dụng vào việc phân tích và dự đoán thị trường tài chính. Mặc dù nghe có vẻ như là những mô hình nguyên thủy, thực tế chúng là những công cụ cực kỳ mạnh mẽ và bền bỉ (robust), đặc biệt trong môi trường thay đổi nhanh chóng của các thị trường tài chính.
Khi thực hiện bất kỳ chiến lược giao dịch nào trên thị trường tài chính, một yếu tố không thể thiếu chính là khả năng giải thích (interpretability) của mô hình giao dịch. Điều này đặc biệt quan trọng trong bối cảnh môi trường biến động và khi quản lý rủi ro là yếu tố sống còn đối với các quỹ đầu tư và các trader chuyên nghiệp. Mỗi chiến lược giao dịch không chỉ cần phải hiệu quả mà còn phải dễ hiểu, có thể giải thích một cách rõ ràng tại sao tín hiệu mua/bán lại được đưa ra trong một tình huống cụ thể.
Trong thực tế, rất nhiều ý tưởng giao dịch nghe qua đều có vẻ hợp lý. Ví dụ như mua khi giá vượt MA dài hạn, mua khi cổ phiếu breakout kèm thanh khoản tăng, hoặc đứng ngoài khi thị trường chung nằm dưới đường trung bình dài hạn. Nếu chỉ nhìn chart bằng mắt, rất dễ cảm thấy những ý tưởng như vậy “có vẻ đúng”. Vấn đề là cảm giác đó không đủ để dùng tiền thật. Với QM Capital, giá trị đầu tiên và lớn nhất của vectorized backtesting không phải là để khoe một equity curve đẹp, mà là để biến một ý tưởng mơ hồ thành một bộ quy tắc kiểm tra được.
Khi mới học quant trading, nhiều người thường tập trung gần như toàn bộ vào phần mô hình. Họ nghĩ rằng nếu dự báo đúng hơn một chút, hoặc nếu tìm được một tín hiệu chính xác hơn phần còn lại của thị trường, thì kết quả giao dịch chắc chắn sẽ tốt. Cách nghĩ này không sai hoàn toàn, nhưng mới đúng một nửa. Trong giao dịch thực tế, dự báo chỉ là điểm bắt đầu. Sau đó còn một bước quan trọng hơn nhiều: biến tín hiệu đó thành vị thế thật, giao dịch thật, lợi nhuận thật.
Nếu phải chọn một rủi ro làm hỏng nhiều chiến lược định lượng nhất, thì đó thường không phải là thiếu mô hình hiện đại, mà là overfitting. Nói đơn giản, overfitting xảy ra khi mô hình học quá kỹ dữ liệu quá khứ đến mức nó không chỉ học tín hiệu thật, mà còn học luôn cả nhiễu. Khi nhìn lại lịch sử, mọi thứ trông rất đẹp: độ chính xác cao, equity curve mượt, drawdown dễ chịu, Sharpe ratio hấp dẫn. Nhưng đến khi đem sang giai đoạn mới, hoặc live trading, mô hình bắt đầu hỏng rất nhanh.
Có một hiểu lầm rất phổ biến khi mới bước vào quant trading: cứ nghe đến “quant” là nghĩ ngay đến deep learning, transformers, reinforcement learning, foundation models, hay ít nhất cũng phải có một thứ gì đó đủ phức tạp để nghe giống phòng lab hơn là bàn giao dịch. Nhưng nếu nhìn vào cách nhiều tổ chức thật đang vận hành, bức tranh lại bớt hào nhoáng hơn nhiều.
Đượ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!