30 tháng Tám, 2026 · thống kê

Cần bao nhiêu giao dịch backtest thì Sharpe mới có ý nghĩa?

Cần bao nhiêu giao dịch backtest thì Sharpe mới có ý nghĩa?

Đây là câu hỏi tôi thường được hỏi nhất, dưới nhiều cách diễn đạt, bởi những người vừa hoàn thành chiến lược đầu tiên: cần bao nhiêu giao dịch thì kết quả mới đáng tin? Thường là câu hỏi đi kèm một con số. “Tôi có 1,200 giao dịch, thế là đủ rồi, phải không?” Câu trả lời thành thật khiến ai cũng khó chịu, vì con số đó chẳng liên quan gì đến số giao dịch cả.

Đây là toàn bộ vấn đề gói gọn trong một dòng; phần còn lại của bài viết sẽ giải thích vì sao nó phũ phàng.

1/√Tsai số chuẩn của Sharpe thường niên hóa, T tính theo năm
±0.88khoảng 95% quanh bất kỳ Sharpe nào đo được trong 5 năm
1.4Sharpe mà chiến lược nhiễu may mắn nhất trong số 100 chiến lược thể hiện trong cùng 5 năm đó

Sai số chuẩn của tỷ lệ Sharpe là bao nhiêu?

Với Sharpe tính trên n mức lợi nhuận định kỳ, giả sử các mức lợi nhuận độc lập và phân phối gần chuẩn, sai số lấy mẫu là:

SE(s) ≈ √((1 + s²/2) / n)

trong đó s là Sharpe đo ở cùng tần suất đó. Thường niên hóa cả hai vế sẽ cho ra một kết quả đơn giản. Với k quan sát mỗi năm và T năm, Sharpe thường niên hóa S có:

SE(S) ≈ √((1 + S²/(2k)) / T)

Hãy nhìn vào 2k ở mẫu số. Với lợi nhuận hằng ngày, k = 252, nên ngay cả Sharpe bằng 2 cũng chỉ đóng góp 4/504 ≈ 0.008 vào tử số. Toàn bộ biểu thức rút gọn còn 1. Sai số chuẩn của Sharpe thường niên hóa xấp xỉ 1/√T, trong đó T là số năm lịch có dữ liệu. Nó hầu như không phụ thuộc vào bản thân Sharpe, không phụ thuộc vào tần suất lấy mẫu, và hoàn toàn không phụ thuộc vào số giao dịch bạn thực hiện.

Cụ thể:

Số năm dữ liệuSE(Sharpe)CI 95% nếu đo được 1.5
11.00−0.46 đến 3.46
20.710.11 đến 2.89
30.580.37 đến 2.63
50.450.62 đến 2.38
100.320.88 đến 2.12

Một backtest cho thấy Sharpe 1.5 trong hai năm dữ liệu không thể phân biệt về mặt thống kê với việc tung đồng xu ở mức tin cậy 95%. Đây là tình trạng cơ bản của phần lớn nghiên cứu crypto, vì dữ liệu sạch, đã hiệu chỉnh thiên lệch sống sót và phí chính xác của hầu hết mọi người chỉ bắt đầu từ khoảng năm 2022, còn một nửa số mã đáng quan tâm chưa tồn tại trước năm 2023.

Nhưng tôi có 40,000 giao dịch. Như thế vẫn không giải quyết được sao?

Không, và đây là hiểu lầm tôi muốn chấm dứt nhất.

Số giao dịch và độ dài mẫu là hai đại lượng khác nhau, nhưng trong công thức chỉ có một đại lượng. Nếu chiến lược của bạn phát tín hiệu 40,000 lần trong sáu tháng, thì T = 0.5 và SE ≈ 1.41. Khoảng tin cậy 95% cho Sharpe đo được là 2.0 trải từ −0.8 đến 4.8. Có 40,000 giao dịch mà kết luận thành thật vẫn là “có thể tốt, cũng có thể âm.”

