Đọc đúng dấu và phân phối của chỉ báo, tránh hai lỗi đọc phổ biến và đưa nó vào chiến lược.
Sau một cú giảm mạnh, Lịch sử thanh lý hiện một cột âm rất sâu. Có thật nhiều long bị thanh lý, hay giá trị của coin này vốn thường nằm dưới 0? Chỉ báo chỉ đọc Binance, và 0 không phải điểm cân bằng; hai điều này quyết định cách bạn đọc cột đó. Nếu bạn đang xem thanh lý theo mức giá, đó là một ước tính mô hình khác: xem Cách đọc Bản đồ thanh lý.
Chỉ báo thanh lý là một giá trị chuẩn hóa cho biết short hay long bị thanh lý nhiều hơn trong một khoảng thời gian, chỉ dùng luồng thanh lý công khai của Binance. Thanh lý là việc sàn buộc đóng một vị thế dùng đòn bẩy: long bị thanh lý thành lệnh bán, short bị thanh lý thành lệnh mua. Cứ 5 phút, Blave cộng lượng thanh lý (tính bằng coin) của mỗi bên theo từng symbol, rồi tính chỉ báo qua ba bước:
| Bước | Tính gì |
|---|---|
| 1. Thanh lý ròng | Mỗi 5 phút, lượng thanh lý short trừ lượng thanh lý long, tính bằng coin chứ không phải USD. Khung 5 phút không có bản ghi thanh lý được tính là 0. |
| 2. Tổng trượt | Cộng dồn trong timeframe đã chọn (mặc định 24h). |
| 3. Chuẩn hóa | Chia cho độ lệch chuẩn trượt 30 ngày của tổng đó. Tử số không trừ trung bình, nên đây không phải z-score chuẩn. |
Giá trị không có giới hạn trên dưới. Dấu cho biết bên nào bị thanh lý nhiều hơn:
| Giá trị | Ý nghĩa |
|---|---|
| > 0 | Trong timeframe, short bị thanh lý (tính bằng coin) nhiều hơn long |
| < 0 | Long bị thanh lý nhiều hơn short |
| ≈ 0 | Hai bên bù trừ nhau, không có bản ghi thanh lý, hoặc luồng dữ liệu bị gián đoạn; không có nghĩa long/short của coin đang cân bằng |
Phân phối không đối xứng: đuôi dưới (thanh lý long) sâu hơn đuôi trên. Đây là các phân vị Blave tự tính từ luồng thanh lý Binance, nến 1h, timeframe 24h, giai đoạn 2024-09-15 đến 2026-09-14, lấy một giá trị mỗi giờ (n = 17,520):
| Coin | p1 | p50 | p99 | Tỷ lệ thời gian trên 0 |
|---|---|---|---|---|
| BTC | −3.76 | −0.01 | +3.31 | 48.8% |
| ETH | −4.07 | −0.08 | +2.79 | 43.1% |
| SOL | −4.01 | −0.17 | +2.87 | 37.6% |
| DOGE | −4.07 | −0.23 | +2.97 | 31.1% |
Tổng quan, Lịch sử thanh lý và cột thanh lý 24h trên trang bản đồ chỉ dùng luồng thanh lý của Binance. Binance chỉ đẩy tối đa 1 lệnh mỗi giây cho mỗi symbol và bỏ các lệnh còn lại trong giây đó, nên đây là dữ liệu mẫu và sẽ đếm thiếu khi thị trường biến động mạnh.
Đơn vị là coin, nên không so sánh lượng thanh lý thô giữa các coin được; muốn so thì dùng giá trị đã chuẩn hóa. Khi luồng dữ liệu gián đoạn, giá trị trông như không có thanh lý nào, và khoảng trống không được đánh dấu.
Lớn hơn 0 nghĩa là short bị thanh lý nhiều hơn long; nhỏ hơn 0 là long nhiều hơn. Nhưng khi chuẩn hóa, tử số không trừ trung bình, nên coin mà long thường bị thanh lý nhiều hơn sẽ lệch âm một cách hệ thống, và 0 không phải mức bình thường của coin đó.
Trong giai đoạn đo ở trên (nến 1h, timeframe 24h), tỷ lệ thời gian trên 0 xem ở bảng trên. Cùng là 0, với BTC gần như là trung vị, còn với DOGE thì đã nghiêng về thanh lý short hơn phần lớn thời gian.
Hiện chưa có chiến lược chính thức nào dùng dữ liệu thanh lý, nên cả ba cách dưới đây đều là minh họa, chưa backtest. Các ngưỡng trong code mượn phân vị đo ở trên làm điểm xuất phát, không phải kết quả quét tham số, nên phải tự backtest trước khi dùng.
Cách trực tiếp nhất là đánh dấu các giai đoạn giá trị rơi vào hai đuôi phân phối. Vì đuôi dưới sâu hơn, đừng dùng cùng một giá trị tuyệt đối cho hai phía. Với BTC, p1 khoảng −3.8 và p99 khoảng +3.3.
LONG_FLUSH_TH = -3.8 # minh họa: gần p1 của BTC ở 1h × 24h SHORT_FLUSH_TH = 3.3 # minh họa: gần p99 của BTC ở 1h × 24h liq = fetch_liquidation(SYMBOL, INTERVAL, START, END, hdrs, timeframe='24h') df['LIQ'] = liq['alpha'] long_flush = df['LIQ'] <= LONG_FLUSH_TH # long bị thanh lý tập trung short_flush = df['LIQ'] >= SHORT_FLUSH_TH # short bị thanh lý tập trung
Giao dịch thế nào sau khi đánh dấu là việc bạn phải tự nghiên cứu: Blave chưa kiểm chứng giá sẽ đảo chiều hay tiếp diễn sau thanh lý tập trung. Phân vị cũng khác nhau theo coin; p1 của ETH, SOL và DOGE đều sâu hơn BTC, nên đổi coin thì phải tính lại.
Vì 0 không phải điểm cân bằng, quy tắc kiểu "trên 0 là short bị thanh lý nhiều" sẽ sai lệch với những coin như DOGE thường lệch âm trong thời gian dài. Hãy dùng phân vị của chính coin trong một cửa sổ quá khứ, ít bị ảnh hưởng bởi độ lệch dài hạn đó hơn:
# minh họa: phân vị 180 ngày qua; độ dài cửa sổ chưa được quét
lo = df['LIQ'].rolling('180D').quantile(0.01)
hi = df['LIQ'].rolling('180D').quantile(0.99)
extreme = (df['LIQ'] <= lo) | (df['LIQ'] >= hi)
Cửa sổ quá ngắn khiến ngưỡng trôi theo diễn biến giá gần đây. Cũng đừng để cửa sổ chạm vào giai đoạn khởi động, khoảng 30 ngày đầu kể từ khi dữ liệu của coin bắt đầu (trước 2023-01-31 với BTC và ETH), khi độ lệch chuẩn có quá ít mẫu và tạo ra cực trị giả.
Một cách dùng thận trọng hơn là thêm nó vào điều kiện vào lệnh của chiến lược sẵn có: không mở vị thế mới khi giá trị nằm ở một trong hai đuôi. Dùng lại hai ngưỡng của cách 1, và thay compute_entry bằng điều kiện vào lệnh của chiến lược bạn:
# minh họa: không vào lệnh khi giá trị ở một trong hai đuôi flush = (df['LIQ'] <= LONG_FLUSH_TH) | (df['LIQ'] >= SHORT_FLUSH_TH) entry = compute_entry(df) & ~flush
Tổ hợp này chưa backtest, và Blave chưa kiểm chứng việc tránh thanh lý tập trung có cải thiện hiệu suất hay không. Nó chỉ coi "vừa có một đợt thanh lý" là lý do để tạm dừng vào lệnh mới.
Chỉ báo có hai thiết lập. Timeframe là cửa sổ cộng dồn thanh lý ròng: 15min, 1h, 4h, 8h, 24h hoặc 3d, mặc định 24h. Chu kỳ nến (period) quyết định bao lâu lấy giá trị một lần: 5min, 15min, 1h, 4h, 8h hoặc 1d. Giá trị luôn được tính trên lưới 5 phút trước, rồi mỗi nến lấy giá trị cuối cùng. Đổi timeframe thì phân phối cũng đổi; cùng giai đoạn, đo với timeframe 1h trên nến 1h:
| Coin | p1 | p50 | p99 | Tỷ lệ thời gian trên 0 |
|---|---|---|---|---|
| BTC | −2.62 | 0.00 | +2.12 | 52.5% |
| ETH | −2.84 | 0.00 | +2.17 | 48.8% |
| SOL | −3.07 | 0.00 | +2.21 | 45.5% |
| DOGE | −3.50 | 0.00 | +2.09 | 40.3% |
So với 24h, 1h có hai đuôi hẹp hơn, trung vị của mọi coin đều là 0.00, và tỷ lệ trên 0 gần một nửa hơn. Vì vậy phải tính lại ngưỡng mỗi khi đổi timeframe, không mang bộ số này sang bộ khác. 15min, 4h, 8h và 3d chưa được đo trong bài.
| Trang | Xem gì | Quyền xem |
|---|---|---|
| Tổng quan thanh lý | Bản đồ ô vuông, có menu thả xuống để chuyển giữa hai bảng xếp hạng thanh lý short và thanh lý long, mỗi bảng 30 coin đầu. Kích thước ô là giá trị tuyệt đối (so với 30 ngày gần nhất của coin), không phải số tiền thanh lý; màu là biến động giá trong timeframe. | Đăng nhập |
| Lịch sử thanh lý | Biểu đồ cột chỉ báo thanh lý của một coin chồng lên giá, chọn được timeframe và chu kỳ nến, kèm các trường stat. | Người dùng không Pro xem trễ 7 ngày gần nhất |
Đây là ý tưởng kết hợp, không phải kết luận đã kiểm chứng:
| Kết hợp | Công dụng |
|---|---|
| Thanh lý + Săn cá voi | Dùng Săn cá voi để phát hiện biến động OI bất thường, rồi xem chỉ báo thanh lý cùng giai đoạn nằm ở đuôi nào, để phân biệt biến động đó có đi kèm thanh lý tập trung hay không. |
| Thanh lý + Cường độ Taker | Chỉ báo thanh lý chỉ thấy phía bị buộc đóng lệnh. Dùng Cường độ Taker để xem lực mua bán chủ động cùng giai đoạn, bổ sung nửa giao dịch tự nguyện. |
Endpoint của chỉ báo là GET /liquidation/get_alpha, tham số gồm symbol, period, timeframe (mặc định 24h) và khoảng ngày (start_date, end_date); trong Blave Agent tương ứng với fetch_liquidation. Chỉ trả về nến đã đóng, gồm timestamp, alpha và stat; khoảng thời gian dài hơn 1 năm sẽ bị cắt ngắn. Dữ liệu bắt đầu từ 2023-01-01 với các symbol sớm nhất (BTC, ETH), trước đó giá trị là 0; các coin khác có thể bắt đầu muộn hơn. Độ lệch chuẩn 30 ngày cần giai đoạn khởi động, nên giá trị có ý nghĩa bắt đầu khoảng 30 ngày sau khi dữ liệu của coin bắt đầu (khoảng 2023-01-31 với BTC và ETH).
Đối tượng stat của get_alpha mô tả giá trị mới nhất, nhưng tên gọi không hoàn toàn khớp với cách tính:
| Trường | Cách tính thực tế |
|---|---|
up_prob | Mô hình hồi quy logistic huấn luyện trên dữ liệu 365 ngày gần nhất, dùng chỉ báo thanh lý để dự đoán giá tăng hay giảm sau 24 giờ và trả về xác suất tăng. Dữ liệu huấn luyện bao gồm cả giai đoạn hiện tại, nên đây là ước tính trong mẫu, không phải tỷ lệ thắng ngoài mẫu. |
avg_up_return /avg_down_return | Lợi nhuận trung bình của mọi thời điểm "tăng / giảm sau 24 giờ" trong 365 ngày gần nhất, không phân theo mức của chỉ báo thanh lý. |
exp_value | up_prob × avg_up_return + (1 − up_prob) × avg_down_return, là số thập phân, không phải phần trăm. |
is_data_sufficient | Dữ liệu của coin có bắt đầu từ hơn 365 ngày trước hay không, không phải "mức giá trị này có đủ mẫu hay không". |
Endpoint và trường dữ liệu của Bản đồ thanh lý, Thay đổi bản đồ và trang Theo sàn, xem Cách đọc Bản đồ thanh lý.
stat là ước tính trong mẫu. Mọi ngưỡng đều phải kiểm chứng bằng backtest của chính bạn.