我在EBS工作,外匯市場限價訂單(LOB):這裏是LOB在100毫秒的時間片的例子:彙總海量數據,如何用R處理?
datetime|side(0=Bid,1=Ask)| distance(1:best price, 2: 2nd best, etc.)| price
2008/01/28,09:11:28.000,0,1,1.6066
2008/01/28,09:11:28.000,0,2,1.6065
2008/01/28,09:11:28.000,0,3,1.6064
2008/01/28,09:11:28.000,0,4,1.6063
2008/01/28,09:11:28.000,0,5,1.6062
2008/01/28,09:11:28.000,1,1,1.6067
2008/01/28,09:11:28.000,1,2,1.6068
2008/01/28,09:11:28.000,1,3,1.6069
2008/01/28,09:11:28.000,1,4,1.6070
2008/01/28,09:11:28.000,1,5,1.6071
2008/01/28,09:11:28.500,0,1,1.6065 (I skip the rest)
彙總數據,他們有兩個規則(我已經改變它有點簡單):
如果在出價或詢問方沒有更改LOB,他們不會記錄那一方。查看數據的最後一行,毫秒爲000,現在爲500,這意味着在任何一側的LOB在100,200,300和400毫秒內都沒有變化(但這些信息對於任何計算都很重要)。
最後一個價格(只有最後一個)從訂單書的給定面刪除。在這種情況下,價格字段中沒有任何內容的單個記錄。當時再也沒有整個LOB的記錄。
實施例:2008/01/28,09:11:28.800,0,1,
我想要計算minAsk-maxBid(1.6067-1.6066)或加權平均價格(使用所有的尺寸距離作爲權重,我的真實數據中有大小欄)。我想爲我的整個數據做。但是,正如你所看到的數據已經被總結,這不是常規。我寫了一段代碼來生成整個數據(不僅僅是摘要)。這對於小數據集很好,但是對於大數據集我正在創建一個巨大的文件。我想知道你是否有任何提示如何處理數據?如何在效率高的情況下填補空白。
我建議你過濾並將你的數據分成兩個data.frames:一個用於最佳出價,一個用於最佳詢問。然後,對於這兩個data.frames中的每一個,使用'findInterval'來計算相應的'ask'或'bid'的列。然後你就會知道如何達到最低限度。 – flodel
@ flodel-謝謝,它可能在這裏工作,但有更復雜的計算,我需要所有的距離,而不僅僅是最好的出價或要求。簡單的例子,如果我想計算加權價格,那麼我需要所有的距離,我不能過濾它。我編輯了我的問題。 – mitra
對於給定的時間戳和邊,你總是有五個價格?請定義加權平均價格。它是否在給定的時間戳中使用全部十個價格,並且可能將尺寸視爲重量? – flodel