Chiến lượcvalidationbacktestingtransparencywalk-forwardbootstrap

Anny Đã Chạy Toàn Bộ Thư Viện Chiến Lược Qua Một Bộ Lọc Nghiêm Khắc — Đây Là Những Gì Còn Sót Lại

1 tháng 8, 2026·Đọc 8 phút
Anny Đã Chạy Toàn Bộ Thư Viện Chiến Lược Qua Một Bộ Lọc Nghiêm Khắc — Đây Là Những Gì Còn Sót Lại

Hầu hết các nền tảng giao dịch chỉ cho bạn thấy backtest chiến thắng. Biểu đồ đi lên và sang phải, chỉ số Sharpe trông đẹp, còn hàng nghìn biến thể đã chết trên đường đến ảnh chụp màn hình đó thì không ai nhắc đến.

Bài viết này là về nghĩa địa đó. Không phải vì thất bại tự nó thú vị, mà vì nghĩa địa là nơi duy nhất bạn có thể kiểm chứng xem một quy trình xác thực có thực sự loại bỏ được bất cứ thứ gì hay không — kể cả, khi các bài kiểm tra trở nên tốt hơn, chính những gì đã được công bố trước đó.

Qua mười lần chạy khám phá hàng tuần mà Anny có thể tái dựng đầy đủ, engine đã đánh giá 8.610 chiến lược ứng viên. 36 cái vượt qua toàn bộ bộ lọc — 0,42%. Trong số đó, 8 cái thực sự được công bố vào thư viện. Sau đó Anny xây dựng một bộ kiểm tra khó hơn, áp dụng lên chính những chiến lược đã được công bố, và 10 trong số 15 chiến lược trong thư viện đang hoạt động bị gắn cờ.

Anny công bố tất cả — kể cả phần mà Anny phát hiện ra engine của mình có một bug khiến nó không bao giờ tìm kiếm một phần ba số dòng chiến lược mà nó tuyên bố là đang xử lý.

Bộ lọc, nói theo ngôn ngữ bình thường

Mỗi chiến lược ứng viên — một bộ quy tắc, trên một đồng coin, trên một khung thời gian — phải vượt qua một chuỗi bộ lọc. Khi một chiến lược thất bại, nó thất bại ở một bộ lọc được đặt tên cụ thể, và mỗi bộ lọc tồn tại để bảo vệ bạn khỏi một cách mà backtest có thể gian lận:

Cổng kiểm tra cơ bản. Đủ số lượng giao dịch để có ý nghĩa (tối thiểu 30 lệnh), giới hạn drawdown 35%, và tỷ suất sinh lợi điều chỉnh rủi ro tối thiểu. Nhàm chán, nhưng chịu trách nhiệm cho hầu hết các vụ loại bỏ — chi tiết bên dưới.

Walk-forward. Một backtest có thể học thuộc lòng quá khứ. Walk-forward che giấu một phần lịch sử khỏi chiến lược, rồi kiểm tra xem nó hoạt động thế nào trên phần dữ liệu mà nó chưa bao giờ thấy. Anny yêu cầu nó phải giữ lại ít nhất 50% hiệu suất trên dữ liệu chưa thấy — nếu không làm được, con số backtest đẹp đẽ kia chỉ là may mắn, và Anny nói thẳng điều đó.

Trade-sequence bootstrap. Backtest của bạn thể hiện một phiên bản của lịch sử. Anny phát lại các giao dịch của một chiến lược theo 500 thứ tự xáo trộn — 500 vũ trụ song song — và nhìn vào tình huống xấu nhất có thể xảy ra một cách hợp lý. Nếu 1 trong 20 vũ trụ tạo ra một drawdown khiến bạn bỏ cuộc, bạn nên biết điều đó trước khi có tiền thật liên quan. Bài kiểm tra tương tự cũng bắt được chiều ngược lại: một chiến lược mà lịch sử thực của nó may mắn hơn gần như tất cả các lần xáo trộn của chính nó.

Giới hạn độ tin cậy và biên độ phân kỳ. Nếu một chiến lược đạt điểm quá hoàn hảo, Anny loại bỏ nó — theo kinh nghiệm, kết quả "không thể tin được" hầu như luôn là lỗi dữ liệu hoặc may mắn, không phải một khám phá thực sự. Và nếu điểm thực hành và điểm dữ liệu chưa thấy của nó bất đồng mạnh mẽ theo bất kỳ hướng nào, Anny gắn cờ nó: bạn không thể tin tưởng vào con số nào cả.

