Mục lục bài viết

Bằng chứng và phạm vi

Có nghiên cứu thực nghiệm OFI trên 50 cổ phiếu Mỹ; bộ dự báo có độ trễ và cơ chế lệnh dưới đây là đề xuất mới, không phải kết quả của paper.

Dữ liệu và thị trườngSổ lệnh giới hạn tập trung hoặc một venue xác định; cần quotes có giá, size, thời gian và quy tắc feed.
Khung thời gian nghiên cứuNghiên cứu event-time hoặc cửa sổ 100ms–5s là ví dụ; khả năng thực thi phụ thuộc độ trễ thực.
OFI có thể dương do ask giảm và âm do bid giảm; chuỗi flow đảo dấu dù trước đó có mất cân bằng dương.Mở hình kích thước đầy đủ
OFI theo event giả lập; đường là thay đổi hàng chờ có dấu, cột phụ là volume giao dịch giả lập độc lập. OFI không bằng trade volume.

Quy trình thực hành

Sơ đồ quy trình Order book imbalance và OFI: phân biệt tồn lượng, dòng lệnh và dự báo
Các bước được mô tả đầy đủ bên dưới. Tại mỗi bước, dữ liệu thiếu hoặc điều kiện sai phải có lý do loại bỏ.
  1. Dựng bookSnapshot/delta theo schema venue.
  2. Tính OBI và eTrạng thái tách khỏi quote flow.
  3. Khóa cửa sổFeature chỉ dùng dữ liệu đã nhận.
  4. Mô phỏng orderLatency, bid–ask và queue.
  5. Đo lợi nhuận sau phíSo dự báo thật với hồi quy đồng thời.

Một ảnh chụp và một dòng thay đổi

OBI=(B−A)/(B+A), với B và A là size best bid và best ask cùng lúc. Có thể mở rộng K mức nhưng phải cố định K hoặc khoảng giá. OBI gần+1 nghĩa phía bid hiển thị dày tương đối; nó không đếm số người mua, không biết ý định và không bảo đảm bid còn đó khi order đến.

OFI xem những thay đổi của hàng chờ và giá bid–ask. Nghiên cứu Cont–Kukanov–Stoikov tìm quan hệ giữa OFI và biến động giá trong khoảng thời gian ngắn, với vai trò của độ sâu [1]. Phạm vi là giải thích price impact trên dữ liệu nghiên cứu; biến nó thành dự báo đòi một phép thử khác.

Trade delta chỉ tính giao dịch chủ động. OFI còn phản ánh quote thêm, hủy và đổi mức; có thể dương khi ask bị hủy dù không có giao dịch mua. Một book đang OBI dương nhưng OFI âm nhanh là hoàn toàn khả dĩ.

Tính feature trước khi dự báo

Với mỗi lần best quote đổi từ n−1 sang n, ký hiệu b,a là bid/ask price và qb,qa là size. Công thức dưới đây theo OFI cấp 1 của nghiên cứu [1]. Khi cả giá không đổi, nó rút về Δbid_size−Δask_size; khi mức giá đổi, đóng góp phải xét hàng chờ mới hoặc cũ, không chỉ trừ size.

Cộng e vào cửa sổ W đã kết thúc. Có thể chuẩn hóa bằng depth trung bình quá khứ hoặc z-score từ cửa sổ huấn luyện; không dùng độ lệch chuẩn của toàn bộ test. OBI tại thời điểm cuối cửa sổ, OFI trong cửa sổ và spread là ba feature riêng. Nếu B+A=0 hoặc thiếu một phía, đánh dấu không hợp lệ.

Ví dụ mô hình đề xuất: zOFI>1,5 và OBI>0,3, spread≤2tick, dữ liệu fresh mới tạo long candidate. Đánh giá return từ quote có thể thực thi sau latency đến H=2giây sau đó. Các ngưỡng và horizon tự đặt; đây chưa phải cấu hình có lợi nhuận.

e = I(b>=b_prev)*qb - I(b<=b_prev)*qb_prev
    - I(a<=a_prev)*qa + I(a>=a_prev)*qa_prev
OFI_window = sum(e for quote events in completed_window)
OBI = (qb-qa)/(qb+qa)
features_known_at = local_receive_time_of_last_required_event
order_arrival = features_known_at + compute_delay + network_delay
label = executable_exit_price_after(order_arrival,H) - executable_entry_price
# Không lấy price move bên trong cửa sổ feature làm lợi nhuận tương lai.

Reconstruct book là một phần của phương pháp

Bybit yêu cầu snapshot mới thay thế local book và delta size 0 xóa mức [2]. Implementation phải tuân thủ chính schema đang dùng: level 1 có thể là snapshot-only, trong khi feed nhiều mức có delta. Không dùng một parser chung rồi mặc định mọi gói là incremental.

Theo dõi update ID, cross sequence và đồng hồ theo tài liệu venue. Không tự giả định ID luôn tăng đúng 1 nếu tài liệu không cam kết; gap check sai có thể làm reset liên tục. Reset book không được tạo một OFI khổng lồ giả bằng cách so book mới với một book cũ không liên tục. Bắt đầu lại feature window sau resync.

Quote công khai là phần quan sát được, không phải toàn bộ resting interest. Sampling hoặc gộp cập nhật có thể bỏ chuỗi cancel/add giữa hai bản tin. Gọi OFI từ feed gộp là observed OFI ở tần suất ấy; không nhận nó là mọi order event của matching engine. Nếu đối chiếu delta, public trade có ngữ nghĩa taker và thời gian riêng [3].

