KenKem Journal

Cần bao nhiêu lệnh thì một backtest mới có ý nghĩa?

· #backtesting #statistics #research-method #systematic-trading

Thường là nhiều hơn số lệnh bạn đang có, và số lệnh cũng không phải thứ nên đếm. Điều quan trọng là các lệnh đó mang được bao nhiêu bằng chứng độc lập. Trên hệ thống vàng khung năm phút mà mình đã phát hành, 1.643 lệnh backtest chỉ có sức nặng thống kê tương đương khoảng 512 quan sát độc lập, vì một vài lệnh thắng lớn chi phối toàn bộ kết quả. Mình đánh giá một mẫu bằng con số nhỏ hơn đó, và mình ghi ra cần bao nhiêu lệnh trước khi nhìn vào kết quả.

Hình vẽ trừu tượng bằng code trên nền lưới
Vẽ bằng code, không phải ảnh chụp. Hình minh hoạ của KenKem.

MasterVP · Hành trình giao dịch hệ thống

Bài viết của người sáng lập KenKem, một kỹ sư phần mềm hai mươi năm kinh nghiệm, từng giao dịch vàng bằng tay trước khi xây dựng hạ tầng nghiên cứu đứng sau MasterVP. Đây là chia sẻ kiến thức từ nghiên cứu của chính mình, không phải khuyến nghị. Mọi con số dưới đây là kết quả backtest hoặc đo lường nghiên cứu trên dữ liệu tick thật, lấy từ bản tổng hợp phiên bản 1.26 ngày 15 tháng 9 năm 2026, và không con số nào là kết quả live.

Vì sao con số lệnh thô dễ gây hiểu lầm?

Vì không phải lệnh nào cũng mang cùng một lượng thông tin.

Hệ thống của mình là hệ thống breakout. Phần lớn lệnh kết thúc ở mức dừng lỗ đã giới hạn hoặc đóng quanh hòa vốn, và chỉ một số ít chạy đủ xa để bù cho tất cả phần còn lại. Trên hệ thống năm phút đã phát hành, 30 lệnh tốt nhất trong 1.643 lệnh chiếm khoảng ba phần tư toàn bộ kết quả. Một lệnh chạm mục tiêu cuối bù được khoảng năm lần dừng lỗ trọn vẹn.

Hình dạng đó kéo theo một hệ quả thống kê. Phân phối có đuôi dày, với độ nhọn vượt chuẩn (excess kurtosis) khoảng 4,4, và đuôi dày nghĩa là mẫu nhiễu hơn so với độ dài của nó. Sau khi điều chỉnh, 1.643 lệnh chỉ tương đương khoảng 512 quan sát độc lập. Mọi kiểm định ý nghĩa mình chạy đều dùng con số đã điều chỉnh, không dùng con số đẹp hơn. Một con số mình không bảo vệ được thì chỉ là đồ trang trí.

Minimum track record length là gì?

Đó là câu trả lời cho một câu hỏi mà phần lớn lời chào mời giao dịch không bao giờ đặt ra: với lợi thế trông lớn cỡ này và nhiễu cỡ này, cần bao nhiêu quan sát thì mới có thể tương đối tự tin rằng lợi thế đó lớn hơn không?

Lợi thế càng nhỏ và càng nhiễu thì chuỗi kết quả càng phải dài. Phép kiểm tra này chỉ có ý nghĩa khi so với cỡ mẫu hiệu dụng, không phải cỡ mẫu thô.

Mình học điều đó theo cách không dễ chịu lắm. Một phiên bản ghi chép cũ của chính mình đem hơn 1.400 lệnh thô so với mức tối thiểu khoảng 192 lệnh và gọi đó là "vượt bảy lần". Ở phiên bản 1.26, phép so sánh được làm trên cỡ mẫu hiệu dụng. Thiết lập duy nhất mình chấp nhận theo một ngưỡng đạt đã đăng ký trước, một bộ lọc chi phí, được đánh giá trên 428 lệnh hiệu dụng so với mức yêu cầu 281. Nó vẫn vượt ngưỡng, nhưng chỉ khoảng một lần rưỡi, không phải bảy lần. Biên độ trung thực là biên độ mỏng hơn, và đó là con số mình dùng bây giờ.

Vì sao một mẫu lớn vẫn có thể bỏ lỡ một cải tiến nhỏ?

Vì độ nhiễu đặt ra một ngưỡng sàn cho những gì mình có thể phát hiện.

Với khoảng 500 đến 1.000 quan sát hiệu dụng cho mỗi hệ thống, cải tiến nhỏ nhất mà mình có thể phát hiện một cách đáng tin còn lớn hơn toàn bộ lợi thế trên mỗi lệnh. Nói thẳng ra, nếu một chỉnh sửa ở điểm vào hay điểm thoát làm hệ thống tốt hơn một chút, mẫu của mình quá nhỏ để phân biệt điều đó với may mắn.