Độ rộng. Một chiến lược chỉ hoạt động trên một đồng coin nhiều khả năng là câu chuyện về đồng coin đó, không phải một chiến lược thực sự. Khi các quy tắc tương tự độc lập sống sót trên nhiều tài sản, đó là bằng chứng rằng lợi thế là có thật.

Phễu lọc, kể cả những phần khó chịu

Phễu xác thực — 5.370 ứng viên có log đầu vào, 33 qua toàn bộ bộ lọc, 7 được lưu trữ. Tái dựng từ log cổng từng lần chạy; bức tranh đầy đủ được phục hồi là 8.610 → 36 → 8.
Phễu xác thực — 5.370 ứng viên có log đầu vào, 33 qua toàn bộ bộ lọc, 7 được lưu trữ. Tái dựng từ log cổng từng lần chạy; bức tranh đầy đủ được phục hồi là 8.610 → 36 → 8.

Qua mười lần chạy được phục hồi: 8.610 ứng viên, 36 cái vượt qua toàn bộ bộ lọc (0,42%), 8 cái được công bố. Tính riêng những gì thực sự vào được thư viện, tỷ lệ sống sót là 0,09%.

Để so sánh, một phễu xác thực chiến lược công khai nổi tiếng — kiểu phân tích "chúng tôi đã kiểm tra hàng nghìn backtest" thường xuất hiện trên YouTube — cho qua khoảng 5,7% ứng viên. Tùy thuộc vào việc bạn so sánh với số cái vượt qua bộ lọc hay số cái thực sự được công bố, phễu của Anny nghiêm khắc hơn 8 đến 60 lần. Anny không nói điều này để khẳng định mình thông minh hơn. Nó có nghĩa là Anny kén chọn hơn, và những chiến lược mang huy hiệu xác thực của Anny đã thực sự phải kiếm được nó qua một bộ lọc mà hầu hết các marketing thiên vị survivorship chưa bao giờ phải đối mặt.

Hai phát hiện khó chịu bên trong phễu đó:

Hầu hết mọi thứ chết ngay từ cửa. 5.243 trong số 5.370 ứng viên có log chi tiết — 97,6% — bị loại bởi hai cổng cơ bản nhất (quá ít giao dịch, tỷ lệ thắng dưới ngưỡng) trước khi các cơ chế out-of-sample phức tạp có cơ hội nhìn vào chúng. Một trong các cổng out-of-sample của Anny cho đến nay chưa bao giờ kích hoạt một lần nào. Một bộ lọc mà các cổng phức tạp bị thiếu việc làm là một bộ lọc cần được điều chỉnh lại hình dạng — và tái cân bằng nó chính xác là những gì phần tiếp theo đề cập đến.

Ba tuần lịch sử đã mất. Các lần chạy ngày 12, 19 và 26 tháng 7 của Anny đã bị mất do log rotation trước khi kịp lưu trữ kết quả từng ứng viên — với các ứng viên bị loại, không có số liệu nào được lưu ở đâu cả. Mọi thứ ở trên đều được tái dựng từ các lần chạy có thể phục hồi, và Anny đã triển khai tính năng lưu trữ để mọi số liệu của ứng viên trong tương lai tồn tại dù đạt hay không. Khi Anny nói "tái dựng," hãy đối xử với các con số đúng như vậy.

Lời thú nhận: Anny thậm chí không tìm kiếm một phần ba bản đồ

Tỷ lệ sống sót theo dòng chiến lược — volume và pattern hiển thị không có ứng viên nào: một cờ cấu hình bị che khuất đã loại cả hai dòng khỏi quá trình tìm kiếm.
Tỷ lệ sống sót theo dòng chiến lược — volume và pattern hiển thị không có ứng viên nào: một cờ cấu hình bị che khuất đã loại cả hai dòng khỏi quá trình tìm kiếm.

Khi Anny tổng hợp tỷ lệ sống sót theo dòng chiến lược, hai dòng — volumepattern — hiển thị không có ứng viên nào. Bao giờ hết.

