Từ một notebook Python đến một báo cáo nghiên cứu Quant hoàn chỉnh
Notebook Python
Khi mới học Quant, có một giai đoạn khá thú vị là lần đầu tiên chúng ta tự viết được một chương trình backtest. Bạn lấy dữ liệu lịch sử của vài chục cổ phiếu, tạo một tín hiệu Momentum hoặc Mean Reversion, viết quy tắc mua bán rồi chạy thử trên dữ liệu quá khứ. Chương trình trả về một đường lợi nhuận khá đẹp, CAGR cao hơn VN-Index, Sharpe Ratio tương đối tốt và Maximum Drawdown có vẻ chấp nhận được. Nếu chỉ dừng ở bước này, chúng ta có thể rất hào hứng vì nghĩ rằng mình đã tìm được một chiến lược hiệu quả. Nhưng trong nghiên cứu định lượng chuyên nghiệp, kết quả backtest chưa phải điểm kết thúc. Câu hỏi tiếp theo là: Nếu đưa báo cáo và mã nguồn cho một người khác, họ có thể chạy lại và thu được kết quả tương tự không? Nếu thay đổi một vài giả định về dữ liệu, giá khớp lệnh hoặc chi phí giao dịch, chiến lược có còn hoạt động không? Và quan trọng nhất, chúng ta có thể giải thích được tại sao chiến lược tạo ra lợi nhuận hay chỉ đang nhìn một đường biểu diễn được tối ưu trên dữ liệu lịch sử?
Đây là lý do mình nghĩ người học Quant nên luyện viết Backtest Research Report ngay từ những project đầu tiên, thay vì chỉ học cách tính lợi nhuận hoặc sử dụng một thư viện backtesting. Báo cáo này không nhất thiết phải dài hàng chục trang hay trình bày như một luận văn học thuật. Điều quan trọng là nó phải đủ rõ để người khác hiểu được giả thuyết, kiểm tra dữ liệu, tái lập quy tắc giao dịch và phản biện kết luận. Một chiến lược không thể giải thích vì sao mua cổ phiếu A vào ngày T, sử dụng thông tin gì để ra quyết định và giả định khớp lệnh ở mức giá nào thì rất khó được đánh giá nghiêm túc. Điều đó càng quan trọng khi chúng ta sử dụng AI để hỗ trợ viết code, bởi AI có thể tạo ra một chương trình chạy rất nhanh nhưng không bảo đảm mọi phép tính đều đúng về mặt tài chính.
PHẦN 1. BACKTEST ĐẸP CHƯA ĐỦ, TRƯỚC HẾT PHẢI GIẢI THÍCH ĐƯỢC MÌNH ĐANG KIỂM TRA ĐIỀU GÌ
Giả sử chúng ta muốn nghiên cứu một chiến lược đơn giản trên thị trường Việt Nam: mỗi cuối tháng, chọn năm cổ phiếu có Momentum 20 phiên cao nhất trong một nhóm khoảng 30 cổ phiếu đủ thanh khoản, phân bổ vốn bằng nhau và nắm giữ đến kỳ tái cân bằng tháng sau. Đây là một bài toán phù hợp để học Quant vì không đòi hỏi Machine Learning phức tạp, nhưng có đủ các thành phần cơ bản của một chiến lược đầu tư: dữ liệu đầu vào, tín hiệu, lựa chọn cổ phiếu, phân bổ vốn, thời điểm giao dịch và đánh giá hiệu quả. Nếu chỉ nói chiến lược Momentum 20 phiên đạt CAGR 20%/năm thì người đọc vẫn chưa biết chúng ta thực sự đã làm gì. Bộ 30 cổ phiếu được lựa chọn dựa trên thanh khoản của năm nào? Có phải đó là 30 cổ phiếu đang tồn tại ở thời điểm hiện tại không? Nếu một cổ phiếu từng đủ điều kiện nhưng sau đó bị hủy niêm yết, nó có được giữ trong dữ liệu lịch sử không? Nếu danh sách cổ phiếu đã được chọn bằng thông tin của tương lai, backtest có thể có lợi thế mà nhà đầu tư thực tế không hề có.
Vì vậy, phần đầu tiên của báo cáo phải mô tả rõ câu hỏi nghiên cứu và phạm vi dữ liệu. Trong ví dụ Momentum, câu hỏi không nên viết chung chung là “chiến lược Momentum có hiệu quả không”, mà cần cụ thể hơn: Khi xếp hạng các cổ phiếu theo lợi suất 20 phiên gần nhất và tái cân bằng hàng tháng, nhóm có Momentum cao nhất có tạo lợi nhuận vượt benchmark trong giai đoạn nghiên cứu hay không? Chúng ta cần ghi rõ thị trường, điều kiện lựa chọn cổ phiếu, thời gian nghiên cứu, nguồn giá, loại giá sử dụng và quy tắc xử lý các sự kiện doanh nghiệp. Nếu chọn dữ liệu từ năm 2020 đến năm 2025, phải nói rõ giai đoạn nào được dùng để phát triển chiến lược, giai đoạn nào để điều chỉnh tham số và giai đoạn nào được giữ lại để kiểm định ngoài mẫu. Một báo cáo nghiêm túc cũng cần phân biệt kết quả backtest được tạo ra từ dữ liệu đã biết tại từng thời điểm với kết quả chỉ mang tính minh họa trên một danh sách cổ phiếu cố định. Với người mới, làm một nghiên cứu nhỏ có giới hạn rõ ràng vẫn tốt hơn một backtest dài mười năm nhưng sử dụng dữ liệu không đúng thời điểm.
Điểm thứ hai cần giải thích là quy tắc giao dịch. Nghe có vẻ đơn giản khi nói “mua Top 5 Momentum vào cuối tháng”, nhưng trong thực tế có rất nhiều cách diễn giải khác nhau. Tín hiệu được tính bằng giá đóng cửa của phiên cuối tháng hay sử dụng dữ liệu đến phiên trước đó? Nếu dùng giá đóng cửa để xếp hạng, chương trình giả định mua ngay tại giá đóng cửa hay chờ phiên giao dịch tiếp theo? Nếu một cổ phiếu tăng trần và không có lượng bán đủ để khớp, chương trình có vẫn giả định mua được toàn bộ khối lượng không? Nếu một mã bị tạm ngừng giao dịch, danh mục giữ cổ phiếu đó, loại ra hay chuyển thành tiền mặt? Khi bán ra, việc tính toán có tuân thủ thời điểm chứng khoán được phép bán và những điều kiện giao dịch đang áp dụng hay không? Những quyết định này có thể làm thay đổi đáng kể kết quả, đặc biệt với chiến lược giao dịch thường xuyên hoặc tập trung vào cổ phiếu thanh khoản thấp. Vì vậy, một bản backtest có thể tái lập phải mô tả được trình tự từ thời điểm dữ liệu xuất hiện, tín hiệu được tạo, lệnh được gửi, khối lượng được khớp đến khi danh mục được cập nhật. Nếu chưa xác định rõ thời điểm có thể thực sự thực hiện giao dịch, chúng ta chưa nên xem lợi nhuận mô phỏng là lợi nhuận có thể đạt được.
Một vấn đề thường bị xem nhẹ là lựa chọn benchmark. Giả sử chiến lược chỉ đầu tư vào những cổ phiếu vốn hóa lớn và thanh khoản cao, nhưng chúng ta lại so sánh kết quả với một chỉ số không phù hợp về phạm vi hoặc phương pháp tính lợi nhuận. Khi đó, mức vượt trội có thể đến từ sự khác biệt về đặc điểm danh mục, chứ không phải chất lượng tín hiệu Momentum. Trong nghiên cứu ban đầu, có thể so sánh với VN-Index hoặc VN30, đồng thời xây dựng thêm một danh mục equal-weight trên cùng tập cổ phiếu làm đối chứng. Nếu chiến lược Momentum đạt hiệu quả tốt hơn VN-Index nhưng không vượt được danh mục chia đều 30 cổ phiếu, chúng ta cần giải thích sự khác biệt đó. Có thể chiến lược tạo ra giá trị từ việc lựa chọn cổ phiếu, nhưng cũng có thể kết quả chủ yếu phản ánh đặc điểm của nhóm tài sản được lựa chọn. Khi so sánh còn phải thống nhất việc tính cổ tức, thời gian đầu tư, lượng tiền mặt và chi phí. Không nên so sánh một chiến lược đã tính Total Return với một benchmark chỉ phản ánh biến động giá rồi kết luận phần chênh lệch hoàn toàn là alpha.
PHẦN 2. MỘT BÁO CÁO BACKTEST CẦN TRÌNH BÀY NHỮNG GÌ ĐỂ NGƯỜI KHÁC CÓ THỂ PHẢN BIỆN?
Nếu đang hướng dẫn một bạn mới làm Quant Research, mình thường khuyên đừng bắt đầu viết báo cáo bằng biểu đồ lợi nhuận. Hãy bắt đầu từ một trang mô tả nghiên cứu, nơi người đọc có thể hiểu những giả định quan trọng nhất trước khi xem kết quả. Chẳng hạn, với chiến lược Momentum vừa nêu, trang đầu nên có tên chiến lược, phiên bản nghiên cứu, nguồn dữ liệu, giai đoạn kiểm định, định nghĩa tín hiệu, quy tắc chọn cổ phiếu, giới hạn danh mục, thời điểm khớp lệnh, benchmark và những khoản chi phí được đưa vào. Chỉ cần thiếu một trong những thông tin này, người khác có thể viết lại một chương trình trông giống hệt về ý tưởng nhưng trả ra kết quả hoàn toàn khác. Đây cũng là lý do một quy trình nghiên cứu tốt cần tách phần mô tả chiến lược ra khỏi kết quả, thay vì viết kết luận trước rồi điều chỉnh phương pháp cho phù hợp với những gì đã quan sát được.
Một mẫu tóm tắt có thể xây dựng như sau. Các thông số dưới đây chỉ minh họa cách viết báo cáo, không phải kết quả backtest đã chạy trên dữ liệu thật.

