Backtesting là gì? Cách backtest chiến lược crypto một cách trung thực
Giải thích về backtest: kiểm tra quy tắc giao dịch trên giá trong quá khứ, tính cả phí và trượt giá thường bị bỏ qua, cách đọc kết quả và những sai lầm dễ gây hiểu lầm.
Câu trả lời ngắn
Backtest chạy các quy tắc giao dịch của bạn trên giá trong quá khứ để xem chúng sẽ hoạt động ra sao: các giao dịch, kết quả sau khi trừ chi phí và mức giảm lớn nhất trong quá trình đó. Một bản backtest đáng tin cậy tính cả phí và trượt giá thực tế, so sánh kết quả với việc chỉ nắm giữ đồng coin và sử dụng nhiều hơn một giai đoạn. Kết quả trong quá khứ không dự đoán kết quả trong tương lai.
Backtest là chạy một bộ quy tắc giao dịch trên giá trong quá khứ để xem các quy tắc đó sẽ hoạt động ra sao. Phần mềm lần lượt đi qua dữ liệu lịch sử theo từng mức giá, áp dụng chính xác các quy tắc bạn đã viết và ghi lại mọi giao dịch mà các quy tắc đó sẽ thực hiện, chi phí của từng giao dịch và số dư tài khoản sẽ tăng hay giảm thế nào.
Backtest trả lời một câu hỏi: các quy tắc này có hiệu quả trong quá khứ sau khi tính chi phí không? Đây là cách ít tốn kém nhất để loại bỏ những ý tưởng không tốt. Một quy tắc thua lỗ trong hai năm qua có lẽ không phải là lựa chọn tốt để bắt đầu.
Backtest không thể cho biết liệu các quy tắc có hiệu quả trong tháng tới hay không. Thị trường luôn thay đổi, và quy tắc phù hợp với một giai đoạn có thể thất bại ở giai đoạn tiếp theo. Vì vậy, bước tiếp theo sau backtest là giao dịch mô phỏng, không phải dùng tiền thật.
Backtest hoạt động như thế nào
Chọn thị trường và khoảng thời gian, chẳng hạn BTC/USDT trên Binance trong 2 năm qua.
Viết quy tắc thật chính xác. "Mua khi BTC giảm 5% trong vòng 24 giờ, bán khi giá cao hơn giá mua 4%, cắt lỗ khi giá thấp hơn 6%, tối đa 2 lệnh mua đang mở."
Phát lại dữ liệu giá. Ở mỗi bước, bài kiểm thử xác định xem có quy tắc nào được kích hoạt không, rồi mô phỏng lệnh ở mức giá đó.
Tính các chi phí. Mỗi lệnh mô phỏng chịu phí sàn và một khoản dự phòng cho trượt giá, tức chênh lệch giữa giá khớp dự kiến và giá khớp thực tế.
Tóm tắt kết quả. Bài kiểm thử báo cáo kết quả trong khoảng thời gian đó, số giao dịch, tỷ lệ giao dịch có lãi và mức giảm sâu nhất tính từ một đỉnh giá trong quá trình đó.
Cách đọc kết quả backtest một cách khách quan
Bốn con số quan trọng hơn kết quả nổi bật:
Khoảng thời gian. Kết quả không có khoảng thời gian thì chẳng có ý nghĩa gì. Mười hai tháng có một đợt sụp đổ rất khác với mười hai tháng giá tăng.
Mức giảm lớn nhất. Còn gọi là mức sụt giảm tối đa (max drawdown): mức giảm lớn nhất từ đỉnh trước khi giá phục hồi. Chỉ số này cho biết bạn sẽ phải chịu đựng chiến lược đến mức nào. TradeCorgi hiển thị chỉ số này nổi bật ngang với kết quả, không bao giờ in nhỏ.
So sánh với việc mua và nắm giữ. Đặt kết quả của chiến lược cạnh phương án mua coin ngay từ đầu rồi nắm giữ. Nhiều quy tắc có kết quả kém hơn việc nắm giữ khi thị trường tăng và chỉ hữu ích khi thị trường giảm. Điều đó vẫn ổn, miễn là bạn biết trước.
Số lượng giao dịch. Năm giao dịch chỉ là một chuyện kể. Năm mươi giao dịch bắt đầu cho thấy điều gì đó. Một chiến lược có rất ít giao dịch trong backtest thì hầu như chưa được kiểm thử.
Những sai lầm khiến kết quả backtest gây hiểu lầm
Bỏ qua phí và trượt giá. Đây là sai lầm thường gặp nhất khiến kết quả trông có vẻ tốt hơn thực tế. Một quy tắc giao dịch hằng ngày với mức phí 0.1% cho mỗi lệnh sẽ tốn khoảng 0.2% cho mỗi lượt mua rồi bán; trong một năm, chi phí đó có thể xóa sạch lợi thế nhỏ.
Chỉ kiểm thử một giai đoạn. Chạy cùng một quy tắc qua nhiều giai đoạn khác nhau, chẳng hạn một năm tăng, một năm giảm và một năm đi ngang. Nếu quy tắc chỉ hiệu quả trong một giai đoạn, thì bạn đang đặt cược rằng kiểu thị trường đó sẽ quay trở lại.
Tối ưu hóa quá mức. Nếu bạn chỉnh các con số cho đến khi kết quả trông hoàn hảo (4.7% thay vì 5%, 3.9% thay vì 4%), có thể bạn đã khớp quy tắc với dữ liệu quá khứ thay vì tìm ra một quy luật. Hãy ưu tiên các quy tắc đơn giản, dùng con số tròn và hiệu quả trong nhiều mức giá trị.
Thiên lệch nhìn trước. Một bài kiểm thử sử dụng thông tin mà tại thời điểm đó quy tắc không thể biết, chẳng hạn giá đóng cửa trong ngày vào buổi trưa, sẽ luôn cho kết quả tốt hơn thực tế.
Bỏ qua mức sụt giảm lớn nhất. Một chiến lược kết thúc với giá trị cao hơn nhưng giảm 40% trên đường đi là kiểu chiến lược mà hầu hết mọi người sẽ từ bỏ khi chạm đáy.
Ví dụ minh họa
Lấy chiến lược BTC Dip Buyer và backtest trong 90 ngày trên Binance, với phí 0.1% cho mỗi lần mua và bán, cùng mức trượt giá 0.05% cho mỗi lệnh:
Các quy tắc thực hiện 9 giao dịch: 6 giao dịch có lãi, 3 giao dịch chạm stop-loss.
Sau 90 ngày đó, tài khoản kết thúc cao hơn 6.8% so với lúc đầu, sau khi trừ phí.
Chỉ nắm giữ BTC trong cùng 90 ngày thì kết thúc cao hơn 3.1%.
Mức sụt giảm lớn nhất trong giai đoạn này là 4.9% tính từ đỉnh, so với 10.7% khi chỉ nắm giữ.
Đánh giá khách quan: trong khoảng thời gian 90 ngày này, các quy tắc hoạt động tốt hơn việc chỉ nắm giữ và mức giảm sâu nhất cũng nhỏ hơn. Tuy nhiên, 9 giao dịch trong một giai đoạn là chưa đủ bằng chứng. Bước tiếp theo là backtest trong thời gian dài hơn, rồi giao dịch giấy. Đây là ví dụ minh họa, không phải kết quả thực tế.
Backtest trên TradeCorgi
Khi bạn mô tả một chiến lược, TradeCorgi sẽ tự động backtest sau khi bạn xác nhận các quy tắc:
Luôn tính phí, dựa trên mức phí của sàn dành cho cấp tài khoản của bạn, cùng với trượt giá và khối lượng lệnh tối thiểu của sàn.
Nắm giữ đồng coin trên cùng biểu đồ, để bạn thấy các quy tắc có tạo ra khác biệt nào không.
Mức sụt giảm lớn nhất, hiển thị cùng với kết quả.
Dữ liệu lịch sử theo gói: 90 ngày trên Sandbox, 2 năm trên Copilot, 4 năm trên Autopilot và toàn bộ dữ liệu lịch sử của sàn trên Pro.
Mỗi kết quả đều ghi rõ khoảng thời gian và phí. Backtest tốt sẽ mở khóa giao dịch thử nghiệm, chứ không bao giờ cho phép giao dịch thật ngay lập tức.
Danh sách kiểm tra backtest
Giai đoạn được nêu rõ và bao gồm nhiều hơn một trạng thái thị trường.
Phí và trượt giá được tính cho mọi giao dịch.
Kết quả được so sánh với việc chỉ nắm giữ đồng coin.
Mức sụt giảm lớn nhất được hiển thị và bạn thấy mình có thể chấp nhận được.
Có đủ số lượng giao dịch để kết quả có ý nghĩa.
Các quy tắc đơn giản, với con số tròn, không được tinh chỉnh đến từng chữ số thập phân.
Bước tiếp theo là giao dịch mô phỏng, không phải dùng toàn bộ số tiền giao dịch thật của bạn.
Câu hỏi
Kết quả backtest tốt có chứng minh chiến lược hiệu quả không?
Không. Công cụ này cho thấy các quy tắc sẽ hoạt động ra sao trong một giai đoạn quá khứ, sau khi trừ chi phí. Tương lai có thể khác, vì vậy hãy xem backtest là cách sàng lọc ý tưởng không tốt, chứ không phải bằng chứng cho thấy ý tưởng tốt.
Kiểm thử ngược crypto nên sử dụng dữ liệu lịch sử trong bao lâu?
Đủ để bao gồm thị trường tăng, giảm và đi ngang. Với crypto, thường cần ít nhất một năm và tốt nhất là vài năm. TradeCorgi cung cấp 90 days trên Sandbox, 2 years trên Copilot, 4 years trên Autopilot và toàn bộ lịch sử của sàn giao dịch trên Pro.
Vì sao cần tính phí và trượt giá?
Vì mỗi giao dịch thật đều phát sinh phí. Một quy tắc giao dịch thường xuyên có thể trông hiệu quả trước khi tính chi phí nhưng lại thua lỗ sau khi tính phí. Backtest của TradeCorgi luôn bao gồm phí sàn và trượt giá.
Overfitting là gì?
Điều chỉnh quy tắc cho đến khi chúng khớp hoàn hảo với giá trong quá khứ. Kết quả trông rất tốt trong giai đoạn kiểm thử nhưng thường gây thất vọng về sau, vì các quy tắc đã học theo nhiễu thay vì một quy luật thực sự.
Tôi có thể backtest miễn phí không?
Có. Gói Sandbox miễn phí backtest dựa trên dữ liệu lịch sử 90 ngày, đã tính phí, và chạy một agent giao dịch mô phỏng.
Tôi nên so sánh kết quả backtest với điều gì?
Hãy so sánh với việc chỉ mua và nắm giữ cùng đồng coin trong cùng khoảng thời gian. Nếu các quy tắc không thể đạt kết quả tốt hơn chiến lược nắm giữ sau khi trừ phí, hoặc chỉ tốt hơn khi chấp nhận mức giảm sâu nhất lớn hơn nhiều, thì có thể không đáng để chạy chiến lược đó.