2013-06-11 28 views
0

我對python和pandas相當陌生,我想知道是否有人知道是否有任何python在pandas之上構建的庫,它需要一系列具有以下列的訂單: timestamp,id ,價格,尺寸,交換使用熊貓從時間序列的訂單創建訂單的快照?

每個記錄由大小調整每價格和匯率總給你一個當前視圖,即記錄可能是這樣的:

9:00:25.123, 1, 1.02, 100, N 
9:00:25.123, 2, 1.02, -50, N 
9:00:25.129, 3, 1.03, 50, X 
9:00:25.130, 4, 1.02, 150, X 
9:00:25.131, 5, 1.02, -5, X 

我希望能夠爲任何時間,獲得當前市場的看法。因此,舉例來說,如果我在9發出的呼籲,爲市場:00:25.130,我會得到:

1.02, N, 50 
1.02, X, 150 
1.03, X, 50 

一種9查詢:00:25.131將返回

1.02, N, 50 
1.02, X, 145 
1.03, X, 50 

有可能是一個百萬或更多的這些記錄,遍歷所有記錄中的每個請求都需要很長時間,特別是如果您在當天晚些時候試圖查看時間。我想可以在某段時間內創建「快照」,並將它們用作mpeg播放中的關鍵幀,並且我可以自己對其進行編碼,但我認爲,書籍構建/播放對於使用熊貓和財務數據的人們來說是非常普遍的需求他們可能已經在圖書館做這件事了。

任何想法,還是我推出自己的?

+0

哪個市場,您具體詢問哪個Web服務? –

+0

我不是在問一個特定的市場或網絡服務。假設我有這些數據,並希望能夠在任意時間快速創建一本書。 – bpeikes

+0

什麼*格式*你有數據? –

回答

5

我知道這是舊的,但它的啓發看到大熊貓

的好處,並限制我建了一個trivial jupyter notebook展示如何的訂單像你描述可以構建成你的要求使用。

核心是一個循環,更新訂單的狀態,並將其保存爲合併成大熊貓數據幀:

states = [] 
current_timestamp = None 
current_state = {} 

for timestamp, (id_, price, exch, size) in df.iterrows(): 
    if current_timestamp is None: 
     current_timestamp = timestamp 
    if current_timestamp != timestamp: 
     for key in list(current_state): 
      if current_state[key] == 0.: 
       del current_state[key] 
     states.append((current_timestamp, dict(**current_state))) 
     current_timestamp = timestamp 
    key = (exch, price) 
    current_state.setdefault(key, 0.) 
    current_state[key] += size 
states.append((timestamp, dict(**current_state))) 

order_book = pd.DataFrame.from_items(states).T 

但是:注意書的狀態如何,必須建立大熊貓之外,並且訂單簿狀態的pandas.DataFrame不太適合爲每個級別的優先級或深度(級別3數據)建立訂單簿模型,這可能是一個主要限制,具體取決於您想要如何準確地對訂單模型進行建模。

在現實世界中訂購書籍以及更新它們的訂單和報價(您將這兩個訂單和報價分組爲「請求」一詞)具有相當複雜的相互作用。這些交互受管理它們的交換規則支配,而且這些規則始終在變化。由於這些規則需要時間才能正確建模,很少有人能夠理解這些規則,舊套規則通常甚至沒有太大的學術興趣,唯一可以將這些規則編入圖書館的地方是對這些規則不甚感興趣的地方與他人分享。

要理解其背後的訂單,其訂單的簡單(「程式化」)模型的理論,並隨即引用,請參閱本文"A stochastic model for order book dynamics" by Rama Cont, Sasha Stoikov, Rishi Talreja,第2部分:

2.1限價訂單

考慮在訂單驅動型市場交易的金融資產。市場參與者可以發佈兩種買/賣訂單。 A 限額訂單是以給定價格交易一定數量證券的訂單。限價訂單過賬到電子交易系統,可以通過陳述在每個價格水平上發佈的數量來總結未完成限價訂單狀態:這被稱爲限制訂單簿。其中存在未平倉限價賣單的最低價格叫做詢問價格,最高買入價格叫做買價。 [...更多有用的描述]

2.2。訂單簿的動態變化

現在讓我們來描述一下如何通過新訂單的流入來更新限價訂單。 [...]假設所有的訂單都是單位大小的,

•價格水平的限價買單p < p_A(t)增加了水平p的數量:x→x_ {p- 1}

•在價格水平> P_B(t)的一個限價賣單增加了在水平p的數量:X→X_ {p + 1}

•一個市場上購買順序減少在詢問量價格:x→x_ {p_A(t)-1}

•市價賣單減少買價的數量:x→x_ {p_B(t)+1}

•在價格水平p < P_A(t)的一個奧斯坦丁限制購買訂單的取消減小在水平p的數量:X→X_ {P + 1}

•在奧斯坦丁限賣訂單的取消價格水平p > p_B(t)降低了水平p處的數量:x→x_ {p-1}

訂單賬戶的演變因此是由市場訂單,限價訂單和取消訂單價格水平[...]

一些圖書館,你可以看到人的a在建模或可視化一個簡單的限價訂單ttempts是:

  • PyRebuildLOB是一個工作的例子,但大熊貓起在其實施相對較小的一部分,除了作爲一個奇特的陣列。 MSFT order book visualisation
  • 不尋常的可視化從working4arbitrageworking4arbitrage order book vis

而且還有一個好的quant.stackoverflow由大衛凱恩,安德魯劉和慶Ngyuen

  • Oculus Information常用的可視化
  • 背景和可視化Analysing an Electronic Limit Order Book。 com問題和答案here