25/03/2026
18 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 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.
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?”.
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.
Một trong những khái niệm quan trọng nhất trong quant trading là Signal vs Noise. Nói đơn giản, signal là thông tin thực sự có giá trị dự báo cho biến động giá trong tương lai, còn noise là những biến động ngẫu nhiên của thị trường không mang nhiều ý nghĩa. Vấn đề là trong thị trường tài chính, hai thứ này gần như luôn trộn lẫn với nhau. Mỗi ngày thị trường tạo ra hàng nghìn chuyển động nhỏ: tin tức, dòng tiền ngắn hạn, giao dịch của các quỹ, thậm chí là các lệnh stop loss của trader cá nhân. Phần lớn những chuyển động này thực ra chỉ là noise, nhưng vì trader nhìn thấy giá thay đổi liên tục nên rất dễ nhầm lẫn rằng mọi biến động đều là tín hiệu.
Những giai đoạn thị trường giảm mạnh do chiến tranh hoặc căng thẳng địa chính trị thường khiến nhà đầu tư rơi vào trạng thái rất khó giao dịch. Tin tức tiêu cực xuất hiện liên tục, tâm lý thị trường thay đổi nhanh và dòng tiền có xu hướng rút khỏi tài sản rủi ro. Trong những thời điểm như vậy, nhiều chiến lược đầu tư truyền thống như “mua và giữ” thường gặp khó khăn vì thị trường không còn tăng ổn định mà chuyển sang trạng thái biến động mạnh.
Phần lớn các chiến lược quant không bắt đầu từ những mô hình toán học phức tạp, mà từ một giả thuyết khá đơn giản về hành vi của thị trường. Quant trading thực chất là quá trình biến những quan sát như vậy thành rule có thể kiểm tra bằng dữ liệu. Trên thị trường chứng khoán Việt Nam, một trong những giả thuyết phổ biến nhất là momentum – tức là những cổ phiếu tăng mạnh trong một khoảng thời gian thường có xu hướng tiếp tục tăng thêm một thời gian nữa vì dòng tiền vẫn đang tập trung vào đó. Điều này có thể thấy khá rõ trong thực tế. Ví dụ trong giai đoạn thị trường tích cực, nhiều cổ phiếu dẫn dắt thường tăng mạnh hơn chỉ số chung.
Đượ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!