鑑於最近的狀態,如何有效地近似 FIFO 訂單簿中限價訂單的填充部分?
在給定歷史最佳賣價和最佳買價數量和價格的情況下,可以使用哪些方法在限價訂單簿的最佳賣價/買價水平中找到部分或全部執行訂單的逐步機率?
我正在嘗試粗略地模擬訂單的填充量/逐步時間動態,該訂單被放置在 FIFO 訂單簿的最佳買入/賣出水平中,它不需要是一個完美的模型,只是預期的近似值根據最近的狀態填寫金額。
即給定數量 Q 的限價訂單,在時間 T 詢問 A 在時間 T 給定先前的 (T~10 … T) 詢問價格,訂單的哪一部分可能在時間 T+1 被執行,詢問數量、開、高、低、關等。
我嘗試了以下多種方法,但我懷疑它們的有效性:
- 如果賣價上漲,限價單全滿
- 訂單成交量與最佳賣價時總金額的波動幅度成正比
我還注意到以下堆棧溢出問題中的答案
雖然我正在尋找可以在不到一分鐘的訂單上執行的東西(取決於價格波動),即我不能僅僅使用最後/收盤價的波動性,因為訂單可能在一個價格內被多次執行運動在那裡。
什麼是逼近這個函式的有效方法?提前感謝您對此事的幫助。
在我看來,與其開發分析模型,不如直接從數據中評估這個機率。將您的模擬訂單置於不同的價格水平,並檢查它們是否以及何時執行。然後使用這個機率模型來模擬你的交易策略。
但是,假設您要模擬一個交易策略,為什麼要像上面那樣分兩步來做呢?這種機率模型將是一個非常粗略的近似值,它消除了市場非常不穩定的行為。如果你這樣做,至少根據你對價格變化的預測將其計算為條件機率。否則,當價格變化太明顯(即許多其他市場參與者也看到相同的機會)並且實際執行機率為零時,您的模擬將使用過於樂觀(平均)的執行機率。
更好的方法是:您可以將執行過程嵌入到模擬本身中,而不是在模擬之前開發機率模型。需要考慮的要點是:
- 根據先進先出匹配算法,將您的訂單放在訂單隊列的末尾
- 如果您的市場數據是 MBO(逐單市場,也稱為逐單),您可以準確計算您的訂單在隊列中的位置,以及它是否以及何時執行
- 如果您的市場數據是 MBP(按價格計算),請使用悲觀的方法,僅當執行在其價格水平時才在隊列中推進您的訂單
雖然這種方法更好,但與基於歷史數據的任何其他方法一樣,它有兩個主要問題(即不精確的來源):
- 延遲。精確模擬延遲是不可能的。即使您的交易策略從平均 RTT(往返時間)為 100 微秒的交易所託管設施執行,也不一致。通過在模擬中配置高於平均水平來採取“安全的一面”並不能解決問題。
- 交易是一款多人互動實時遊戲。您的限價單的執行需要其他市場參與者的激進訂單。但是由於您的模擬訂單不存在於歷史數據中,您無法知道它們的存在將如何影響其他交易者發送如此激進訂單的決定。這裡的一個典型假設是:“我的訂單相對較小,因此它們的存在或不存在的影響可以忽略不計”。但這是一個非常糟糕的假設,因為這個“遊戲”是一個混沌系統的定義:“隨著系統的發展,起始條件的無窮小差異會導致截然不同的結果”,這個動畫很好地說明了這一點:
我將這兩個問題稱為“交易中量化分析中最典型的錯誤”,並在一篇市場力學文章中進行了更詳細的描述。在我看來(並基於一些實踐),它們使任何基於歷史數據的模擬結果都不可靠。更好的機會是基於博弈論的交易策略,基於一些合理的假設,即其他市場參與者將如何回應他人的可觀察行為,以及你自己的行為,無論延遲如何,你都是第一個知道的。