Cách biến “tôi nghĩ cái này hiệu quả” thành một con số bạn thật sự kiểm chứng được — và chỗ phần lớn mọi người mắc kẹt.
Bạn có một ý tưởng. Khi mẫu hình này xuất hiện thì bạn mua, và bạn thoát ra ở mức thấp hơn 3%. Bạn kéo ngược biểu đồ lại xem và thấy có vẻ đúng. Rồi bạn bỏ tiền thật vào, và bạn không có cách nào biết mình đã đúng hay chỉ vừa chọn ra đúng vài cây nến đồng tình với mình. Giao dịch định lượng tồn tại để lấp đúng khoảng trống đó.
Giao dịch định lượng là dùng dữ liệu và thống kê để định nghĩa trước các quy tắc vào lệnh và thoát lệnh, rồi để chính các quy tắc đó quyết định giao dịch thay vì phán đoán từng lệnh ngay tại thời điểm đó. Quy tắc có thể đơn giản (một lần cắt nhau của đường trung bình động, một ngưỡng RSI) hoặc phức tạp (mô hình đa nhân tố, machine learning). Sự phức tạp không phải là điểm mấu chốt.
Điểm mấu chốt là một quy tắc đã viết ra sẽ cho cùng một đáp án mỗi lần bạn chạy nó. Đó chính là thứ khiến nó kiểm chứng được. Bạn có thể lấy các quy tắc đó, chạy chúng qua bốn năm dữ liệu lịch sử, và nhận về những con số cụ thể: lợi nhuận là bao nhiêu, drawdown tệ nhất sâu tới đâu, phí đã ăn mất bao nhiêu.
Tín hiệu giao dịch là đầu ra của một điều kiện: nó chỉ nói lúc này bạn nên đứng về phía nào, không nói mua bao nhiêu hay khi nào cắt. Ba từ này thường được dùng thay cho nhau, và lẫn lộn chúng là lý do phổ biến nhất khiến một ý tưởng có triển vọng không bao giờ trở thành thứ chạy được.
| Thuật ngữ | Nó là gì | Nó không bao gồm |
|---|---|---|
| Tín hiệu | Đầu ra của một điều kiện — thường là +1 (mua), 0 (đứng ngoài), −1 (bán khống). Nó trả lời ngay lúc này có chuyện gì đang xảy ra không? | Mua bao nhiêu, cắt lỗ khi nào, làm gì nếu lệnh thất bại |
| Chiến lược | Một tín hiệu cộng thêm định cỡ vị thế, giới hạn rủi ro và quy tắc thực thi. Đây mới là thứ thật sự triển khai được và quy trách nhiệm được. | Nó tương tác thế nào với các vị thế khác của bạn |
| Danh mục | Nhiều chiến lược hoặc nhiều mã kết hợp lại kèm một phân bổ trọng số giữa chúng. | — |
Phần lớn những người nói “tôi có một chiến lược” thật ra đang có một tín hiệu. Đó không phải lời chê — tín hiệu mới là phần khó và sáng tạo. Nhưng một tín hiệu đứng riêng thì không thể backtest một cách trung thực, vì kết quả phụ thuộc hoàn toàn vào các quy tắc định cỡ và rủi ro mà bạn chưa viết ra.
Trong Blave Agent, sự phân biệt này mang tính cấu trúc: chiến lược một mã dựa trên tín hiệu là Type A và bắt buộc phải có backtest, danh mục nhiều mã kèm vector trọng số là Type C và cũng bắt buộc phải có backtest, còn mọi thứ khác là Type B, loại không bắt buộc.
Tín hiệu giao dịch tự nó không đặt lệnh. Nó chỉ là một con số: trước hết nó phải được dịch thành “lúc này bạn nên nắm bao nhiêu ở mã đó”, rồi trừ đi vị thế bạn đang có — phần chênh mới là lệnh thật sự được gửi đi. Khi đi từ backtest sang chạy thật, chính mấy bước ở giữa này là thứ phần lớn mọi người mới phát hiện là mình chưa viết.
Blave Agent để một bộ đối soát thường trú lo bước 3 và 4: nó tự giữ sổ cái và chỉ đối soát với những lệnh chính nó đã đặt, chứ không đọc vị thế thô trên sàn của tài khoản — nên vị thế bạn mở bằng tay không bị coi là vị thế chiến lược để cộng thêm hay đóng đi. Cách phân bổ số tiền và những gì kích hoạt một lượt đối soát, xem Danh mục giao dịch thật.
Còn một thứ nữa quyết định chuỗi này có trung thực hay không: sau khi tín hiệu hình thành, bạn khớp ở nến nào và ở giá nào. Nếu backtest và chạy thật lệch nhau ở đây, mọi con số lợi nhuận phía trên đều không còn giá trị — quy tắc và ngoại lệ của nó, xem phần lookahead bias trong Cách đọc kết quả backtest.
| Giao dịch thủ công | Giao dịch định lượng | |
|---|---|---|
| Vào và thoát lệnh | Phán đoán ngay tại thời điểm đó | Quy tắc đã viết ra — cùng đầu vào, cùng đáp án, mọi lúc |
| Kiểm chứng được không? | Không, không phải với đúng logic bạn đã dùng | Được — Sharpe, MDD, phí đã trả, đều tính được |
| Khi nào nó chạy | Chỉ khi bạn còn thức và đang nhìn | 24/7 sau khi triển khai |
| Hỏng ở đâu | Kỷ luật vỡ dưới áp lực | Quy tắc vẫn chạy tiếp sau khi thị trường mà nó được xây cho đã biến mất |
Hãy chú ý hàng cuối: tự động hóa không loại bỏ các kiểu thất bại, nó chỉ đổi kiểu — trader thủ công bỏ kế hoạch đúng vào lúc tệ nhất, chiến lược tự động vẫn chạy tiếp một kế hoạch đã hết hiệu quả, và âm thầm hơn nhiều.
Đây là một ví dụ thật từ chính engine backtest của Blave Agent — btc_sma_cross trên BTCUSDT 1h, SMA45/SMA100, chạy từ 2022-01-01 tới đúng ngày backtest được chạy (các con số bên dưới là ảnh chụp của một lần chạy như vậy). Tổng lợi nhuận cao hơn gấp đôi so với mua và nắm giữ. Nó cũng có drawdown tối đa −42.6%, và đã trả 22% vốn ban đầu cho phí trong bốn năm đó.
Cả ba con số đều quan trọng, và chỉ con số đầu tiên là thứ người ta đem đi trích dẫn. Một chiến lược nhân đôi mức mua và nắm giữ nhưng bắt bạn ngồi yên qua một drawdown 42% thì không hiển nhiên là tốt hơn một chiến lược lời ít hơn mà không bao giờ dọa bạn phải thoát ra. Và một hóa đơn phí bằng 22% vốn nghĩa là tần suất giao dịch không hề miễn phí — một phiên bản nhanh hơn của cùng ý tưởng đó có thể dâng trọn lợi thế của mình cho sàn giao dịch.
Quy trình tạo ra những con số đó luôn gồm cùng năm bước:
Blave Agent tách “có ý tưởng” khỏi “dựng hạ tầng”. Bạn mô tả chiến lược bằng hội thoại, rồi agent nghiên cứu, viết code, chạy backtest và đưa lên chạy thật. Có hai cách chạy: bản máy tính miễn phí, mã nguồn mở, nối với Claude Code hoặc Codex của chính bạn; hoặc cùng không gian làm việc đó trên máy chủ đám mây riêng của bạn — vẫn chạy khi tắt máy tính, thao tác được từ web, Telegram hoặc SSH.
Nếu bạn chưa có ý tưởng, các chiến lược chính thức đều miễn phí và mỗi chiến lược đều đi kèm backtest thật. Chiến lược được gửi đi kiểm định phải vượt qua ba cổng — một backtest trung thực, một kiểm định hoán vị Monte Carlo để xét ý nghĩa thống kê, và một lượt kiểm tra độ bền của tham số — và chỉ chiến lược vượt cả ba mới mang huy hiệu Đã kiểm định. Không có huy hiệu không có nghĩa là nó trượt: nghĩa là ba kết quả đó chưa được nộp, nên bạn hãy tự đọc các con số backtest của nó.
Năm điều cần kiểm. Nếu một chiến lược trượt bất kỳ điều nào, con số backtest không nói lên điều bạn nghĩ nó nói.
Bạn viết được quy tắc thành một câu không? “Khi X đúng thì làm Y, và thoát khi Z.” Nếu không viết được, cái bạn có là trực giác chứ không phải chiến lược — và chưa có gì để kiểm chứng cả.
Cửa sổ backtest có chứa một đợt giảm thật không? Một chiến lược chỉ mới được kiểm qua thị trường tăng giá thì coi như chưa được kiểm. Hãy tìm giai đoạn tệ nhất trong lịch sử của tài sản đó và chắc chắn rằng nó nằm trong cửa sổ.
Backtest đã tính phí chưa? Ví dụ btc_sma_cross đã trả 22% vốn cho phí trong bốn năm. Hãy khớp mức phí với thị trường bạn giao dịch: FEE = 0.0005 là taker của hợp đồng tương lai USD-M trên Binance ở bậc VIP0 (0.05%), còn giao ngay Binance khởi điểm ở 0.1%. Cổng kiểm phí khi đưa một chiến lược chính thức lên sàn xét đúng điều này — FEE phải ≥ mức taker VIP0 của sàn đó, tính thiếu thì không qua.
Bạn đã thử bao nhiêu tổ hợp tham số? Quét một trăm tổ hợp thì sẽ có vài tổ hợp trông như có ý nghĩa thống kê thuần túy nhờ may mắn. Nếu bạn tinh chỉnh tham số trên toàn bộ dữ liệu rồi báo cáo kết quả trên chính dữ liệu đó, bạn đang báo cáo sai số huấn luyện.
Bạn ngồi yên được qua drawdown tệ nhất trong báo cáo chứ? −42.6% trên một tài khoản $1M là khoản lỗ trên giấy $426,000. Nếu mức đó khiến bạn tắt chiến lược, hãy giảm khối lượng xuống tới mức không còn khiến bạn tắt — drawdown bạn không giữ nổi chính là drawdown biến khoản lỗ trên giấy thành lỗ thật.
Bạn không cần đến với một chiến lược hoàn hảo. Hãy triển khai một chiến lược chính thức, xem nó hành xử thế nào qua một tuần thua lỗ, rồi sửa thành phiên bản của riêng bạn khi bạn đã hiểu các con số của nó đang nói gì.