Chính hồ sơ nghiên cứu của mình cũng nói đúng như vậy. Trong 77 nghiên cứu tinh chỉnh điểm vào hoặc điểm thoát, mình không chấp nhận cái nào. Trong 13 nghiên cứu về chi phí, sàn giao dịch và khi nào nên đứng ngoài, mình chấp nhận 4. Những tinh chỉnh nhỏ vốn dĩ không bao giờ nhìn thấy được. Những đòn bẩy mang tính cấu trúc thì đủ lớn để đo. Vì vậy chương trình nghiên cứu của mình giờ chỉ kiểm tra các đòn bẩy cấu trúc lớn, và mỗi cái đều có ngưỡng đạt được viết ra trước.

Số thứ bạn đã thử có quan trọng không?

Quan trọng hơn gần như mọi thứ khác.

Nếu thử đủ nhiều biến thể, sẽ có một biến thể trông xuất sắc chỉ nhờ may mắn. Trong toàn bộ công việc đứng sau MasterVP, mình đã thử 7.990 cấu hình và chạy 158 thí nghiệm được khai báo trước. Ba hệ thống được phát hành. Kết quả tốt nhất từ một cuộc tìm kiếm rộng như vậy phải được so với những gì riêng may mắn có thể tạo ra từ một cuộc tìm kiếm rộng như vậy.

Mình dùng hai công cụ cho việc này. Công cụ thứ nhất, deflated Sharpe ratio, chiết khấu kết quả tốt nhất theo số lần thử. Mình đã bỏ nó khỏi vai trò phép kiểm tra chính, vì mình nhận ra khi mẫu đủ lớn, nó cho ra kết quả gần như hoàn hảo với hầu hết mọi ứng viên, nghĩa là nó thành đồ trang trí chứ không còn là phép kiểm tra. Công cụ thứ hai, xác suất backtest bị overfit (PBO), hỏi xem cấu hình tốt nhất trong mẫu thường xuyên rơi xuống dưới trung vị ngoài mẫu đến mức nào. Tung đồng xu cho ra 50%. Bộ lọc chi phí đã phát hành cho ra 27%. Ngược lại, ô tốt nhất trong một lưới tham số cho kết quả trên 50% ở 8 trên 9 trường hợp.

Đó là lý do mình phát hành điểm giữa của một vùng ổn định, không phải ô tốt nhất. Khi kiểm tra lại trên dữ liệu không dùng để chọn chúng, các cấu hình đã phát hành nằm trong khoảng phân vị thứ 75 đến 87 của chính cuộc tìm kiếm của chúng. Tốt, nhưng không phải tốt nhất. Một kết quả không học thuộc quá khứ thường trông như vậy.

Cũng vì lý do đó, mình không bao giờ trích dẫn một chỉ số chỉ đo trong đúng điều kiện mà hệ thống được xây ra để xử lý. Một con số chỉ đo lúc trời đẹp mô tả một thế giới không ở lại mãi.

Kết quả có nên đứng vững qua các giai đoạn riêng biệt không?

Có, và nó cũng nên được phép thất bại ở một vài giai đoạn.

Từ năm 2021 có mười một khối nửa năm. Ba khối trong số đó lỗ, và không khối nào lỗ quá 1,5%. Một hồ sơ không có nửa năm nào lỗ nên khiến mình nghi ngờ. Một hồ sơ mà một giai đoạn nóng kéo cả những năm chết qua vạch thì càng đáng nghi hơn.

Phép kiểm tra mình tin nhất cho việc này là so sánh với vào lệnh ngẫu nhiên. Mình dựng 1.000 phiên bản giả cho mỗi hệ thống, giống hệt về mọi mặt trừ thời điểm vào lệnh, và ghi ngưỡng đạt ra trước: p dưới 0,05 ở cả hai giai đoạn. Giai đoạn 2024 đến 2026, không phiên bản giả nào trong 1.000 cái thắng được quy tắc thật. Giai đoạn 2021 đến 2023 thì có 299 cái thắng, p = 0,30, tức là không đạt. Mình công bố phần đó ngay cạnh những phần đạt, và đó là lý do hệ thống đứng ngoài trong kiểu thị trường trầm lắng hơn ấy. Mình đã viết về cách phép kiểm tra này hoạt động trong bài làm sao biến một mẫu hình giao dịch thành quy tắc có thể kiểm định.

Thêm một chi tiết trung thực. Hệ thống năm phút chỉ có 160 lệnh trong giai đoạn 2021 đến 2023 khi bật bộ lọc chi phí, và con số đó quá mỏng để kiểm định. Không phải câu hỏi nào cũng có mẫu đủ lớn để trả lời, và nói rõ điều đó cũng là một phần của kết quả.

567 ngày bắt đầu có phải là 567 thí nghiệm không?

Không, và đây là một nhầm lẫn rất dễ mắc.

