Làm Sao Mình Giữ Cho Nghiên Cứu Trading Của Mình Trung Thực
· #research-method #validation #backtesting #systematic-trading #trading-psychology
Mình giữ cho nghiên cứu trading của mình trung thực bằng quy trình, không phải bằng ý chí. Rule tường minh đủ để mình debug, một chuỗi kiểm định mà mỗi cổng loại bỏ một kiểu tự tin sai lệch khác nhau, tài liệu ghi lại để trí nhớ của mình không lặng lẽ sửa lại quá khứ, và thói quen review lệnh thua kỹ như lệnh thắng. Không thứ nào trong đó dự đoán được thị trường. Tất cả chúng đều làm mình chậm lại, và đó chính là mục đích.
Dưới đây là phiên bản thực tế của những thói quen đó, gồm cả các con số chúng tạo ra và những giới hạn chúng đã phát hiện.
Vì sao mình viết rule tường minh đủ để debug?
Bởi vì một rule mình không truy ngược được là một rule mình không sửa được.
Rule sạch thì dễ test hơn, dễ giải thích hơn và dễ debug hơn. Mình ưu tiên logic tường minh hơn trực giác mơ hồ ở bất cứ chỗ nào có thể, không phải vì trực giác vô dụng, mà vì rule tường minh thì cải thiện được còn một cảm giác thì không.
Rule sạch cũng là thứ giúp mình làm được edge autopsy. Khi một lệnh xấu xảy ra, mình muốn biết rule nào đã cho phép nó và dữ liệu nào đã kích hoạt nó. Master Volume Profile được xây đúng theo hướng đó, với rule và input được code tường minh, để một lệnh tệ luôn truy ngược về một rule chứ không phải về tâm trạng.
Chuỗi kiểm định thật sự mang lại cho mình điều gì?
Sự tự tin mà không ảo tưởng. Đó là toàn bộ giá trị nó trả lại.
Nó không hứa hẹn thành công và không bảo đảm kết quả live. Việc nó làm là tách cấu trúc lặp lại được ra khỏi may mắn chỉ xảy ra một lần. Trong Dquants engine mình tự phát triển, chuỗi này chạy theo thứ tự cố định: chi phí thực tế trước, rồi tới vùng plateau của sensitivity nơi mình chỉ chấp nhận vùng tham số ổn định và loại bỏ những đỉnh đơn lẻ, rồi walk-forward được chấm theo fold tệ nhất chứ không theo con số gộp, rồi Monte Carlo trên chuỗi lợi nhuận từng lệnh đã xáo trộn, rồi overfitting gate, và cuối cùng mới là một lần chạy xác nhận trong MetaTrader 5.
Mỗi cổng loại bỏ một kiểu ảo tưởng khác nhau. Chi phí giết chết phiên bản tưởng tượng của lệnh khớp. Bài test plateau giết chết tham số mà mình chỉ tìm ra nhờ dò đủ lâu. Fold tệ nhất giết chết con số trung bình mà một năm dễ chịu đang gánh hộ.
Cấu hình vàng duy nhất đã đi hết chuỗi này tạo ra 1.423 lệnh trên khoảng 160 triệu tick thật từ broker, so với ngưỡng thống kê tối thiểu là 192 lệnh cần có trước khi toán học chịu xem kết quả là nghiêm túc, với profit factor tiêu đề quanh mức 1,42 (nguồn: KPI scorecard XAU M5 của chính mình trong repo nghiên cứu Dquants, ghi ngày 2026-07). Mọi con số đó đều là backtest, không phải track record live.
Con số mình thật sự dùng để lập kế hoạch lại là con số kém đẹp hơn. Ở phân vị thứ 5 của các lần chạy Monte Carlo, profit factor đó rơi về khoảng 1,11, và kỳ vọng drawdown trung thực là khoảng 24 phần trăm ở trung vị và 38 phần trăm ở phân vị 95. Vì vậy ghi chú nghiên cứu của mình nói rằng phải tính size cho một đỉnh drawdown 30 đến 40 phần trăm, chứ không phải cho một đường cong mượt. Ai lập kế hoạch theo mức trung bình là đang chuẩn bị để bị bất ngờ vào đúng thời điểm tệ nhất.
Vì sao mình không bao giờ bỏ qua những câu hỏi khó chịu?
Những câu hỏi khó chịu thường là những câu hỏi quan trọng.
Mẫu này đã đủ lớn chưa. Kết quả này có bền qua các regime khác nhau không. Đây có phải chỉ là một túi may mắn trong lịch sử không. Sau chi phí thì nó còn sống không. Những câu hỏi này rất khó chịu khi đường cong đang đẹp, và đó chính là lúc chúng quan trọng nhất.
Câu mình hỏi nhiều nhất cũng là câu đơn giản nhất: edge này còn ở đó không sau khi thực thi thực tế? Mình trả lời bằng cách ép spread và slippage tăng lên trong engine rồi kiểm tra xem expectancy còn dương ở phía bên kia hay không.
Đôi khi câu trả lời là không, và điều đó cũng hữu ích. Năm 2024, một regime chi phí cao mà edge này chưa từng được xây để chịu đựng, một bài test với fill thật đã lỗ nặng. Mình giữ kết quả đó trong tài liệu một cách có chủ ý. Một giới hạn mình biết trước là trải nghiệm hoàn toàn khác với một giới hạn phục kích mình khi tiền thật đang nằm trên bàn.
Thế nào là một signal sớm, và thế nào thì không?
Một signal sớm nghĩa là có thứ đáng theo dõi kỹ. Nó không có nghĩa là hành trình đã kết thúc.
Đáng hứa hẹn thì tốt. Đã được chứng minh thì tốt hơn. Một signal sớm chỉ còn hữu ích chừng nào mình giữ nó đúng loại, và nó trở thành rủi ro ngay khi mình nâng nó lên thành bằng chứng. Chính sự phân biệt đó ngăn một hướng nghiên cứu tử tế biến thành một cái lock quá sớm.
Mình vẫn lạc quan, và lạc quan không đồng nghĩa với chắc chắn. Quy trình của mình đang tốt lên, và điều đó cải thiện xác suất. Xác suất là thứ duy nhất có ở đây.
Vì sao mình ghi lại mọi thứ, kể cả những gì đã thất bại?
Bởi vì trí nhớ của mình không đáng tin, và trading thì đặc biệt tàn nhẫn với trí nhớ.
Nếu mình không ghi lại assumption, quyết định và parity gap ngay khi chúng xảy ra, sau này mình sẽ chỉ nhớ phiên bản dễ chịu hơn của sự thật. Với mình, tài liệu là một phần của phương pháp nghiên cứu, không phải việc hành chính.
Đó cũng là lý do các kết quả tiêu cực được coi là vốn liếng vĩnh viễn trong stack của mình. Mọi ý tưởng đã bị bác bỏ đều được ghi lại kèm bằng chứng, và mình không đuổi lại nó nếu không có một lý do cấu trúc thật sự mới, ví dụ một tầng dữ liệu mới hay một cách chia bar mới, chứ không phải cùng một ý tưởng với bộ tham số khác.
Review có cấu trúc là chính thói quen đó nhưng hướng vào từng lệnh: log, ảnh chụp, chỉ số, bối cảnh. Không có nó, mình rất dễ chỉ nhớ những lệnh thắng. Việc review maximum adverse excursion trên các lệnh thua là nơi phần lớn cải tiến tiếp theo của mình xuất hiện, vì đó là thứ phân biệt một khoản lỗ thống kê bình thường với một lỗi quy trình.
Mình thật sự đang cố tránh điều gì?
Ba thứ: tự tin thái quá, overfitting và hứa hẹn quá mức. Mỗi thứ đều có thể phá hỏng nhiều tháng công sức rất nhanh.
Vì vậy sự hoài nghi nằm trong quy trình chứ không nằm trong tâm trạng của mình hôm đó. Trong engine có overfitting gate và mô hình chi phí thực tế, còn ở phía thực thi thì Expert Advisor trên MetaTrader 5 chỉ hành động theo đúng các thiết lập rủi ro mà người dùng đã cấu hình trước, bao gồm bộ lọc biến động và giới hạn rủi ro tối đa mỗi ngày. Không lớp nào là đủ một mình. Mỗi lớp loại bỏ một cách cụ thể mà mình có thể tự lừa mình.
Bên dưới tất cả là một câu hỏi mình liên tục đặt ra: đây là signal, hay là câu chuyện mình tự kể? Tư duy sạch là một kỹ năng trading, vì một câu chuyện có thể sống sót qua cả một buổi tối làm việc mà không tạo ra thông tin mới nào.
Vì sao tiến bộ nhỏ vẫn có giá trị?
Bởi vì công việc bền được xây từ chính những tiến bộ đó. Có tuần tiến bộ chỉ là một quyết định tốt hơn, một bài test sạch hơn, một lần từ chối trung thực hơn. Tiến bộ mỏng trở nên có ý nghĩa khi nó lặp lại đủ nhiều.
Công việc này khó vì bản chất nó khó, và cảm giác khó thường là dấu hiệu mình cuối cùng cũng đang nhìn đúng bài toán. Bài toán khó nhất tới giờ là chuyển từ engine chạy theo bar sang engine chạy thuần tick, để các bài test thôi nói dối mình về những lệnh khớp vốn không bao giờ có thể xảy ra.
Đó cũng là lý do mình giữ góc nhìn dài hạn. Một tháng đẹp nói lên rất ít. Mình muốn xem hệ thống có trụ được qua nhiều regime, nhiều mức chi phí và những quãng dài nhàm chán hay không, vì đó là phép thử chất lượng tốt hơn nhiều so với một mẫu ngắn sắc nét.
Câu hỏi thường gặp
Chuỗi kiểm định trong systematic trading là gì? Đó là một chuỗi bài test cố định, theo thứ tự, mà một ý tưởng phải sống sót trước khi được tin. Mỗi cổng được thiết kế để giết một kiểu thất bại khác nhau chứ không phải để xác nhận kết quả. Chuỗi của mình gồm chi phí, plateau sensitivity, walk-forward, Monte Carlo, overfitting gate, và cuối cùng là một lần chạy xác nhận trong MetaTrader 5.
Một backtest cần bao nhiêu lệnh thì mới có ý nghĩa? Đủ nhiều để may rủi triệt tiêu lẫn nhau, và ngưỡng đó nên được tính chứ không nên đoán. Minimum track record length phụ thuộc vào phân phối lợi nhuận của chính chiến lược, nên một chiến lược nhiễu hơn cần mẫu lớn hơn để nói cùng một điều. Với cấu hình vàng của mình, ngưỡng đó là 192 lệnh còn mẫu đã kiểm định là 1.423 lệnh, tức khoảng bảy lần ngưỡng sàn (backtest, scorecard 2026-07).
Master Volume Profile đã có track record live chưa? Chưa, và mình sẽ không ám chỉ điều ngược lại. Mọi thứ công bố tới giờ đều là nghiên cứu: backtest và một lần chạy xác nhận trên MetaTrader 5 với tick thật từ broker, không phải kết quả live được kiểm toán. Hãy xem mọi con số mình dẫn ra là bằng chứng lịch sử về một giả thuyết, không phải một dự đoán.
Overfitting gate là gì? Đó là một phép kiểm định thống kê hỏi rằng kết quả thắng của một cuộc dò tham số có còn đẹp không sau khi tính tới việc mình đã thử bao nhiêu ứng viên. Dò đủ lâu thì luôn ra được thứ gì đó trông ấn tượng, nên cổng này cần bối cảnh dò thật, gồm cả số lần thử. Trong stack của mình, deflated Sharpe ratio từ 0,95 trở lên là đạt, từ 0,90 đến 0,95 là cảnh báo mà mình phải nói rõ ra, còn dưới 0,90 là trượt.
Vì sao chấm walk-forward theo fold tệ nhất thay vì theo trung bình? Bởi vì mình phải sống qua fold tệ nhất, không phải sống qua fold trung bình. Một con số gộp có thể che giấu một giai đoạn mà chiến lược lệch pha nặng, được một quãng lịch sử dễ chịu gánh hộ. Cách chấm này cũng khớp với cách drawdown thật sự ập tới, tức là đến một lần chứ không rải đều.
Trong nghiên cứu của mình, mình lập kế hoạch cho mức drawdown nào? Phân vị 95, không phải trung vị. Một backtest chia cửa sổ dễ chịu của cấu hình vàng có thể cho con số quanh 10 phần trăm, và đó đúng là loại con số khiến nhiều người gặp rắc rối. Phân phối Monte Carlo đưa kỳ vọng trung thực về gần 24 phần trăm ở trung vị và 38 phần trăm ở phân vị 95, nên ghi chú của mình nói phải tính size cho đỉnh 30 đến 40 phần trăm.
Vì sao nên review lệnh thua thay vì lệnh thắng? Bởi vì mỗi lệnh thua mang nhiều thông tin hơn. Một lệnh thắng chỉ nói rằng setup đã chạy được một lần, còn một lệnh thua nói cho mình biết rule yếu ở đâu và khoản lỗ đó là biến động bình thường hay một lỗi quy trình. Maximum adverse excursion trên các lệnh thua là trường dữ liệu hữu ích nhất trong log của mình.
Những việc này có loại bỏ rủi ro không? Không. Chúng chỉ loại bỏ một số cách sai cụ thể, và đó là một tuyên bố nhỏ hơn nhiều. Trading có rủi ro, bao gồm rủi ro thua lỗ, mọi con số phía trên đều là lịch sử, và không lượng kiểm định nào biến một giả thuyết thành điều chắc chắn.
Viết bởi KenKem, một kỹ sư phần mềm và nhà sáng lập với hai mươi năm kinh nghiệm, đang học quantitative trading một cách công khai và chia sẻ lại toàn bộ quá trình, kể cả những lần bị bác bỏ.
Bài viết này được tổng hợp từ các post 37 đến 48 trong chuỗi build-log của KenKem. Chỉ nhằm mục đích giáo dục. Không phải lời khuyên đầu tư. Mọi con số được dẫn ra đều là kết quả backtest, không phải track record live. Hiệu suất quá khứ không bảo đảm kết quả tương lai.