Không chỉ giá Prediction Market - cấu trúc Order Flow cũng là tín hiệu
Prediction Market
Một prediction market thường được đọc theo cách rất trực quan: nếu hợp đồng “YES” đang giao dịch ở mức 0,70 thì thị trường dường như đang định giá khoảng 70% khả năng sự kiện xảy ra. Cách đọc này hữu ích, nhưng nếu dừng ở con số 0,70 thì chúng ta đang bỏ qua gần như toàn bộ quá trình hình thành mức giá đó. Hai hợp đồng cùng đứng ở 0,70 có thể mang hàm lượng thông tin rất khác nhau. Một hợp đồng có thể vừa đi từ 0,52 lên 0,70 sau hàng trăm giao dịch, spread thu hẹp, volume tăng mạnh và phía mua liên tục hấp thụ lượng bán lớn; hợp đồng còn lại có thể nhảy từ 0,65 lên 0,70 chỉ vì vài lệnh nhỏ trong một thị trường mỏng. Giá cuối cùng giống nhau, nhưng câu chuyện microstructure phía sau hoàn toàn khác. Với một Quant researcher, điều đáng nghiên cứu vì vậy không chỉ là giá hiện tại dự báo điều gì, mà còn là thị trường đã đi đến mức giá đó bằng cách nào, ai đang chủ động giao dịch, thanh khoản có hấp thụ được thông tin hay không và sau cú dịch chuyển ban đầu giá có tiếp tục đi hay đảo ngược