Sau phần mô tả phương pháp, báo cáo mới đi đến kết quả. Ở đây, mình nghĩ một sai lầm khá phổ biến là chỉ đưa ra CAGR, Sharpe Ratio và một biểu đồ Equity Curve. Ba chỉ tiêu đó có giá trị, nhưng chưa đủ để đánh giá một chiến lược. CAGR cho biết tốc độ tăng trưởng kép theo năm, nhưng không cho thấy nhà đầu tư đã phải trải qua những giai đoạn thua lỗ như thế nào. Sharpe Ratio giúp đánh giá lợi nhuận vượt mức tham chiếu trên một đơn vị biến động, nhưng kết quả phụ thuộc vào cách tính return, lãi suất phi rủi ro, tần suất dữ liệu và các đặc điểm phân phối lợi suất. Maximum Drawdown phản ánh mức sụt giảm lớn nhất từ đỉnh đến đáy trong giai đoạn nghiên cứu, nhưng cũng chưa cho biết danh mục mất bao lâu để phục hồi. Vì vậy, ngoài các chỉ tiêu tổng hợp, báo cáo nên cho thấy kết quả theo năm, theo trạng thái thị trường và theo từng giai đoạn khó khăn. Một chiến lược có CAGR tốt nhờ một năm tăng trưởng đặc biệt mạnh nhưng thua benchmark trong phần lớn các năm còn lại cần được đánh giá khác với chiến lược có mức vượt trội ổn định hơn.
Ví dụ, giả sử hai chiến lược đều đạt lợi nhuận kép 15%/năm trong một phép mô phỏng giả định. Chiến lược A tăng trưởng tương đối đều, có Maximum Drawdown khoảng 12% và giao dịch không quá thường xuyên. Chiến lược B có những năm lợi nhuận rất cao nhưng từng giảm 40%, phải thực hiện nhiều giao dịch và phụ thuộc đáng kể vào một vài cổ phiếu. Nếu chỉ nhìn CAGR, hai chiến lược có vẻ tương đương. Nhưng xét từ khả năng quản trị vốn và trải nghiệm thực tế của nhà đầu tư, chúng khác nhau rất nhiều. Với nhóm cổ phiếu Việt Nam, còn cần kiểm tra mức đóng góp lợi nhuận theo mã và ngành. Nếu hầu hết lợi nhuận đến từ một vài cổ phiếu vốn hóa lớn, có thể chiến lược đang hưởng lợi từ một yếu tố tập trung mà người nghiên cứu chưa nhận ra. Nếu chiến lược thường chọn những cổ phiếu thanh khoản thấp, lợi nhuận mô phỏng có thể khó triển khai khi quy mô vốn tăng. Đây là lý do nên bổ sung Return Attribution, mức độ tập trung danh mục, tỷ lệ giao dịch thành công và khả năng hấp thụ lệnh của thị trường, thay vì chỉ báo cáo những chỉ tiêu hiệu suất dễ nhìn.
Chi phí giao dịch cũng cần được trình bày tách biệt, không nên chỉ nói rằng đã tính phí. Một chiến lược có turnover cao có thể bị giảm mạnh lợi nhuận sau khi tính phí mua bán, thuế áp dụng, spread và slippage. Vì vậy, nên thể hiện hai đường Equity Curve: trước chi phí và sau chi phí. Sau đó thử tăng giả định chi phí hoặc giảm tỷ lệ khớp lệnh để đánh giá kết quả có nhạy cảm đến mức nào. Với những chiến lược lựa chọn cổ phiếu thanh khoản thấp, giả định mua bán toàn bộ vị thế tại một mức giá duy nhất thường quá lạc quan, đặc biệt khi khối lượng đặt lệnh chiếm tỷ trọng lớn so với thanh khoản thực tế. Trong một báo cáo tốt, nếu chưa có dữ liệu intraday hoặc order book để mô phỏng market impact, người nghiên cứu nên thừa nhận hạn chế này và thực hiện kiểm định với các kịch bản trượt giá khác nhau. Không có gì sai khi một phiên bản đầu tiên sử dụng mô hình khớp lệnh đơn giản. Vấn đề chỉ xuất hiện khi chúng ta sử dụng giả định đơn giản nhưng trình bày kết quả như thể chiến lược chắc chắn có thể thực hiện với tiền thật.
Một thành phần nữa khiến báo cáo đáng tin cậy hơn là khả năng tái lập. Giả sử hôm nay bạn chạy một chiến lược và nhận được Sharpe 1,4. Sau ba tháng, khi tải lại dữ liệu và chạy cùng notebook, kết quả chuyển thành 1,1. Nếu không lưu dữ liệu, phiên bản code và các tham số đã sử dụng, bạn sẽ rất khó xác định nguyên nhân. Có thể nhà cung cấp điều chỉnh lại giá lịch sử, danh sách cổ phiếu bị thay đổi, một thư viện Python được cập nhật hoặc chương trình đã được chỉnh sửa mà không ghi nhận. Vì vậy, nếu muốn người khác thực sự phản biện được, hãy lưu dataset snapshot, file cấu hình tham số, mã nguồn có phiên bản, danh sách các giao dịch mô phỏng và báo cáo kết quả. Với project cá nhân, một repository GitHub có cấu trúc rõ ràng cùng file README hướng dẫn chạy lại là đủ tốt để bắt đầu. Người đọc không nhất thiết phải đồng ý với giả thuyết của bạn, nhưng họ cần có khả năng xác định chính xác bước nào đã dẫn đến kết luận. Nếu dữ liệu thương mại không được phép chia sẻ, có thể cung cấp dữ liệu mẫu được quyền sử dụng, cấu trúc schema, phiên bản nguồn và hướng dẫn tái tạo trong phạm vi được cấp phép; không nên tự ý phân phối lại dữ liệu có bản quyền.
PHẦN 3. MUỐN BÁO CÁO CÓ GIÁ TRỊ, HÃY TỰ ĐẶT NHỮNG CÂU HỎI KHÓ NHẤT TRƯỚC KHI NGƯỜI KHÁC HỎI
Trong thực tế, phần mình quan tâm nhất khi đọc một báo cáo backtest không phải chiến lược có Sharpe cao bao nhiêu, mà là người nghiên cứu đã thử làm cho giả thuyết của mình thất bại như thế nào. Giả sử chiến lược Momentum 20 phiên cho kết quả tốt trong giai đoạn nghiên cứu. Nếu thay Momentum 20 phiên bằng 15 hoặc 25 phiên, kết quả có còn tương đối ổn định không? Nếu thay số lượng cổ phiếu được chọn từ năm lên bảy hoặc mười mã, mức lợi nhuận và rủi ro thay đổi thế nào? Nếu tăng chi phí giao dịch, giới hạn tỷ trọng từng mã hoặc chỉ cho phép giao dịch trong phạm vi thanh khoản thực tế, chiến lược có còn vượt benchmark không? Một chiến lược chỉ hoạt động khi sử dụng đúng một cấu hình rất hẹp chưa chắc đã vô giá trị, nhưng đó là dấu hiệu cần thận trọng. Bởi trong dữ liệu tài chính, chúng ta rất dễ tìm được một bộ tham số có kết quả đẹp do ngẫu nhiên. Khi sử dụng AI hoặc những công cụ tối ưu hóa tự động, rủi ro này còn lớn hơn vì việc thử hàng trăm cấu hình trở nên quá dễ dàng.
Đây cũng là lý do người nghiên cứu cần ghi lại những thử nghiệm đã thất bại, chứ không chỉ công bố mô hình cuối cùng. Chẳng hạn, trước khi chọn Momentum 20 phiên, bạn đã thử Momentum 5, 10, 20, 40 và 60 phiên; thử danh mục Top 5, Top 10; thử tái cân bằng hàng tuần, hai tuần và hàng tháng. Sau khi quan sát kết quả, bạn chọn cấu hình có Sharpe cao nhất. Nếu sau đó chỉ công bố chiến lược chiến thắng mà không đề cập đến số lượng thử nghiệm, người đọc có thể đánh giá quá cao khả năng dự báo thực sự. Đây là vấn đề multiple testing và backtest overfitting, được thảo luận trong nghiên cứu The Deflated Sharpe Ratio của Bailey và López de Prado. Tinh thần quan trọng của nghiên cứu này là không thể xem một Sharpe cao như bằng chứng mạnh nếu bỏ qua quá trình lựa chọn mô hình từ rất nhiều thử nghiệm. Với người mới học Quant, chưa nhất thiết phải áp dụng ngay những phương pháp thống kê phức tạp, nhưng tối thiểu nên ghi lại số lần thử, lý do thay đổi tham số, kết quả những phương án khác và một giai đoạn kiểm định thực sự chưa từng được sử dụng để lựa chọn chiến lược.
Một vấn đề khác là phân biệt In-Sample và Out-of-Sample. Giả sử chúng ta dùng dữ liệu từ năm 2020 đến 2023 để phát triển chiến lược và giữ giai đoạn 2024–2025 để kiểm tra. Khi thấy kết quả 2024–2025 không tốt, nhiều bạn sẽ quay lại chỉnh tham số, thay điều kiện lọc hoặc bổ sung thêm một chỉ báo để cải thiện kết quả. Việc nghiên cứu tiếp là bình thường, nhưng nếu liên tục nhìn vào cùng tập kiểm định rồi chỉnh sửa cho đến khi đẹp, tập đó không còn thực sự độc lập nữa. Những thay đổi mới phải được ghi nhận thành các thử nghiệm tiếp theo, và sẽ cần một giai đoạn chưa bị sử dụng để xác nhận hiệu quả. Trong bài toán Machine Learning với nhãn lợi suất nhiều phiên, còn cần kiểm soát việc các nhãn chồng lấn qua ranh giới train/test. Với các chiến lược quy tắc đơn giản, dù không có mô hình học máy, chúng ta vẫn nên lưu ý vấn đề chọn tham số dựa trên dữ liệu tương lai. Nếu một chiến lược không hoạt động trên tập ngoài mẫu, kết luận có giá trị nhất đôi khi chính là chưa đủ bằng chứng để đưa chiến lược vào giao dịch, thay vì cố điều chỉnh cho đến khi có thể công bố một đường lợi nhuận đẹp.
Để báo cáo có ích cho người đọc, mình nghĩ nên dành một phần riêng cho những trường hợp chiến lược hoạt động kém. Ví dụ, Momentum có thể gặp khó khăn khi thị trường đảo chiều nhanh; chiến lược Mean Reversion có thể thua lỗ kéo dài khi cổ phiếu bước vào xu hướng mạnh; còn những mô hình lựa chọn cổ phiếu dựa trên thanh khoản có thể chịu ảnh hưởng lớn khi điều kiện thị trường thay đổi. Nếu người nghiên cứu chỉ đưa ra lợi nhuận bình quân của cả giai đoạn mà không phân tích những thời điểm thất bại, người đọc sẽ không biết rủi ro thực sự nằm ở đâu. Với chiến lược Momentum trên HOSE, có thể chia kết quả theo những giai đoạn thị trường tăng, giảm hoặc biến động mạnh, sau đó kiểm tra mức lỗ, turnover và chất lượng khớp lệnh. Cần lưu ý cách xác định trạng thái thị trường phải được thiết kế rõ ràng, đặc biệt nếu trạng thái đó được sử dụng để ra quyết định giao dịch. Việc chia thị trường bằng thông tin tương lai rồi lựa chọn chiến lược phù hợp cho từng giai đoạn sẽ tạo ra một dạng look-ahead bias khác.
Một cách kiểm tra rất hữu ích khác là tách chất lượng tín hiệu khỏi chất lượng danh mục. Giả sử chiến lược có lợi nhuận tốt hơn benchmark. Kết quả đó có thể đến từ tín hiệu Momentum thực sự giúp lựa chọn cổ phiếu, nhưng cũng có thể do danh mục vô tình tập trung vào những ngành tăng trưởng mạnh, có beta cao hoặc được hưởng lợi từ một giai đoạn thị trường đặc biệt. Vì vậy, nên thử so sánh chiến lược với một danh mục equal-weight trên cùng universe, kiểm tra lợi suất theo ngành, đóng góp của từng mã và mức độ tập trung của các nguồn lợi nhuận. Nếu thay đổi phương pháp phân bổ vốn mà hiệu quả biến mất, có thể lợi thế chủ yếu đến từ Portfolio Construction chứ không phải bản thân tín hiệu. Điều này không nhất thiết xấu, nhưng cần mô tả đúng để không đánh đồng tất cả lợi nhuận vượt trội với alpha của mô hình. Một báo cáo tốt giúp chúng ta hiểu chiến lược đang làm đúng việc gì, thay vì chỉ chứng minh tổng lợi nhuận cuối kỳ cao hơn một con số tham chiếu.
Nếu cần hoàn thành một project có thể đưa lên GitHub hoặc trình bày khi ứng tuyển vào vị trí Quant Research, mình sẽ chọn cách viết báo cáo khoảng 5–8 trang thay vì cố tạo một tài liệu quá dài. Trang đầu mô tả giả thuyết và kết luận chính; phần tiếp theo trình bày dữ liệu, universe và quy tắc giao dịch; sau đó là kết quả so với benchmark, phân tích rủi ro và độ nhạy; cuối cùng là hạn chế và những hướng nghiên cứu tiếp theo. Phụ lục hoặc repository lưu mã nguồn, cấu hình, snapshot dữ liệu được phép chia sẻ và toàn bộ danh sách giao dịch. Đặc biệt, báo cáo cần ghi rõ đây là kết quả backtest giả định chứ không phải thành tích giao dịch thực tế. Khi trình bày với người khác, bạn nên sẵn sàng giải thích một vài giao dịch cụ thể: tại sao mã đó được mua vào ngày này, dữ liệu đầu vào khi đó là gì, giá khớp được tính thế nào và việc mua bán ảnh hưởng đến danh mục ra sao. Nếu kiểm tra thủ công một vài giao dịch mà không khớp với logic được mô tả, đó là dấu hiệu cần kiểm tra lại toàn bộ chương trình trước khi tin vào các chỉ tiêu tổng hợp.
Điều thú vị là khi bạn viết báo cáo theo cách này, quá trình phản biện sẽ giúp cải thiện chính chiến lược của mình. Một người đọc có thể phát hiện bạn đang sử dụng danh sách cổ phiếu hiện tại cho lịch sử quá khứ. Người khác có thể chỉ ra rằng giả định mua vào ngày tín hiệu không khả thi. Một người có kinh nghiệm Portfolio Management có thể nhận thấy mức lợi nhuận vượt trội chủ yếu đến từ một ngành hoặc một vài cổ phiếu. Những ý kiến phản biện đó không làm giảm giá trị nghiên cứu; ngược lại, chúng giúp bạn hiểu rõ hơn phần nào của kết quả có thể tin được và phần nào vẫn cần kiểm chứng. Trong môi trường nghiên cứu chuyên nghiệp, việc một chiến lược bị loại vì không vượt qua kiểm định cũng là kết quả bình thường. Vấn đề đáng ngại hơn là một chiến lược chưa được kiểm tra đầy đủ nhưng lại được sử dụng để ra quyết định với tiền thật.
LỜI KẾT
Nếu đang học Quant, mình nghĩ nên đặt mục tiêu hoàn thành một báo cáo backtest có thể phản biện được, thay vì chỉ cố viết ra một chương trình có lợi nhuận cao nhất. Một project nhỏ sử dụng 20–30 cổ phiếu Việt Nam, một tín hiệu đơn giản và một bộ quy tắc rõ ràng đã đủ để luyện phần lớn những kỹ năng nền tảng: làm sạch dữ liệu, xác định thời điểm tín hiệu, mô phỏng giao dịch, lựa chọn benchmark, tính chi phí, đánh giá rủi ro và kiểm định ngoài mẫu.
Khi làm được những việc đó, việc học thêm Machine Learning, tối ưu hóa danh mục hay những chiến lược phức tạp sẽ có ý nghĩa hơn rất nhiều. Bởi dù sử dụng Ridge Regression, Random Forest, XGBoost hay một mô hình đơn giản dựa trên Momentum, chúng ta vẫn phải trả lời những câu hỏi giống nhau về dữ liệu, giả định và khả năng thực hiện thực tế.