Ví dụ số cho thấy OBI không phải OFI

Giả lập best bid 100,00 size 80 và ask 100,01 size 20: OBI=0,60. Ask size giảm từ 20 xuống 5, bid giữ nguyên và giá không đổi, e=+15. Nếu đây là hủy quote, trade delta bằng 0. Tiếp theo bid giảm 80 xuống 70, ask giữ 5: e=−10. OFI hai event=+5, còn OBI cuối=65/75≈0,867.

Feature dương chỉ báo trạng thái; để có một thắng giả lập, giả sử entry long thực tế 100,01 và exit bid 100,04 sau horizon. Gross gain 0,03/đơn vị; nếu tổng phí và slippage quy đổi 0,01 thì net 0,02. Không lấy mid ban đầu 100,005 làm giá mua có sẵn.

Thất bại: trước khi lệnh đến, bid 80 bị rút và quotes chuyển 99,96/99,98. Mua vẫn khớp 99,98, sau horizon bán bid 99,94: gross−0,04. OBI cũ rất dương không giữ được giá. Một biến thể passive limit 100,00 có thể bị fill đúng lúc market đang đi xuống; không được coi no-fill cho các lệnh bất lợi và fill cho các lệnh thuận lợi.

Độ trễ và cơ chế vào lệnh quyết định kinh tế

Chọn model aggressive hay passive trước backtest. Aggressive phải trả spread và đi qua depth với size lớn; passive cần hàng chờ, khả năng hủy và adverse selection. L2 không có order IDs thường không biết vị trí queue chính xác, nên báo khoảng kết quả dưới giả định fill bảo thủ.

Stop theo số tick, thoát tại horizon và thoát khi feature đổi dấu là ba policy riêng. Những feature nhảy nhanh có thể gây turnover quá lớn; thêm cooldown hoặc persistence tạo độ trễ mới và phải đo cả tác dụng lẫn chi phí.

Khi feed stale, book crossed ngoài quy tắc thị trường, hoặc resync, ngừng mở lệnh mới. Với vị thế đang có, execution/risk process phải có hành vi được định sẵn; không mặc định “không có dữ liệu” nghĩa giá không di chuyển.

Tránh nhầm hồi quy đồng thời thành alpha

So ba bài toán: mô tả Δmid trong cùng W, dự báo Δmid sau W, và P&L thực thi sau latency. R² tốt ở bài toán đầu không thay cho bài toán cuối. Có thể giá đã phản ứng trước khi bản tin đến hệ thống.

Chia dữ liệu theo ngày, purging những horizon chồng lấn giữa fold và lưu trading costs thực tế. Đối chứng dùng lagged returns, spread và depth mà không OFI; kiểm OFI có thêm thông tin hay chỉ là cách khác ghi lại price move vừa xảy ra.

Báo độ chính xác dự báo cùng turnover, fill ratio, net P&L, tail loss và sensitivity latency/size. Thử theo liquidity regime và venue; không suy kết quả cổ phiếu từ paper sang crypto perpetual bằng cùng ngưỡng.

Sai lầm thường gặp

Dùng mid để khớp mọi lệnh

Làm mất spread trong mô hình lợi nhuận.

Wall lớn là người mua thật

Quote có thể bị rút và không định danh được người đặt.

Kết quả đồng thời thành dự báo

Phải dịch target ra sau thời điểm nhận đủ feature.

Checklist trước khi dùng phương pháp

Tự đánh dấu khi đã kiểm tra trên dữ liệu của bạn. Trạng thái lưu trong trình duyệt này; đây không phải chứng nhận chiến lược có lãi.

0/7 mục

Câu hỏi thường gặp

OBI dương nhưng giá giảm có sai dữ liệu không?

Không nhất thiết. Book là trạng thái tạm thời; flow mới, hủy lệnh và thị trường khác có thể đổi nó.

OHLCV tính được OFI chuẩn không?

Không. Cần ít nhất chuỗi best bid/ask prices và sizes; trade volume không tái tạo quote events.

Nguồn nghiên cứu

Các nguồn dưới đây hỗ trợ phần định nghĩa hoặc bằng chứng được ghi bên cạnh. Mã giả, ví dụ minh họa và tham số đề xuất trong bài cần được kiểm định riêng.

  1. The price impact of order book eventsCont, Kukanov và Stoikov. Đọc abstract và định nghĩa OFI; 50 cổ phiếu Mỹ, không phải backtest chiến lược này. Đối chiếu: .
  2. OrderbookBybit. Đọc snapshot/delta, trường đồng hồ và giới hạn feed. Đối chiếu: .
  3. Public TradeBybit. Đối chiếu trade delta riêng với quote OFI. Đối chiếu: .

Đọc tiếp theo phương pháp

Lưu ý rủi ro

Nội dung phục vụ giáo dục và thiết kế nghiên cứu, không phải lời khuyên tài chính. Backtest là mô phỏng lịch sử, không bảo đảm hiệu quả tương lai và không đặt lệnh giao dịch thật. Các phương pháp trong thư viện không mặc nhiên là tính năng đã có trong ứng dụng. Xem phương pháp tính và trung tâm học.

Kiểm tra quy tắc trước khi dùng vốn thật

Đối chiếu khả năng hỗ trợ của ứng dụng, dữ liệu và từng giao dịch mô phỏng; các detector nâng cao có thể cần triển khai riêng.

Tải Backtest trên App Store