2

私は EBS、外国為替市場の指値注文帳 (LOB) に取り組んでいます: 100 ミリ秒のタイム スライスでの LOB の例を次に示します。

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)

データを要約すると、2 つのルールがあります (簡単にするために少し変更しました)。

  1. Bid または Ask 側の LOB に変化がない場合、その側は記録されません。データの最後の行を見てください。ミリ秒は 000 でしたが、現在は 500 です。これは、100、200、300、および 400 ミリ秒の間、LOB で変更がなかったことを意味します (ただし、これらの情報は計算にとって重要です)。

  2. 最後の価格 (最後の価格のみ) は、オーダー ブックの特定の側から削除されます。この場合、価格フィールドに何もない単一のレコードです。この場合も、LOB 全体のレコードはありません。

    例:2008/01/28,09:11:28.800,0,1,

minAsk-maxBid(1.6067-1.6066) または加重平均価格を計算したい (すべての距離のサイズを重みとして使用し、実際のデータにはサイズ列があります)。私は自分のデータ全体に対してやりたい。しかし、ご覧のとおり、データは要約されており、これは日常的ではありません。(要約だけでなく) データ全体を生成するコードを作成しました。これは小さなデータ セットでは問題ありませんが、大きなデータ セットでは巨大なファイルを作成しています。データを処理する方法について何かヒントがあれば教えてください。ギャップをいかに効率よく埋めていくか。

4

1 に答える 1

3

再現可能な優れた例を提供しなかったため、これは疑似/テストされていないコードになります。ドキュメントを注意深く読み、必要に応じて調整してください。

最初にデータをフィルタリングして 2 つの data.frames に分割することをお勧めします。

best.bid <- subset(data, side == 0 & distance == 1)
best.ask <- subset(data, side == 1 & distance == 1)

次に、これら 2 つの data.frames のそれぞれについてfindInterval、対応するベスト アスクまたはベスト ビッドを計算するために使用します。

best.bid$ask <- best.ask$price[findInterval(best.bid$time, best.ask$time)]
best.ask$bid <- best.bid$price[findInterval(best.ask$time, best.bid$time)]

(これを機能させるには、日付/時刻を線形の尺度に変換する必要がある場合があります。たとえば、市場が開いてからの時間 (秒単位) です。)

次に、それは簡単なはずです:

min.spread <- min(c(best.bid$ask - best.bid$price,
                    best.ask$bid - best.ask$price))

min一日の終わりの特殊性を理解しているかどうかはわかりませんが、市場の終わりにスプレッドを計算して、それを最終コールに追加するだけでよいでしょう。


加重平均価格については、同じ考え方を使用しますが、2 つと data.frames の代わりに、2つとdata.frames から始める必要がbest.bidあります。best.askweighted.avg.bidweighted.avg.ask

于 2013-08-30T03:19:16.903 に答える