檢測交易中侵略者的算法
大多數交易所在其原始數據中提供了交易的攻擊方屬性(例如,CME 上的 Tag=5797 AggressorSide )。但是許多數據提供者並不通過他們的數據饋送 API 提供這些資訊。我需要一種算法來高精度地估計交易的侵略者一方。
假設,我收到深度數據更新和交易更新。最簡單的算法是(在 Java 程式碼中):
public static int get_aggressor(int bid, int ask, int trade_price){ int aggr = Tags.UNKNOWN_SIDE; if (bid < ask){ // i.e. no cross if (trade_price >= ask){ aggr = Tags.BUY_SIDE; } else if (trade_price <= bid){ aggr = Tags.SELL_SIDE; } } return aggr; }
收到交易時
bid
的ask
最佳買入價/賣出價。當問題中的交易影響最佳買/賣時,該算法可能無法檢測到攻擊者。問題:假設我有最近價格更新的歷史。如何提高攻擊者檢測算法的精度?此外,請考慮兩種類型的數據饋送:
- 交易總是在結果價格更新之前到達
- 無法保證到達 #1 的更新順序。
請讓我知道是否有關於該主題的已發表研究。
Lee 和 Ready 在Inferring trade direction from interday data (1991)中描述了最常見的方法。您會發現重要的部分與對價差內報告的交易進行分類有關。我相信您會發現 Lee-Ready 算法將優於 @Svisstack 建議的幼稚中點參考方法,但是您將無法完全減輕錯誤分類。
Chakrabarty et al (2012)給出了對 Lee-Ready 算法的批評的更現代的闡述,它應該為您提供其他閱讀的起點。
正如 Maureen O’Hara 在http://www2.warwick.ac.uk/fac/中指出的那樣,由於智能訂單路由器使用被動子訂單執行激進的父訂單,這些激進交易的大多數分類不再那麼相關soc/wbs/subjects/finance/fof2014/programme/maureen_ohara.pdf
如果我想要這些資訊,我不確定我會怎麼做,但我懷疑必須對訂單簿進行建模才能真正了解流動性是否真正進入或離開市場。
編輯:此外,如果您嘗試使用 SIP 數據對股票執行此操作,請非常小心,因為報價饋送和交易饋送通常相對於彼此滯後,這將排除上述任何分類。