Chúng tôi chạy 13 bot song song trên một tài khoản, một cặp tiền, trong 24 ngày. Kết quả là 265 lệnh và một khoản lỗ. Bài này không nói về khoản lỗ đó — nó nói về ba điều đo được khi mổ xẻ nó, trong đó có một điều làm chúng tôi phải bỏ giả thuyết ban đầu.
Mọi số liệu dưới đây quy về đơn vị R — bội số của khoảng dừng lỗ lúc vào lệnh. Chúng tôi không nêu số tiền tuyệt đối, vì luận điểm không cần đến nó: tất cả đều là tỉ lệ.
| Số bot chạy song song | 13 |
| Khoảng thời gian | 24 ngày |
| Lệnh đã đóng | 265 |
| Số lần thực sự ra quyết định | 70 |
| Đơn vị R | = khoảng SL lúc vào lệnh |
265 lệnh nghe như 265 lần thử. Không phải. Khi 13 bot cùng chạy trên một cặp tiền với logic cùng họ, chúng vào lệnh cùng một giây, ở cùng một giá. Một ví dụ có thật trong bộ dữ liệu:
17:22:37 11 bot SELL cùng một giá
11 lệnh · 11 phiếu · nhưng chỉ 1 quyết định
Gom các lệnh vào cùng hướng, cùng giá, trong vòng 15 phút thành một "cụm quyết định", 265 lệnh rút xuống còn 70. Mẫu thật nhỏ hơn 3,8 lần so với vẻ ngoài.
Điều này không phải chi tiết kỹ thuật. Nó quyết định mọi kết luận thống kê phía sau: một hệ thống có "265 lệnh" nghe như đã đủ mẫu để đánh giá; 70 quyết định thì chưa.
Xếp 70 cụm theo kết quả, tổng thiệt hại gộp là 130,8R. Phân bố của nó:
| Số cụm tệ nhất | Thiệt hại | % tổng |
|---|---|---|
| 5 cụm (7%) | −53,5R | 41% |
| 10 cụm (14%) | −89,6R | 69% |
| 13 cụm (19%) | −99,6R | 76% |
| 20 cụm (29%) | −113,4R | 87% |
Nói cách khác: 19% số quyết định gây ra ba phần tư thiệt hại. Và nếu bỏ riêng 13 cụm đó ra, 57 cụm còn lại cộng lại dương 9,5R.
Hệ quả cho việc cải tiến thì rõ ràng, và ngược với trực giác thông thường: giá trị không nằm ở chỗ làm tín hiệu tốt hơn. 57 cụm còn lại đã ổn. Giá trị nằm ở chỗ nhận ra 13 tình huống kia và đứng ngoài.
Đây cũng là loại thay đổi rẻ nhất để thử: một bộ lọc phủ quyết không đụng vào logic vào lệnh, dễ đo tác động, và tắt được bằng một biến môi trường.
Giả thuyết đầu tiên của chúng tôi: các cụm đông bot là thủ phạm. Số liệu bác bỏ điều đó.
| Nhóm | Cụm | R mỗi cụm | R mỗi bot | Thắng |
|---|---|---|---|---|
| 1 bot | 30 | −0,35 | −0,35 | 37% |
| 2–4 bot | 17 | +0,21 | +0,08 | 47% |
| 5–7 bot | 10 | −0,04 | −0,01 | 40% |
| 8–11 bot | 13 | −1,44 | −0,14 | 46% |
Cụm đông có tỉ lệ thắng cao nhất (46%), và tính trên mỗi bot thì còn đỡ hơn lệnh đơn lẻ (−0,14R so với −0,35R). Chúng không phải quyết định tệ hơn. Chúng là quyết định bình thường được đặt với khối lượng gấp mười.
Bằng chứng sạch nhất đến từ một cặp song sinh trong đàn: hai bot dùng cùng một tệp mã, chỉ khác định danh và một công tắc cấu hình. Trong khoảng thời gian cả hai cùng chạy:
Bot X 7 lệnh Bot Y 7 lệnh Vào lệnh: cùng giây, cùng giá, cùng hướng — cả 7 lần Chênh lệch toàn bộ đến từ MỘT lệnh, thoát lệch nhau 6 giây
Công tắc cấu hình được bật đúng, nhưng trong cả 7 quyết định nó không tìm được vùng nào để can thiệp. Nên "hai bot" thực chất là một bot chạy hai lần với khối lượng gấp đôi.
Với n bot tương quan chặt trên cùng một cặp tiền: kỳ vọng mỗi bot gần như không đổi, nhưng phương sai của tài khoản nhân lên n lần. Đó là đòn bẩy được nguỵ trang thành đa dạng hoá.
Từ 13 cụm tệ nhất, một điểm chung lộ ra: ở thời điểm ra quyết định, cấu trúc khung nhỏ (M15) đã đảo chiều ngược với hướng định vào — đáy cao dần khi bot định bán, hoặc đỉnh thấp dần khi bot định mua. Hệ thống có đọc chỉ báo đó, nhưng nhánh xu hướng trả lời trước nên nó không bao giờ được hỏi tới.
Chúng tôi thêm một chốt chặn: hướng nào mâu thuẫn với cấu trúc M15 thì đứng ngoài nhịp đó. Luật này thiết kế từ một ngày cụ thể, rồi chạy ngược lên toàn bộ những ngày trước — nên phần trước đó là mẫu ngoài thật sự.
| Giai đoạn | Cụm | Thực tế | Chặn | Còn lại |
|---|---|---|---|---|
| Mẫu ngoài | 55 | −47,6R | 12 cụm · −23,7R | −23,9R |
| Mẫu trong | 15 | +21,8R | 1 cụm · −11,6R | +33,4R |
| Toàn kỳ | 70 | −25,8R | 13 cụm · −35,3R | +9,5R |
Ở mẫu ngoài, kết quả vẫn là lỗ — từ −47,6R xuống −23,9R. Bộ lọc cắt được hơn nửa thiệt hại. Nó không biến hệ thống thành có lãi, và chúng tôi không tuyên bố như vậy.
Ba trong 13 cụm bị chặn đang có lãi. Đó là chi phí thật của bộ lọc, đã trừ vào con số trên.
Phần này quan trọng hơn phần kết quả. Trong quá trình phân tích, chúng tôi dựng sáu lời giải thích nghe rất hợp lý. Cả sáu đều sai:
| Giả thuyết | Dữ liệu trả lời |
|---|---|
| Gộp lệnh là thủ phạm | Cụm đông thắng nhiều hơn; tính trên mỗi bot còn đỡ hơn lệnh đơn |
| Đàn bot lệch về phía bán | Đúng 50/50 — 140 mua, 139 bán |
| Cửa sổ phát hiện phá cấu trúc quá rộng nên nhánh đó chết câm | Nó kích hoạt 42,6% số lần quét, còn nhiều hơn phiên bản cục bộ |
| Việc vùng mất cân bằng không được bỏ phiếu cho hướng gây thiệt hại | Chênh lệch 0,04R mỗi lệnh — nằm trong nhiễu |
| Chỉnh hai tham số khoá lãi sẽ khá hơn | Cả lưới 16 cấu hình trải 0,07R; ô tốt nhất nửa kỳ này thua ở nửa kia |
| Bộ lọc B chặn được cụm lỗ nặng nhất | Lệnh đặt sớm hơn 18 phút so với lúc khớp; ở thời điểm đó bộ lọc B không với tới |
Bài học không phải "chúng tôi đoán kém". Mà là: trong bài toán này, một lời giải thích nghe hợp lý gần như không mang thông tin. Chỉ có phép đo mới mang.
Hệ quả thực hành: mỗi lần quét lưới tham số và chọn ô tốt nhất, chúng tôi đều chia đôi kỳ để kiểm chéo. Ba lần liên tiếp, ô "tốt nhất" của nửa này thua ở nửa kia. Nếu bỏ bước đó, đã có ba thay đổi vô ích được triển khai — mỗi cái đều có một bảng số liệu đẹp đứng sau.
Tính trên toàn bộ 265 lệnh:
| Tỉ lệ thắng thực tế | 42,6% |
| R trung bình khi thắng | +0,95 |
| R trung bình khi thua | −0,87 |
| Tỉ lệ thắng cần để hoà vốn | 48,0% |