Lý do là 40,000 giao dịch đó không phải 40,000 lần đặt cược độc lập vào 40,000 trạng thái thị trường khác nhau. Chúng là 40,000 mẫu lấy từ khoảng 180 ngày hành vi thị trường; các ngày tương quan với nhau, và các chế độ thị trường cũng tương quan nội tại. Một danh mục hồi quy về trung bình tần suất cao kiếm tiền mỗi ngày suốt bốn tháng thực ra chỉ đặt một cược — rằng hồi quy ở khung thời gian ngắn sẽ duy trì trong chế độ thanh khoản này — và đã quan sát cược đó ngã ngũ có lẽ chỉ vài lần độc lập.

Cách tôi tự nhắc mình: đếm chế độ thị trường, đừng đếm lệnh khớp. Chiến lược này đã vượt qua bao nhiêu điều kiện thị trường thực sự khác nhau? Một chiến lược funding-carry chạy qua một giai đoạn basis dương kéo dài chỉ mới thấy n = 1, bất kể nó ghi nhận bao nhiêu lần tái cân bằng mỗi giờ.

Kiểm tra nhanh: dùng block bootstrap cho P&L hằng ngày với độ dài khối 20 ngày rồi xem độ phân tán của các Sharpe được lấy mẫu lại. Nếu phân vị thứ 5 thấp hơn 0, số giao dịch của bạn chẳng còn ý nghĩa gì. Việc này chỉ cần khoảng chín dòng numpy và đã khiến tôi từ bỏ nhiều chiến lược hơn bất kỳ phép kiểm tra đơn lẻ nào khác.

Công thức này có đúng với chiến lược thực tế không?

Không hoàn toàn, và sai lệch theo hướng bạn không muốn. Kết quả 1/√T giả định lợi nhuận IID và phân phối chuẩn. Lợi nhuận chiến lược thực tế có tự tương quan và lệch, mà độ lệch thường âm với những chiến lược kiểu carry, bán biến động hoặc hồi quy về trung bình. Hiệu chỉnh của Mertens đưa các mômen đó trở lại công thức:

SE(s) ≈ √((1 + s²/2 − γ₃·s + (γ₄−3)·s²/4) / n)

trong đó γ₃ là độ lệch và γ₄ là độ nhọn. Độ lệch âm khiến số hạng −γ₃·s dương, làm khoảng tin cậy rộng hơn. Độ nhọn dư khiến khoảng này rộng thêm. Với P&L carry crypto điển hình, có độ lệch khoảng −1.2 và độ nhọn khoảng 9, tôi từng thấy sai số chuẩn đã hiệu chỉnh lớn hơn 30–40% so với cách tính đơn giản. Bài báo năm 2002 của Lo xử lý phần tự tương quan và tác động cùng chiều: tương quan chuỗi dương trong lợi nhuận làm Sharpe tính đơn giản bị thổi phồng và sai số có vẻ nhỏ đi — một sự kết hợp tai hại.

Vì vậy, hãy xem 1/√T là mức sàn cho độ bất định. Đó là trường hợp tốt nhất.

Sharpe cần cao đến đâu nếu tôi đã thử 500 biến thể?

Giờ ta đến phần quan trọng với bất kỳ ai vận hành quy trình nghiên cứu tự động — tình huống chúng tôi gặp mỗi ngày ở Stratmill: tác nhân tạo sinh không tạo ra một ứng viên mà là hàng trăm ứng viên.

Giá trị cực đại kỳ vọng của M lần rút từ phân phối chuẩn tắc xấp xỉ √(2 ln M). Nhân với sai số chuẩn, ta có Sharpe mà chiến lược hoàn toàn vô giá trị nhưng may mắn nhất trong số M chiến lược sẽ thể hiện.

Số chiến lược đã thử√(2 ln M)Sharpe tốt nhất do nhiễu, 5 năm (SE 0.45)Tốt nhất do nhiễu, 2 năm (SE 0.71)
102.150.961.52
1003.031.362.16
5003.531.582.50
5,0004.131.852.93