Mình mô phỏng một bài đánh giá của quỹ prop từ mỗi ngày trong 567 ngày bắt đầu khả dĩ, với rủi ro 0,25% mỗi lệnh, giới hạn lỗ 5% mỗi ngày và 10% tổng. Không lần nào thất bại, và mức tiến gần nhất tới vạch thất bại là sụt giảm 8,3% so với giới hạn 10%. Nghe có vẻ là một mẫu lớn. Nhưng không phải. 567 ngày bắt đầu chồng lấn nhau và cùng lấy mẫu lại từ một lịch sử duy nhất, nên chúng đo kết quả phụ thuộc bao nhiêu vào thời điểm bắt đầu. Chúng không nói thêm điều gì mới về tương lai.

Một mẫu đủ lớn vẫn không cho bạn biết điều gì?

Năm tới có giống những năm đã qua hay không.

Vượt qua minimum track record nói rằng kết quả trong quá khứ nhiều khả năng không phải nhiễu. Đó là một tuyên bố nhỏ hơn nhiều so với những gì phần lớn các trang khác đưa ra. Thị trường thay đổi theo những cách mà không mẫu quá khứ nào chứa được. Mức sụt giảm tệ nhất trong backtest phiên bản 1.26 là 11,2%, và mình dự kiến giao dịch thật sẽ gặp những chi phí và điều kiện mà backtest không có. Đó là lý do tài khoản live có các quy tắc dừng được viết ra trước khi dữ liệu của nó xuất hiện, và vì sao mình theo dõi nó theo tháng, không phải theo ngày.

Câu hỏi thường gặp

Cần bao nhiêu lệnh để một backtest có ý nghĩa thống kê? Tùy vào lợi thế lớn cỡ nào và nhiễu cỡ nào. Phép tính minimum track record length cho ra con số đó. Trên hệ thống vàng năm phút của mình, mức yêu cầu là 281 lệnh hiệu dụng và mẫu có 428, đây là đo lường backtest, không phải kết quả live.

Cỡ mẫu hiệu dụng trong giao dịch là gì? Đó là số quan sát độc lập mà các lệnh của bạn thực sự tương đương, sau khi điều chỉnh cho đuôi dày. Khi một vài lệnh lớn chi phối, cỡ mẫu hiệu dụng nhỏ hơn số lệnh rất nhiều. 1.643 lệnh của mình chỉ tính được khoảng 512.

Minimum track record length là gì? Một thống kê ước lượng cần bao nhiêu quan sát trước khi có thể tự tin rằng một lợi thế lớn hơn không, dựa trên độ lớn và độ nhiễu của nó. Hãy so nó với cỡ mẫu hiệu dụng, không phải số lệnh thô.

Vì sao thử nhiều chiến lược lại làm một backtest đẹp kém đáng tin hơn? Vì cái tốt nhất trong nhiều lần thử một phần được chọn ra nhờ may mắn. Cuộc tìm kiếm càng rộng thì ngưỡng mà kết quả thắng cuộc phải vượt qua càng cao. Những công cụ như deflated Sharpe ratio và xác suất backtest bị overfit được dùng để điều chỉnh cho điều đó.

Xác suất backtest bị overfit là gì? Nó đo xem cấu hình trông tốt nhất trong mẫu thường xếp dưới trung vị trên dữ liệu không dùng để chọn nó đến mức nào. 50% là tung đồng xu. Bộ lọc chi phí đã phát hành của mình cho ra 27%.

Một backtest có hàng nghìn lệnh vẫn có thể bị overfit không? Có. Một mẫu lớn làm nhiễu nhỏ đi, chứ không làm cuộc tìm kiếm hẹp lại. Nếu bạn đã chọn cái tốt nhất trong hàng nghìn thiết lập, số lệnh nhiều cũng không xóa được điều đó.

Một năm lỗ trong backtest có phải dấu hiệu xấu không? Bản thân nó thì không. Một hồ sơ không có giai đoạn lỗ nào thường là cảnh báo lớn hơn. Ba trong mười một khối nửa năm của mình kể từ 2021 bị lỗ, tệ nhất là 1,5%.

Nếu bạn muốn xem công việc này dẫn tới đâu, MasterVP là phương pháp intraday của riêng mình, xây trên lý thuyết volume profile công khai. Nó được phát hành dưới dạng Master Volume Profiler indicator trên TradingView và MetaTrader 5, hiển thị cách đọc thị trường và để việc đặt lệnh cho bạn, và dưới dạng Master Volume Sniper trên MQL5 market, một Expert Advisor thực thi các quy tắc và thiết lập rủi ro do bạn cấu hình. Backtest gần nhất của bạn có bao nhiêu lệnh, và bao nhiêu trong số đó thực sự độc lập?


Bài viết được tổng hợp từ các bài đăng về cỡ mẫu và thống kê trong chuỗi nhật ký xây dựng MasterVP. Chỉ nhằm mục đích giáo dục. Không phải lời khuyên tài chính. Các con số được trích dẫn là kết quả backtest và nghiên cứu trên dữ liệu tick thật, và hiệu suất trong quá khứ không đảm bảo kết quả trong tương lai. Mỗi trader tự chịu trách nhiệm về thiết lập rủi ro và quyết định của mình.

← All journal articles

Chat