Working paper What Moves Prediction Markets? Evidence from Corporate Earnings của Sophia Zhengzi Li và Zeyao Luan nghiên cứu 599 earnings events trên Polymarket, kết hợp dữ liệu giao dịch prediction market với giá cổ phiếu tần suất cao, dự báo analyst và firm news. Theo abstract của bản nghiên cứu, một phần đáng kể của quá trình điều chỉnh giá diễn ra ngay sau khi market mở dù trading activity còn hạn chế; early prices có xu hướng extrapolate từ lịch sử doanh nghiệp từng beat earnings; giá prediction contracts sau đó thể hiện reversal phụ thuộc vào lookback window và forecast horizon. Các tác giả cũng tìm thấy stock returns dự báo các thay đổi tiếp theo của Polymarket trong khoảng từ một giờ đến một ngày, trong khi chiều ngược lại không xuất hiện rõ, phù hợp với một cơ chế thông tin đi từ thị trường cổ phiếu sang prediction market hơn là Polymarket dẫn dắt cổ phiếu. Analyst revisions tạo phản ứng theo cùng hướng mà không có reversal tương tự, còn news sentiment tạo phản ứng mang tính tạm thời hơn; firm news cũng làm trading activity tăng và mối liên hệ từ stock return sang prediction-market price mạnh hơn. Bài được đăng lần đầu ngày 21/08/2026 và sau đó tiếp tục được cập nhật, nên khi sử dụng làm nguồn nghiên cứu cần coi đây là working paper đang phát triển chứ không phải một kết quả đã “đóng dấu” vĩnh viễn.
PHẦN 1. Không chỉ giá cuối cùng: phải nhìn cả con đường thị trường đi đến mức giá đó
Giả sử một prediction contract về việc doanh nghiệp có vượt EPS consensus hay không đang giao dịch ở 0,70. Cách đọc đơn giản nhất là “market đang cho khoảng 70% xác suất beat”, nhưng đối với research thì đây mới chỉ là snapshot cuối cùng của một quá trình. Trước tiên cần hỏi giá 0,70 hình thành trong bao lâu. Nếu contract vừa mở ở 0,40, nhanh chóng lên 0,65 rồi 0,70 trong vài phút đầu tiên, đó là một loại price discovery khác với trường hợp nó mất năm ngày để bò từ 0,65 lên 0,70. Tiếp theo cần hỏi sự thay đổi đó đi kèm trading activity như thế nào. Nếu giá tăng mạnh nhưng tổng volume rất nhỏ, khả năng một vài order có ảnh hưởng lớn lên price sẽ cao hơn; nếu cùng cú tăng đó diễn ra trong lúc nhiều giao dịch được thực hiện, spread hẹp và liquidity dày hơn, confidence rằng mức giá mới phản ánh sự tương tác của nhiều người tham gia có thể lớn hơn. Tiếp nữa là câu hỏi về path: sau cú tăng ban đầu, giá đứng vững ở 0,70, tiếp tục lên 0,80 hay quay về 0,58? Giá cuối cùng chỉ nói market đang đứng ở đâu; path của giá và dòng lệnh mới cho biết market đã thay đổi niềm tin theo cách nào.
Đây là lý do order flow rất hấp dẫn với Quant. Nếu dữ liệu cho phép xác định bên nào chủ động thực hiện giao dịch, ta có thể xây dựng signed volume hoặc order-flow imbalance thay vì chỉ dùng total volume. Ví dụ trong một cửa sổ 30 phút, 10.000 units được giao dịch nhưng phần lớn đến từ marketable buy orders liên tục hit phía ask; điều này khác với 10.000 units trong đó buy và sell aggressors gần cân bằng. Một feature đơn giản có thể là (OFI=(BuyVolume-SellVolume)/(BuyVolume+SellVolume)), sau đó chuẩn hóa theo rolling history của từng contract. Nhưng con số này không nên được hiểu máy móc như “OFI dương = probability sẽ tăng”. Trong microstructure, một lượng buying lớn có thể cho thấy người mua có information, nhưng cũng có thể cho thấy họ đang đuổi theo một movement vừa xảy ra. Nếu liquidity providers liên tục hấp thụ buying mà price không tăng thêm, đó lại có thể là dấu hiệu rất khác: order flow mạnh nhưng price impact yếu. Vì vậy, feature tốt thường không chỉ đo hướng giao dịch mà còn đo price response trên mỗi đơn vị flow. Một market tăng 10 percentage points sau một lượng flow nhỏ khác về chất so với market chỉ tăng một point dù nhận lượng aggressive buying rất lớn.
Depth cũng cần được tách khỏi volume. Volume cho biết cái gì đã giao dịch; depth cho biết bao nhiêu liquidity đang chờ quanh mức giá hiện tại, nếu order-book data có sẵn. Một contract ở 0,70 nhưng bid-ask chỉ có lượng nhỏ quanh best quotes có thể rất dễ bị đẩy sang 0,75 bởi một order vừa phải. Một contract khác ở cùng 0,70 nhưng có lượng resting liquidity dày ở nhiều price levels có thể hấp thụ một order lớn mà giá gần như không đổi. Từ góc nhìn prediction, hai mức giá 0,70 này không nên được đối xử hoàn toàn giống nhau. Có thể xây depth imbalance, chẳng hạn lượng bid trong vài mức giá gần mid so với tổng bid và ask depth; có thể đo spread, slope của order book, volume needed to move price 1, 2 hoặc 5 percentage points; hoặc đo “resiliency”, tức là sau khi một order lớn làm spread mở rộng hoặc đẩy mid-price đi xa, order book mất bao lâu để tái tạo. Những biến này không tự động tạo alpha, nhưng chúng giúp phân biệt một mức probability được hỗ trợ bởi thị trường tương đối sâu với một mức price dễ bị chi phối bởi vài trades.
Một feature khác rất quan trọng là reversal. Nếu giá ban đầu dịch chuyển theo một hướng rồi quay ngược trở lại, chúng ta phải đặt câu hỏi market ban đầu đang phản ứng với thông tin thật hay chỉ extrapolate một pattern quá khứ. Ví dụ doanh nghiệp đã beat earnings bốn quý liên tiếp, contract mới mở ở 0,75 dù chưa có information mới đáng kể. Những trader nhìn history có thể tiếp tục mua bởi họ kỳ vọng “công ty này thường beat”. Nhưng sau khi analyst consensus được cập nhật hoặc stock market phát ra tín hiệu khác, contract tụt về 0,60. Nếu chỉ dùng giá ban đầu làm probability forecast, model coi 0,75 là mức confidence cao; nếu nghiên cứu dynamics, ta lại có thể nhìn thấy một pattern “early extrapolation → later correction”. Working paper của Li và Luan đặc biệt đáng chú ý ở điểm này khi báo cáo early pricing gắn mạnh với lịch sử earnings beats và sau đó tồn tại reversal effects. SSRN Với Quant, insight quan trọng không phải là lập tức xây chiến lược “short mọi market tăng sớm”, mà là hình thành một giả thuyết kiểm định được: mức giá ban đầu có chứa một thành phần extrapolative có thể dự báo reversal hay không, reversal mạnh hơn khi volume thấp hay cao, spread rộng hay hẹp, và nó còn tồn tại sau transaction costs hay không.
Điểm khó nhất là tất cả các feature này phải được đặt đúng trên timeline. Event investing rất dễ tạo ra look-ahead bias bởi nhiều timestamp tưởng giống nhau nhưng thực ra đại diện cho những thời điểm kinh tế khác nhau. “Quý 2/2026” không phải timestamp. Ngày kết thúc quý không phải ngày market biết earnings. Ngày báo cáo được ký không chắc là lúc công chúng nhìn thấy nó. Một file được upload lên website lúc 18:30 khác hoàn toàn với dữ liệu được database gắn ngày 31/07 mà không có giờ. Nếu company announcement xuất hiện sau giờ giao dịch thì earliest tradable response trên equity market có thể nằm ở phiên sau, trong khi prediction market có thể vẫn giao dịch trong thời gian khác. Vì vậy dataset nên có ít nhất event_timestamp, information_available_timestamp, feature_cutoff, prediction_timestamp và tradable_entry_timestamp. Nếu signal lúc 14:55 sử dụng analyst consensus được database cập nhật lúc 17:30 cùng ngày nhưng chỉ lưu date mà không lưu time, backtest sẽ trông rất thông minh vì model đang “dự báo” bằng dữ liệu từ tương lai. Trong event-driven Quant, việc đúng timestamp đôi khi quan trọng hơn việc dùng model phức tạp.
Từ đây có thể đặt ra một câu hỏi nghiên cứu thực tế hơn câu “prediction markets có hiệu quả không?”. Thay vì hỏi market price có đúng hay không, hãy hỏi khi nào một price move đáng tin hơn. Một movement từ 0,55 lên 0,65 có thể được xếp hạng confidence cao nếu đi kèm volume tăng, spread thu hẹp, depth được tái tạo, price impact phân tán qua nhiều trades và movement không nhanh chóng reversal. Cùng mức tăng đó có thể bị hạ confidence nếu xảy ra trên thanh khoản rất thấp, một vài large trades chi phối toàn bộ movement và price quay lại ngay sau đó. Khi xây model, price level có thể là feature đầu tiên, nhưng flow, liquidity, reversal, age of contract, time-to-resolution và information arrivals mới giúp biến một snapshot thành một mô tả về quality of price discovery. Đây cũng là nơi microstructure trở nên hữu ích: nó không nhất thiết cho biết outcome cuối cùng sẽ là gì, nhưng có thể cho biết chúng ta nên tin mức giá hiện tại đến mức nào.
PHẦN 2. Order flow, thanh khoản và thông tin mới: thị trường đang học hay đang đuổi theo quá khứ?
Kết quả của Li và Luan tạo ra một phân biệt rất quan trọng giữa “prediction market dự báo outcome” và “prediction-market price có thể dự báo bằng các biến khác”. Theo abstract, stock returns có khả năng dự báo các thay đổi tiếp theo của Polymarket trong khoảng từ một giờ đến một ngày và mối liên hệ này mạnh hơn khi earnings announcement đến gần; ngược lại, Polymarket price changes không dự báo stock returns theo cùng cách. SSRN Nếu kết quả này giữ vững qua các robustness tests, interpretation hợp lý không phải là prediction market vô dụng, mà là information discovery có thể đang diễn ra trước ở một market khác rồi mới truyền sang contract. Đây là khác biệt lớn. Một trader chỉ nhìn prediction-market momentum có thể thấy contract từ 0,60 lên 0,66 rồi mua vì “market đang biết điều gì đó”. Nhưng nếu stock đã tăng bất thường trước đó và Polymarket thường phản ứng chậm, phần move 0,60 → 0,66 có thể chỉ là delayed assimilation của information đã phản ánh trong equity price. Trong trường hợp này, signal thực sự không nằm ở momentum của prediction market mà nằm ở relative timing giữa hai markets.
Điều này gợi ý một cách thiết kế feature thực tế: thay vì chỉ lưu pm_return_1h, nên xây cả stock_abnormal_return_1h, pm_price_change_1h, lagged cross-market variables và một measure cho mức độ prediction market đang “catch up”. Ví dụ cổ phiếu tăng abnormal return +2,5% trong hai giờ nhưng prediction contract gần như chưa thay đổi; nếu lịch sử cho thấy Polymarket thường điều chỉnh theo stock movement trong những hoàn cảnh tương tự, model có thể đánh giá contract đang lag. Nhưng đây vẫn chưa phải chiến lược giao dịch hoàn chỉnh. Cần kiểm tra liệu movement của cổ phiếu thật sự chứa earnings-related information hay chỉ là market beta, industry move hoặc một macro shock. Nếu toàn ngành semiconductor cùng tăng 3% vì một policy announcement thì +2,5% của một stock không nên được đọc giống một firm-specific signal. Vì vậy stock feature nên được residualize ít nhất với market và sector returns, hoặc tốt hơn là xây intraday abnormal return so với benchmark phù hợp. Chúng ta đang cố tìm information transmission, không phải đơn giản đưa market direction vào model rồi gọi nó là earnings signal.
Tương tự, “earnings beat” không thể được định nghĩa bằng việc lợi nhuận năm nay cao hơn năm trước. Event outcome phải được định nghĩa so với prior expectation tại đúng thời điểm. Một doanh nghiệp báo EPS tăng 30% vẫn có thể là negative surprise nếu consensus kỳ vọng tăng 45%; một doanh nghiệp EPS giảm 10% vẫn có thể tạo positive surprise nếu thị trường đã dự báo giảm 25%. Với nghiên cứu prediction market, consensus snapshot vì vậy phải là point-in-time data, không phải consensus được database sửa lại sau khi announcement xảy ra. Nên lưu analyst count, mean/median forecast, dispersion, forecast age và recent revision direction. Nếu chỉ lưu một con số consensus cuối cùng, model mất đi rất nhiều context: consensus của hai analysts khác với consensus của ba mươi analysts; estimate được cập nhật sáng hôm qua khác estimate đã ba tháng không thay đổi; dispersion rất lớn cho biết event vốn đã có uncertainty cao hơn. Khi đó prediction-market price 0,70 có thể được so với một external prior hợp lý hơn thay vì được nhìn như probability tồn tại độc lập.
Working paper cũng báo cáo rằng analyst forecast revisions tác động lên Polymarket theo hướng thay đổi consensus và không có reversal tương tự, trong khi reaction với news sentiment mang tính tạm thời hơn. SSRN Đây là một distinction rất đáng khai thác trong research bởi không phải mọi information arrival đều có cùng “độ bền”. Analyst revision thường cố gắng cập nhật một expectation cụ thể về earnings và có thể chứa một signal liên quan trực tiếp đến contract payoff; news sentiment có thể phản ánh attention, tone hoặc thông tin gián tiếp, nhưng nhiều headline không thực sự thay đổi expected earnings. Nếu prediction market tăng 5 points sau một analyst upgrade rồi giữ mức đó, ta có một loại update; nếu nó tăng 5 points sau một headline tích cực rồi trả lại 4 points vài giờ sau, đó là một dynamic khác. Vì vậy thay vì dùng một biến news=1, model nên phân loại information source và đo post-event persistence. Chúng ta có thể hỏi: một hour sau news, bao nhiêu phần của price impact còn tồn tại? Sáu giờ sau? Một ngày sau? Cách đo này giúp phân biệt permanent information component với temporary attention component.
Đây cũng là chỗ order flow có thể giúp hiểu mechanism, nhưng cần tách rất rõ kết quả được tác giả báo cáo khỏi phần mở rộng chúng ta đề xuất nghiên cứu. Paper cho thấy firm-news arrival làm trading activity tăng và làm quan hệ từ stock returns sang subsequent Polymarket changes mạnh hơn. Từ kết quả đó, ta có thể đặt thêm hypothesis rằng order-flow composition, spread hoặc depth xung quanh news arrival có thể giúp giải thích vì sao adjustment nhanh hay chậm, nhưng nếu paper không trực tiếp báo cáo một feature order-book cụ thể thì không nên viết như thể tác giả đã chứng minh feature đó tạo alpha. Một blog Quant tốt phải giữ đường biên này rất rõ. “Tác giả tìm thấy trading activity tăng quanh news” là empirical result của nguồn; “ta có thể kiểm tra whether depth imbalance giúp dự báo subsequent repricing” là research proposal. Hai câu có giá trị khác nhau.
Một ví dụ thực tế sẽ làm vấn đề rõ hơn. Giả sử một contract “Company A beats EPS consensus” mở ở 0,74 bởi A đã beat bốn quý gần nhất. Trong buổi sáng, cổ phiếu A giảm 2% abnormal so với sector nhưng prediction contract vẫn quanh 0,73 vì trading activity rất thấp. Sau đó một analyst cắt EPS estimate, contract xuống 0,63 trong nhiều trades và vẫn giữ quanh 0,62–0,64 vài giờ sau. Chiều cùng ngày xuất hiện một headline tích cực không liên quan trực tiếp tới earnings, contract bật lên 0,67 nhưng chỉ 30 phút sau quay lại 0,63. Nếu chỉ quan sát daily close, ta thấy giá từ 0,74 xuống 0,63 và bỏ lỡ toàn bộ mechanism. Nếu có intraday timeline, ta có thể phân tách ba quá trình: prior extrapolation ở lúc mở market, delayed adjustment theo stock signal, persistent repricing sau analyst revision và temporary noise sau news sentiment. Đây mới là dạng dữ liệu cho phép nghiên cứu “thị trường đang học từ thông tin mới hay chỉ đuổi theo narrative gần nhất”.
Quan trọng hơn, một model dự báo contract return có thể hoàn toàn khác một model dự báo event outcome. Nếu market có reversal, một strategy mua contract sau khi price vừa tăng có thể thua dù price level tổng thể vẫn được calibration khá tốt với event probabilities. Ngược lại, một model dự báo outcome có thể đúng 75% nhưng không tạo alpha nếu contract đã định giá outcome còn tốt hơn. Trong trading, edge không đến từ việc biết “YES khả năng cao”, mà từ việc probability estimate của bạn khác market price đủ lớn sau khi tính fee, spread, slippage và model uncertainty. Nếu model của bạn cho 78%, contract ở 76% và total execution friction tương đương vài percentage points, gần như không có trade. Nếu model cho 78% khi market ở 58%, discrepancy đáng nghiên cứu hơn, nhưng vẫn cần hỏi liệu model đang nhìn thông tin đã stale hay có look-ahead bias. Đây là lý do calibration, discrimination và profitability phải được báo cáo riêng. Brier score tốt không tự động tạo P&L; AUC cao không có nghĩa tradeable; và P&L cao trong một sample nhỏ chưa chứng minh model dự báo probability tốt.
Nếu phải xây baseline cho chủ đề này, tôi sẽ không bắt đầu bằng neural network. Baseline 1 chỉ sử dụng current prediction-market price. Baseline 2 thêm recent price changes và reversal features. Baseline 3 thêm stock abnormal returns. Baseline 4 thêm analyst revisions và consensus dispersion. Baseline 5 mới thêm trading intensity, signed flow, spread/depth nếu dữ liệu có. Sau mỗi bước phải hỏi out-of-sample Brier score có cải thiện không, calibration curve có tốt hơn không, log loss giảm bao nhiêu, và nếu biến thành trading rule thì net return sau cost có cải thiện thực sự hay không. Nếu baseline giá 0,70 đã rất khó đánh bại, đó là một kết quả khoa học có giá trị; không cần ép order flow thành alpha chỉ vì dataset chứa nhiều microstructure variables.
PHẦN 3. Đưa tư duy microstructure về Việt Nam: trước khi làm signal phải làm sạch event và khả năng giao dịch
Tại Việt Nam, không nên lấy prediction-market framework rồi đổi tên các biến thành stock variables và giả định chúng có cùng interpretation. Prediction contract về “EPS có beat consensus hay không” có payoff nhị phân gắn với một event cụ thể; cổ phiếu lại định giá toàn bộ chuỗi cash flows, discount rates, risk premium và nhiều thông tin khác cùng lúc. Một buy imbalance ở prediction market có thể trực tiếp phản ánh thay đổi belief về event probability, trong khi buy imbalance trên cổ phiếu có thể đến từ ETF flow, sector rotation, liquidity demand, margin activity hoặc nhiều động lực không liên quan trực tiếp tới earnings. Điều có thể mang về Việt Nam không phải là interpretation “order flow = xác suất earnings beat”, mà là phương pháp nghiên cứu information arrival → trading response → price adjustment → persistence/reversal. Đây là tư duy microstructure có thể áp dụng rất tốt cho cổ phiếu quanh earnings announcements, corporate guidance, dividend announcements, capital raising, major contracts hoặc các sự kiện doanh nghiệp khác.
Bước đầu tiên là xây một event master table thật sạch. Thay vì có một file giá và một file báo cáo tài chính rồi merge theo quý, mỗi observation phải đại diện cho một event với timestamp rõ ràng. Tối thiểu nên có ticker, fiscal_period, announcement_timestamp, source_timestamp, information_available_timestamp, market_session, consensus_snapshot_timestamp, expected_metric, reported_metric, surprise, tradable_entry, return_window_1d, return_window_3d, return_window_5d và các liquidity fields. Nếu doanh nghiệp đăng báo cáo lúc 18:00 sau khi thị trường đóng cửa, event window không thể bắt đầu từ closing price 14:45 cùng ngày như thể investor đã biết thông tin. Nếu dữ liệu chỉ có ngày mà không có giờ, researcher phải đặt quy tắc bảo thủ, chẳng hạn chỉ cho phép trade từ phiên kế tiếp. Việc bỏ qua vài event không xác định được timestamp thường tốt hơn việc giữ chúng rồi để look-ahead âm thầm đi vào backtest.
Surprise definition cũng cần được chuẩn hóa. Nếu có analyst consensus đáng tin cậy, earnings surprise có thể tính so với point-in-time consensus; nếu coverage analyst quá thưa, có thể phải xây expected earnings bằng model hoặc historical expectation, nhưng phải ghi rõ đây là model-based prior chứ không phải market consensus. Với doanh nghiệp có nhiều corporate actions hoặc seasonality mạnh, so quý này với quý trước có thể gây nhiễu; so cùng kỳ cũng chưa chắc đại diện expectation. Quan trọng nhất là model phải chỉ sử dụng những inputs có thể biết trước event. Sau đó mới tạo stock reaction features như overnight gap, intraday abnormal return, volume surprise, spread change, realized volatility và order-book imbalance. Một event dataset sạch thường tốn nhiều công sức hơn việc fit model, nhưng nó là thứ quyết định phần lớn độ tin cậy của kết quả.
Order-book features cũng phải gắn với cơ chế thị trường thực tế. Một biến có thể là depth imbalance ở top levels, nhưng cần xác định snapshot frequency và cách xử lý order cancellations. Một biến khác có thể là trade intensity: số trades hoặc notional value mỗi phút so với cùng khung giờ lịch sử. Có thể đo spread theo basis points, price impact sau các large prints hoặc ratio giữa signed volume và subsequent return. Có thể đo liquidity shock bằng việc so depth hiện tại với rolling median của chính mã trong cùng time-of-day bucket. Điều này rất quan trọng vì liquidity có intraday seasonality; volume lúc mở cửa luôn khác giữa phiên, nên so 9:15 với average cả ngày có thể tạo ra signal giả. Nếu có dữ liệu đủ chi tiết, một feature thú vị là resiliency after information shock: sau announcement hoặc sau một large order, spread và depth mất bao lâu để quay về mức bình thường. Một market hấp thụ thông tin tốt thường có pattern khác với market nơi vài orders nhỏ có thể làm giá giật mạnh nhưng liquidity không phục hồi.
Một thiết kế thực tiễn có thể chia event window thành nhiều giai đoạn: [-5d,-1d] để đo pre-event drift, vài chục phút hoặc vài giờ trước announcement để tìm unusual positioning, [0,+30m] để đo immediate reaction, [+30m,+1d] để đo continuation hoặc reversal, và [+1d,+5d] để đo post-event drift. Nếu announcement xảy ra ngoài giờ thì window phải chuyển sang phiên giao dịch đầu tiên sau thông tin. Với mỗi window, không chỉ ghi return mà nên ghi abnormal return, volume relative to baseline, spread, imbalance, realized volatility và industry-relative move. Một positive 4% move nghe lớn nhưng nếu sector cùng tăng 3,5%, firm-specific component rất nhỏ. Một volume gấp đôi bình thường cũng chưa chắc bất thường nếu event xảy ra đúng phiên rebalance hoặc thời điểm market-wide activity tăng mạnh. Microstructure features gần như luôn cần được de-seasonalize và benchmark hóa.
Khi nghiên cứu reversal, phải tránh một lỗi rất phổ biến: định nghĩa reversal sau khi đã nhìn thấy path. Ví dụ không thể nói “đây là overreaction” chỉ vì giá giảm hôm sau. Nên định nghĩa ex ante: initial reaction = abnormal return trong cửa sổ đầu; subsequent reversal = return ngược dấu trong một cửa sổ cố định sau đó; continuation = cùng dấu. Sau đó kiểm tra liệu order-flow intensity, liquidity condition hoặc surprise magnitude có giải thích xác suất continuation/reversal hay không. Có thể fit logistic model đơn giản trước: P(reversal) = f(initial_move, OFI, spread, depth, volume_surprise, event_surprise, market_state). Nếu coefficient của OFI thay đổi dấu khi thêm liquidity controls, đó là dấu hiệu flow ban đầu có thể chỉ proxy cho market condition chứ không phải information. Những kết quả kiểu này thường có giá trị hơn việc chỉ báo một accuracy cao.
Execution realism đặc biệt quan trọng. Nếu feature dùng toàn bộ order book đến 10:30, strategy không thể giả định mua ở VWAP 10:00. Nếu signal được tính sau khi event window kết thúc thì entry phải nằm sau đó. Nếu event tạo gap mạnh, backtest phải chấp nhận giá entry thực tế cao hơn pre-event close thay vì giả định được mua trước gap. Những mã có liquidity quá thấp cần được filter hoặc position-size theo ADV; những phiên có khả năng thực thi hạn chế phải được xử lý bảo thủ. Slippage nên tăng cùng volatility và participation rate thay vì cố định một mức cho mọi cổ phiếu. Khi mục tiêu là tìm một microstructure edge nhỏ, chỉ vài basis points sai lệch trong execution assumption cũng đủ biến alpha thành noise.
Để kiểm tra order flow có thật sự bổ sung thông tin hay chỉ làm model phức tạp hơn, benchmark nên rất rõ. Model A chỉ dùng giá và market/sector controls. Model B thêm accounting surprise. Model C thêm volume và volatility. Model D mới thêm order-flow/depth features. Nếu Model D chỉ cải thiện in-sample AUC nhưng out-of-sample performance gần như không đổi, không có bằng chứng mạnh rằng dữ liệu sổ lệnh tạo giá trị. Nếu cải thiện xuất hiện chủ yếu ở small caps nhưng biến mất sau realistic slippage, edge đó không tradeable. Nếu cải thiện rõ ở event windows ngắn nhưng không tồn tại qua 5 ngày, feature có thể hữu ích cho execution hoặc intraday positioning hơn là stock selection trung hạn. Đây là loại kết luận thực tiễn mà research nên hướng tới: không phải “order flow tốt”, mà là “order flow hữu ích ở đâu, horizon nào, dưới liquidity condition nào và với capacity bao nhiêu”.
Một lớp kiểm tra khác là regime robustness. Trong thị trường thanh khoản cao, depth imbalance có thể mang meaning khác giai đoạn stress khi order book mỏng và người tham gia rút liquidity. Trong bull market, positive flow quanh good news có thể continuation lâu hơn; trong panic regime, cùng một event-specific signal có thể bị market beta nuốt mất. Vì vậy nên chia sample theo market volatility, breadth, liquidity, sector concentration và event density. Một feature chỉ hoạt động trong một regime không nhất thiết vô dụng, miễn chúng ta biết điều kiện đó và không biến nó thành “định luật”. Thậm chí một trong những sản phẩm giá trị nhất của research có thể là confidence filter: khi liquidity quá xấu hoặc market-wide shock quá lớn, hệ thống giảm trọng số event signal vì microstructure không còn phản ánh firm-specific information sạch như bình thường.
Nếu đưa những kết quả này vào một trang phân tích cổ phiếu, phần giao diện cũng nên phản ánh sự không chắc chắn của model. Một score “Order Flow 82/100” tự thân gần như vô nghĩa nếu người dùng không biết nó đến từ đâu. Tốt hơn là cho phép click vào score và thấy các thành phần: buy/sell imbalance đang ở percentile nào so với lịch sử, spread đang rộng hơn bình thường bao nhiêu, volume surprise bao nhiêu, price reaction có continuation hay reversal, event timestamp là lúc nào, và input nào đóng góp lớn nhất vào model. Nếu một feature vừa thay đổi mạnh vì data source cập nhật, người dùng cũng nên nhìn thấy. Khi hệ thống phân biệt rõ dữ kiện quan sát được, ước lượng của model và hành động giao dịch đề xuất, nó trở thành decision-support tool thay vì hộp đen.
Điểm cuối cùng là không nên đặt mục tiêu quá sớm thành “dùng order flow để dự đoán cổ phiếu tăng hay giảm”. Câu hỏi nghiên cứu tốt hơn ban đầu là: order flow có giúp phân biệt một price move giàu thông tin với một price move dễ reversal hay không? Nếu câu trả lời là có, ứng dụng không nhất thiết phải là một standalone alpha signal. Nó có thể trở thành confirmation layer cho earnings strategy, filter để tránh trade trong thanh khoản xấu, position-sizing input, execution signal hoặc confidence score cho event model. Trong thực tế, nhiều feature microstructure có giá trị nhất không phải vì chúng tự mình dự báo return cực mạnh, mà vì chúng giúp biết khi nào nên tin hoặc không nên tin một signal khác.
Đó cũng là cách nên đọc prediction market. Mức giá 0,70 vẫn quan trọng, nhưng 0,70 không phải toàn bộ thông tin. Điều đáng nghiên cứu hơn là nó đi từ đâu tới 0,70, mất bao lâu, bao nhiêu người giao dịch, liquidity hấp thụ lệnh như thế nào, stock market và analyst information đã thay đổi trước đó ra sao, và sau cú điều chỉnh đầu tiên market tiếp tục xác nhận hay đảo ngược. Trong những thị trường định giá kỳ vọng, quá trình hình thành giá đôi khi chứa nhiều thông tin không kém chính mức giá cuối cùng. Và với Quant, chính khoảng cách giữa hai thứ đó — price và price formation — thường là nơi những giả thuyết nghiên cứu thú vị nhất bắt đầu.