Đó không phải là phán quyết của thị trường. Đó là một bug: một cờ cấu hình được đưa vào trong một lần viết lại engine trước đó đã im lặng loại bỏ catalog chiến lược mở rộng của Anny, khiến cron khám phá hàng tuần tiếp tục tìm kiếm trong một danh sách hardcoded cũ. Hai trong sáu dòng chiến lược chưa bao giờ được tham gia cuộc đua, và không có gì trong hệ thống giám sát báo điều này. Anny tìm ra nó vì bảng tỷ lệ sống sót theo dòng làm cho lỗ hổng không thể bỏ qua — đó là lý lẽ khá tốt để xây dựng cái bảng đó. Phần kết nối đã được sửa; catalog mở rộng bổ sung khoảng 7.000 backtest cho mỗi lần chạy hàng tuần.

(Một chiến lược thuộc dòng pattern hiện đang được công bố. Nó được phát hiện vào ngày 26 tháng 7 — một trong những tuần mà log bị mất — nên Anny không thể tái dựng phễu mà nó đã đi qua. Lưu ý đó vẫn gắn với nó.)

Phần còn lại của bảng dòng chiến lược thì khiêm tốn theo cách thông thường: mixed confluence — dòng "kết hợp nhiều chỉ báo" nghe có vẻ tinh vi nhất — đi 0 trên 460 lần. Momentum có tỷ lệ sống sót tốt nhất ở mức 1,44%. Không có gì vượt qua 2%.

Rồi Anny quay các cổng mới vào chính mình

Câu hỏi khó hơn: liệu các chiến lược đã được công bố của Anny có vượt qua các bài kiểm tra mà Anny vừa xây dựng không? Anny phát lại toàn bộ thư viện 15 chiến lược qua ba cổng mới. 10 trong số 15 bị gắn cờ.

  • Walk-forward floor: 1 thất bại. Một chiến lược chỉ giữ lại 42,5% hiệu suất trên dữ liệu chưa thấy, dưới ngưỡng 50% — và thấp hơn nhiều so với mức thấp nhất tiếp theo trong thư viện là 81,3%. Nó được gắn cờ để kiểm toán.
  • Bootstrap: 6 bị gắn cờ. Bốn cái có drawdown tệ nhất trong 1 trên 20 lần xáo trộn vượt ngưỡng 35% của Anny (lên đến 38,1%). Bốn cái là vấn đề ngược lại — đuôi may mắn: lịch sử thực của một chiến lược nông hơn 98 trong 100 lần xáo trộn của chính nó (phân vị 1,9), nghĩa là hồ sơ trực tiếp của nó tô hồng những gì cùng các giao dịch đó thường sẽ mang lại. Hai chiến lược trúng cả hai cờ.
  • Divergence bound: 4 bị gắn cờ — tất cả đều là chiến lược theo hướng short có điểm dữ liệu chưa thấy cao gấp đôi điểm thực hành (ví dụ 2,72 so với 1,24). Quá tốt cũng là một cờ: các cửa sổ out-of-sample đó nằm trong giai đoạn yếu kém của altcoin nửa đầu năm 2026, vì vậy một món quà từ chế độ thị trường đang làm phần việc mà chiến lược sẽ không lặp lại theo yêu cầu.

Đáng chú ý, ba cổng bắt được các chiến lược khác nhau — chiến lược thất bại walk-forward thì sạch sẽ khi bootstrap, và các chiến lược thất bại bootstrap thì vượt qua walk-forward. Không một bài kiểm tra đơn lẻ nào tìm được tất cả.

Không cái nào trong số này bị âm thầm xóa khỏi danh sách. Mỗi cờ đi đến kiểm toán bởi con người với bằng chứng đính kèm, và người dùng đang chạy bot trên bất cứ thứ gì bị xóa sẽ được thông báo trực tiếp. Đó là chính sách, không phải tùy hứng.

Những gì các lần xáo trộn dạy Anny về chuỗi thua lỗ

Trong khi tái cân bằng các cổng, Anny đã chạy một mô phỏng forward mới — 1.620 backtest trên vũ trụ khám phá — để kiểm tra xem cổng tỷ lệ thắng thô có thể được thay thế bởi dải bootstrap hay không. Hai phát hiện đáng để bạn chú ý:

