Hãy bắt đầu bằng các con số, vì chúng chính là toàn bộ lập luận. Một vòng giao dịch taker khép kín trên một sàn perp lớn tốn khoảng 0.10% giá trị danh nghĩa tiền phí. Funding trên một vị thế long đông đúc có thể ngốn 10-30% mỗi năm ngược chiều bạn. Một lệnh thị trường có quy mô lớn so với độ sâu đầu sổ lệnh phải trả thêm tác động theo quy luật căn bậc hai, cộng lên trên spread. Và một backtest đọc bản dữ liệu hôm nay của ngày hôm qua sẽ nhận được một lợi thế trị giá vài phần trăm mỗi năm — thứ chưa bao giờ tồn tại.
Con số gây bất ngờ là con số đầu tiên. Không phải vì nó lớn — mà vì tác động của nó lên tần suất giao dịch. Ai cũng gật gù với câu "nhớ tính phí vào" rồi lại đem test một chiến lược giao dịch bốn mươi lần mỗi ngày. Với 0.10% mỗi vòng khứ hồi, bốn mươi lệnh là 4% giá trị danh nghĩa mỗi ngày tiền phí. Không có tín hiệu nào trên một perp vốn hóa trung bình vượt nổi ngưỡng đó. Chiến lược ấy còn xa mới khả thi, vậy mà backtest không tính phí lại bảo rằng nó xuất sắc.
Phí là một bộ lọc, không phải một khoản cắt xén
Mô hình tư duy mà phần lớn mọi người mang theo là phí chỉ bào mỏng đường cong: cùng hình dạng, thấp hơn một chút. Sai. Phí là một bộ lọc tần suất. Nó xóa sổ hoàn toàn các biến thể tần suất cao của một lợi thế, trong khi gần như không đụng đến các biến thể chậm. Khi pipeline của chúng tôi bắt đầu áp biểu phí maker/taker thật theo từng sàn, những chiến lược chết đi không phải là ý tưởng tồi — chúng là ý tưởng tốt nhưng giao dịch quá thường xuyên. Cách sửa thường là kéo dài khung thời gian, chứ không phải tìm tín hiệu tốt hơn. Giờ chúng tôi loại bỏ mọi chiến lược có lợi nhuận trung bình mỗi lệnh dưới 0.15% giá trị danh nghĩa, bởi sau chi phí hai chiều thì chẳng còn gì để tích lũy.
Funding là một thứ thuế vị thế có trí nhớ
Hợp đồng tương lai vĩnh cửu trả funding mỗi giờ hoặc mỗi tám giờ, và đó không phải nhiễu: nó tương quan về mặt cấu trúc với đúng những giao dịch mà hệ thống momentum muốn vào. Khi ai cũng long, funding dương, và vị thế long theo momentum của bạn phải trả khoản đó. Một backtest không cộng dồn funding sẽ tô hồng một cách hệ thống cho chiến lược trend-following trên perp. Chúng tôi học được điều này theo cách khá xấu hổ — cả một họ chiến lược funding-carry bị tự động loại bỏ chỉ vì engine không ghi có khoản funding mà chúng được thiết kế để thu về. Tín hiệu thì ổn. Phần hạch toán mới là thứ bị thiếu.
Tác động thị trường tỷ lệ với căn bậc hai quy mô lệnh
Điều hư cấu lịch sự của backtest theo bar là bạn khớp lệnh tại giá đóng cửa. Với lệnh nhỏ thì điều đó gần đúng. Với bất cứ quy mô đáng kể nào, mô hình được thừa nhận là tác động tăng theo căn bậc hai của kích thước lệnh so với khối lượng, và nó không bao giờ hồi lại. Chúng tôi đưa ước lượng tác động theo quy luật căn bậc hai vào từng lần khớp và vào chính đường cong vốn. Nó quan trọng nhất ở đúng chỗ bất tiện nhất: sức chứa vốn. Một chiến lược có thể thực sự sinh lời ở mức 50k$ và lỗ về mặt cấu trúc ở mức 5 triệu$, và chỉ đường cong có tính đến tác động mới cho thấy ranh giới đó.
Nhìn trước ẩn trong dữ liệu, không phải trong code
Chẳng ai viết if tomorrow_close > today_close: buy(). Nhìn trước len lỏi qua đường ống dữ liệu: tin tức được gắn nhãn thời gian theo lúc xuất bản thay vì lúc thu nạp, funding rate được ghép theo kỳ mà nó áp dụng thay vì lúc nó được biết đến, danh mục symbol "hiện tại" đem áp lên quá khứ (thiên lệch sống sót), số liệu kinh tế đã hiệu chỉnh thay thế cho con số thực sự chạy trên bảng điện lúc đó. Nguyên tắc của chúng tôi là point-in-time ở mọi nơi: mọi chuỗi dữ liệu bổ sung đều được gắn nhãn thời gian theo thời điểm chúng tôi lẽ ra có thể biết nó, và một backtest chỉ được đọc những gì tồn tại tại nanosecond đó.
Phép thử của một backtest không phải là đường cong có đi lên hay không. Mà là liệu cùng đoạn code đó, được nạp cùng những tín hiệu đó trong thời gian thực, có tạo ra cùng những lệnh đó hay không — và bạn chỉ biết được bằng cách kiểm tra, mỗi ngày, mãi mãi.
Câu cuối đó là một quy trình thật, không phải khẩu hiệu. Mỗi ngày chúng tôi phát lại cửa sổ thời gian của từng chiến lược đang paper trading qua engine backtest và đối chiếu từng lệnh một. Khi paper và bản phát lại lệch nhau, một trong hai đang nói dối, và thủ phạm thường là một khoản chi phí hoặc một dấu thời gian. Bốn khoản trên đơn giản là những thứ đã nói dối chúng tôi trước tiên.
← Tất cả bài viết