Một backtest lịch sử, một bài thực hành giao dịch mô phỏng và một quan sát tiến cứu (forward) trả lời những câu hỏi khác nhau. Không có cái nào tự nó chứng minh được rằng một chiến lược sẽ sinh lời, và không cái nào nên được mô tả là giao dịch thực trừ khi một lệnh thực sự đã được gửi đi và việc khớp lệnh của lệnh đó được ghi nhận một cách độc lập. Hãy xem chuỗi bước này như một cách để bộc lộ từng giả định một, chứ không phải một bậc thang bảo đảm bạn đã sẵn sàng.
Backtest: với những quy tắc này, trên những bản ghi này, kết quả sẽ ra sao?
Một backtest áp dụng các quy tắc đã chỉ định lên dữ liệu quá khứ. Nó hữu ích để kiểm tra xem các quy tắc có thực thi đúng như dự định không, ước tính kết quả theo một mô hình đã khai báo, phát hiện lỗi dữ liệu và nhận diện các trường hợp thất bại rõ ràng. Kết quả phụ thuộc vào những gì tập dữ liệu chứa và vào các giả định về thời điểm tín hiệu, điểm vào, điểm ra, chi phí, tỷ lệ funding và việc khớp lệnh.
Ví dụ, nếu một quy tắc cần giá đóng cửa cuối cùng của một nến giờ, thì thông tin đó không có sẵn tại thời điểm mở nến. Vào lệnh sớm hơn trong cùng nến đó có thể tạo ra thiên lệch nhìn trước (look-ahead bias). Một backtest dùng bản ghi OHLC theo giờ không thể chứng minh được việc khớp lệnh trong hàng đợi với độ phân giải một giây, kể cả khi kết quả đầu ra báo cáo lợi nhuận với số thập phân chính xác. Dữ liệu tổng hợp có thể dùng để kiểm tra hành vi của phần mềm, nhưng không thể thay thế cho lịch sử giao dịch quan sát được từ sàn. Hãy ghi lại nhà cung cấp, mã định danh công cụ, dấu thời gian, phạm vi bao phủ, các khoảng thời gian bị thiếu, phiên bản quy tắc và mọi giả định khớp lệnh quan trọng.
Hãy dùng một cửa sổ đánh giá theo trình tự thời gian không được dùng để chọn cài đặt, và ghi lại nếu sau này bạn có xem xét đến nó. Việc tìm kiếm nhiều bộ tham số, lựa chọn tài sản và khoảng ngày tạo ra nhiều cơ hội hơn để tìm thấy một kết quả ngẫu nhiên; nghiên cứu về overfitting backtest của Bailey và các cộng sự trên trang của nhà xuất bản giải thích vì sao việc liên tục chọn ứng viên mạnh nhất có thể khiến một backtest trông thuyết phục hơn mức mà bằng chứng chưa từng thấy của nó biện minh. Hãy báo cáo đường cơ sở, số lệnh, mức sụt giảm (drawdown) và độ nhạy với chi phí song song với chỉ số hấp dẫn. Một tập dữ liệu giữ lại (holdout) sạch giúp trả lời một câu hỏi hẹp về dữ liệu lịch sử được tái sử dụng; nó không đảm bảo rằng các điều kiện tương lai sẽ giống quá khứ.
Giao dịch mô phỏng: một quy trình luyện tập bộc lộ điều gì?
Giao dịch mô phỏng ghi lại các quyết định giả định mà không gửi lệnh làm thay đổi mức exposure thị trường. Tùy công cụ, nó có thể giúp bộc lộ liệu người tham gia có tuân theo quy tắc đã viết hay không, liệu giao diện có hỗ trợ quy trình dự định hay không, và mô hình khớp lệnh được chọn ảnh hưởng đến sổ sách như thế nào. Một lệnh mô phỏng có thể được khớp ở giá nến, ở báo giá trực tiếp, hoặc theo một mô hình khác. Đó là những dạng bằng chứng khác nhau và cần được gọi đúng tên. Lấy một ví dụ từ nền tảng hiện tại, TradingView mô tả Paper Trading là luyện tập bằng tiền mô phỏng; tài liệu Broker Emulator riêng của nó liệt kê các giả định có thể cấu hình về hoa hồng, trượt giá, khớp lệnh giới hạn và độ trễ thực thi cho các bài kiểm thử chiến lược. Các cài đặt của nền tảng mô tả hành vi trình mô phỏng và backtest của chính nó, không phải việc khớp lệnh trên một sàn.
Nếu mô phỏng giả định rằng mọi lệnh đều khớp ở giá giữa quan sát được, nó có thể bỏ qua spread (chênh lệch giá mua-bán), thứ tự ưu tiên trong hàng đợi, khớp lệnh một phần, lệnh bị từ chối, độ trễ và tác động thị trường. Một lệnh stop có thể được kích hoạt mà không khớp ở mức giá đã chọn. Một tài khoản mô phỏng có thể bỏ qua tỷ lệ funding, các mức ký quỹ theo bậc, phí hoặc sự cố vận hành đặc thù của từng sàn. Hãy ghi lại nguồn giá mô phỏng, dấu thời gian, chi phí, các lần khớp bị bỏ lỡ hoặc khớp một phần nếu được mô hình hóa, và khoảng cách giữa quy trình dự định và hành vi quan sát được. Không nên gọi một lần khớp giả định là khớp lệnh trên sàn.
Kết quả mô phỏng cũng vẫn chỉ là một mẫu hạn chế. Một giai đoạn ngắn với ít quyết định nói lên rất ít về các sự kiện hiếm gặp, sự thay đổi regime thị trường hay exposure dài hạn. Thay đổi quy tắc trong quá trình luyện tập tạo ra một phiên bản mới. Hãy giữ lại bản ghi cũ để việc học hỏi không viết lại những gì phiên bản ban đầu lẽ ra đã làm.
Quan sát tiến cứu: điều gì xảy ra sau khi các quy tắc được đóng băng?
Một quan sát tiến cứu áp dụng một giả thuyết đã đóng băng lên dữ liệu đến sau giai đoạn nghiên cứu. Nó chỉ giúp giảm việc tái sử dụng trực tiếp đoạn dữ liệu về sau cho việc chọn tham số, và chỉ khi bạn không tiếp tục tham khảo đoạn đó để sửa quy tắc. Hãy ghi lại thời điểm tín hiệu, quan sát thị trường có sẵn, quyết định, quy ước vào lệnh giả định, chi phí và lý do đứng ngoài. Hãy quyết định trước sẽ quan sát trong bao lâu và bằng chứng nào sẽ được tính là thất bại.
Quan sát tiến cứu không tự động là giao dịch mô phỏng: nó có thể ghi lại tín hiệu mà không mô phỏng lệnh. Giao dịch mô phỏng có thể được thực hiện trên dữ liệu phát lại lịch sử hoặc dữ liệu tiến cứu. Bản thân mỗi cụm từ đều không cho biết liệu có liên quan đến báo giá thời gian thực, phí thực tế hay việc thực thi thực tế hay không. Hãy gọi đúng tên quy trình thực tế. Một sổ mô phỏng tiến cứu dùng báo giá quan sát được là bằng chứng mạnh hơn về thời điểm so với khớp lệnh hồi cứu trên nến, nhưng vẫn không thể chứng minh rằng một lệnh thực sẽ khớp ở mức giá đó.
Thực thi thực tế là một tuyên bố hoàn toàn khác
Một tuyên bố về khớp lệnh thực đòi hỏi bằng chứng về một lệnh thực sự đã được gửi đi và phản hồi của sàn, bao gồm mã định danh lệnh, dấu thời gian, khối lượng, trạng thái, giá khớp, phí và các bản ghi thanh toán bù trừ liên quan. Một mô phỏng, một ảnh chụp màn hình tín hiệu hay một bài kiểm thử phần mềm thành công đều không thể cung cấp bằng chứng đó. Kết quả thực tế cũng có thể bao gồm các tác động vận hành, funding, thanh khoản và đặc thù tài khoản không có trong một mô hình nghiên cứu.
Với sản phẩm SuperQuant hiện tại, các backtest lịch sử và quy trình luyện tập mô phỏng thủ công chạy cục bộ trên dữ liệu đầu vào theo giờ. Dữ liệu lịch sử đi kèm là dữ liệu tổng hợp, và ứng dụng không phải là một sàn thực thi giao dịch thực. Các quan sát công khai, nếu được dùng, phải được gắn nhãn riêng biệt với các lệnh mô phỏng. Ứng dụng không xác lập việc khớp lệnh thực trên sàn thông qua sổ sách mô phỏng của mình.
Giữ một bản ghi bằng chứng xuyên suốt các giai đoạn
Hãy lưu giả thuyết và phiên bản quy tắc trước mỗi giai đoạn. Giữ lại phạm vi dữ liệu, nguồn thời gian, nguồn giá, giả định chi phí, các quyết định bị bỏ qua, tham số đã thay đổi và ngày xem xét. Nêu rõ mỗi giai đoạn đã không kiểm tra điều gì. Khi chuyển từ phân tích lịch sử sang luyện tập tiến cứu, hãy đóng băng một phiên bản trước. Khi chuyển từ luyện tập sang bất kỳ sàn thực nào, hãy đánh giá lại một cách độc lập hợp đồng, phí hiện hành, hành vi lệnh, quyền truy cập và rủi ro cá nhân; một mô phỏng thuận lợi không phải là chỉ dẫn để tiến hành.
Danh sách kiểm tra rà soát backtest giúp ghi lại các giả định lịch sử. Nhật ký giao dịch crypto tách kế hoạch khỏi những gì đã xảy ra, và mẫu kế hoạch giao dịch cung cấp chỗ để ghi rõ các tiêu chí thất bại. Mỗi giai đoạn đều có thể kết thúc bằng “dừng lại” hoặc “thu thập bằng chứng tốt hơn”. Đây là nội dung giáo dục chung, không phải lời khuyên tài chính hay lời hứa về hiệu suất.
Hãy ghi giai đoạn bằng chứng thành một trường trong bản ghi, chứ không phải một nhãn “đã kiểm thử” chung chung. Với mỗi quan sát, hãy giữ lại thời điểm dữ liệu đến, thời điểm tín hiệu, quyết định, trạng thái lệnh mô phỏng hoặc đã gửi, nguồn khớp lệnh và nguồn chi phí. Một bản ghi đầy đủ có thể xác lập quy trình đã làm gì mà không xác lập được một kết quả sinh lời.