Dải bootstrap là công cụ sắc bén hơn. Trong số các ứng viên mà chỉ có cổng tỷ lệ thắng đang chặn, dải bootstrap độc lập loại bỏ 8 trong số 9 — và nó cũng loại bỏ 5 trong số 9 chiến lược vượt qua bộ lọc đầy đủ ngày hôm nay. Áp dụng nó làm thu nhỏ thư viện trước khi bất cứ thứ gì có thể tăng trưởng. Anny vẫn làm điều đó, theo trình tự qua kiểm toán, vì một thư viện nhỏ hơn nhưng trung thực tốt hơn một thư viện lớn hơn nhưng mong manh.

Chuỗi thua lỗ là tính năng của toán học, không phải sự cố. Trong số các chiến lược sống sót có tỷ lệ thắng từ 39,6–43,1%, chuỗi thua lỗ liên tiếp tối đa là 6, 6, 6, 7 và 11 lần thua liên tiếp. Nếu bạn chạy một chiến lược có tỷ lệ thắng ~40%, một chuỗi 6 đến 11 lần thua là trải nghiệm được dự kiến. Anny sẽ hiển thị con số đó bên cạnh các chiến lược có tỷ lệ thắng thấp, và các circuit breaker tự động (giới hạn thua liên tiếp và giới hạn thua theo khung thời gian) mặc định được bật cho chúng — đó là lựa chọn thay thế trung thực so với việc để bạn tự khám phá chuỗi thua với tiền thật.

Về phạm vi: mô phỏng đó là một cửa sổ thời gian, hai trong ba khung thời gian, chỉ danh sách chiến lược cũ. Các con số tổng quan của nó mang độ không chắc chắn rộng; các kết luận định hướng đã được kiểm tra lại với phễu lịch sử và vẫn đứng vững.

Những gì xảy ra tiếp theo

  • Kiểm toán. 10 chiến lược bị gắn cờ trải qua kiểm toán thư viện hàng tháng — quyết định của con người cho từng chiến lược, bằng chứng trên bàn, không có gỡ bỏ âm thầm. Nếu một chiến lược bị xóa khỏi kệ, bất kỳ ai đang chạy bot trên đó sẽ nghe từ Anny trực tiếp, trước khi họ nhận ra điều đó trên giao diện.
  • Tái xét hàng tháng. Toàn bộ thư viện sẽ được phát lại qua bộ lọc như một phần thường trực của kiểm toán đó. Huy hiệu kiếm được vào tháng 6 phải được kiếm lại vào tháng 8; chế độ thị trường thay đổi và xác thực có thời hạn sử dụng.
  • Catalog rộng hơn. Với bug cờ cấu hình đã được sửa, các chiến lược volume và pattern cuối cùng sẽ tham gia cuộc đua — và các biểu đồ phễu và dòng chiến lược trong bài viết này sẽ được tạo lại từ dữ liệu được lưu trữ, không phải tái dựng từ log.

Điều này có nghĩa gì với bạn

Khi một chiến lược trong thư viện của Anny mang huy hiệu xác thực, nó có nghĩa là: nó sống sót qua một phễu loại bỏ hơn 99% ứng viên, nó giữ lại ít nhất một nửa hiệu suất trên dữ liệu mà nó chưa bao giờ thấy, 500 lịch sử song song của nó không chứa drawdown thảm khốc, và kết quả của nó không quá tệ cũng không quá tốt để tin tưởng. Nó cũng có nghĩa là huy hiệu có thể bị thu hồi — bởi chính các bài kiểm tra của Anny, công khai, theo lịch trình.

Anny không thể hứa với bạn về alpha. Không ai có thể hứa thật lòng điều đó. Những gì Anny có thể hứa là mọi thứ được công bố đều đã được kiểm tra qua cùng một cơ chế mà Anny vừa dùng để kiểm tra chính mình — và khi cơ chế đó phát hiện ra điều gì đó đáng xấu hổ, bạn sẽ đọc về nó ở đây trước tiên.


Tất cả các con số trong bài viết này đến từ các artifact lần chạy đã được commit và các replay job — không có con số nào được tổng hợp thủ công. Ba lần chạy khám phá tháng 7 năm 2026 đã bị mất do log rotation trước khi tính năng lưu trữ từng ứng viên được triển khai; các con số cho các lần chạy được phục hồi được tái dựng từ run log và được ghi chú như vậy ở trên.