Hãy đọc hàng áp chót. Nếu bạn tạo 500 ứng viên dựa trên hai năm dữ liệu và ứng viên thắng cuộc có Sharpe 2.4, thì bạn chưa tìm được gì cả. Con số đó còn thấp hơn mức nhiễu. Chỉ số Sharpe đã hiệu chỉnh độ lệch của Bailey và López de Prado chính thức hóa cách tính này bằng cách dùng phương sai của các Sharpe trong những lần thử thay cho √(2 ln M) gần đúng. Việc triển khai cho đúng là đáng công, nhưng phiên bản gần đúng cũng đủ để thay đổi cách làm ngay hôm nay.

Có hai điều khiến tình hình tệ hơn bảng cho thấy. Thứ nhất, M không phải số chiến lược bạn đã lưu mà là số chiến lược bạn đã đánh giá, gồm mọi lần chỉnh tham số, mọi lần “để tôi thử lookback 30 kỳ xem sao”, mọi lần chạy lại sau khi sửa lỗi. Chẳng ai đếm cho thành thật. Thứ hai, các ứng viên không phải những lần rút độc lập, nên √(2 ln M) phóng đại độ rộng hiệu dụng; tuy nhiên, các lần thử tương quan cũng có nghĩa là một chế độ thị trường may mắn sẽ nâng cả một nhóm ứng viên cùng lúc.

Con số nguy hiểm nhất trong nghiên cứu định lượng là con số chẳng ai ghi lại: bạn đã xem kết quả bao nhiêu lần.

Vậy tôi thực sự nên làm gì?

Năm việc, theo đúng thứ tự tôi sẽ thực hiện.

  1. Ghi lại mọi lần đánh giá. Một bộ đếm tăng lên sau mỗi lần chạy backtest, được lưu lại và không bao giờ đặt lại. Nếu bạn không biết M bằng bao nhiêu, bạn cũng không thể biết ngưỡng của mình là bao nhiêu. Đây là một giờ làm kỹ thuật có giá trị cao nhất trong cả danh sách.
  2. Luôn báo cáo Sharpe kèm khoảng tin cậy. Đừng bao giờ chỉ in ra một con số trơ trọi. Báo cáo backtest của chúng tôi hiển thị 1.72 ± 0.51 (2.9y, skew-adjusted) và dấu ± là bắt buộc. Cách này thay đổi cách cả nhóm trao đổi về kết quả.
  3. Xác định ngưỡng dựa trên M và T trước khi xem kết quả. Tra con số trong bảng phía trên rồi ghi lại. Đặt ngưỡng sau khi xem kết quả là cách mọi người tự thuyết phục mình rằng khớp đường cong là hợp lý.
  4. Khi mẫu còn ít, hãy ưu tiên độ rộng thay vì tần suất. Bạn không thể tạo thêm thời gian lịch, nhưng có thể chạy cùng một tín hiệu trên 40 mã không tương quan. Việc đó thực sự làm tăng n hiệu dụng, khác với việc tăng tần suất giao dịch. Nhưng hãy để ý tương quan — 40 hợp đồng vĩnh cửu crypto trong một giờ thị trường né rủi ro thì cũng chỉ như một công cụ duy nhất.
  5. Sau đó, hãy giao dịch trên tài khoản mô phỏng. Thời gian ngoài mẫu chỉ tích lũy mỗi ngày một ngày và không có đường tắt, cũng chính vì vậy mà đây là mẫu duy nhất không ai có thể khớp quá mức.

Không điều gì trong số này khiến các mẫu ngắn trở nên hữu dụng. Nó giúp bạn thành thật về những gì một mẫu ngắn có thể chứng minh — một khẳng định yếu hơn nhiều so với điều mà phần lớn báo cáo backtest ngụ ý. Sharpe 1.5 trong hai năm là một giả thuyết đáng đem đi giao dịch mô phỏng. Đó chưa phải là một phát hiện.

tỷ lệ Sharpekhớp quá mứcbacktestý nghĩa thống kênghiên cứu định lượng
← Tất cả bài viết