データ

Data Collector または Data Preparation を参照して、フィードデータの収集と変換について確認してください。

フォーマット

hftbacktestnumpy 構造化配列を処理できます。データは以下の順序で 8 つのフィールドを持ちます。 詳細は Event を参照してください。

  • ev (u64): Constants で可能なフラグの組み合わせを確認できます。

  • exch_ts (i64): 取引所タイムスタンプ。これはイベントが取引所で発生する時間です。

  • local_ts (i64): ローカルタイムスタンプ。これはイベントがローカルで受信される時間です。

  • px (f64): 価格

  • qty (f64): 数量

  • order_id (u64): 注文 ID は L3 Market-By-Order フィードのみに使用されます。

  • ival (i64): 追加の i64 値用に予約されています

  • faval (f64): 追加の f64 値用に予約されています

生データ

1676419207212527000 {'stream': 'btcusdt@depth@0ms', 'data': {'e': 'depthUpdate', 'E': 1676419206974, 'T': 1676419205108, 's': 'BTCUSDT', 'U': 2505118837831, 'u': 2505118838224, 'pu': 2505118837821, 'b': [['2218.80', '0.603'], ['5000.00', '2.641'], ['22160.60', '0.008'], ['22172.30', '0.551'], ['22173.40', '0.073'], ['22174.50', '0.006'], ['22176.80', '0.157'], ['22177.90', '0.425'], ['22181.20', '0.260'], ['22182.30', '3.918'], ['22182.90', '0.000'], ['22183.40', '0.014'], ['22203.00', '0.000']], 'a': [['22171.70', '0.000'], ['22187.30', '0.000'], ['22194.30', '0.270'], ['22194.70', '0.423'], ['22195.20', '2.075'], ['22209.60', '4.506']]}}
1676419207212584000 {'stream': 'btcusdt@trade', 'data': {'e': 'trade', 'E': 1676419206976, 'T': 1676419205116, 's': 'BTCUSDT', 't': 3288803053, 'p': '22177.90', 'q': '0.001', 'X': 'MARKET', 'm': True}}

正規化データ

ev

exch_ts

local_ts

px

qty

order_id

ival

fval

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

2218.8

0.603

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

5000.00

2.641

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22160.60

0.008

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22172.30

0.551

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22173.40

0.073

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22174.50

0.006

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22176.80

0.157

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22177.90

0.425

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22181.20

0.260

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22182.30

3.918

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22182.90

0.000

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22183.40

0.014

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22203.00

0.000

0

0

0.0

SELL_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22171.70

0.000

0

0

0.0

SELL_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22187.30

0.000

0

0

0.0

SELL_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22194.30

0.270

0

0

0.0

SELL_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22194.70

0.423

0

0

0.0

SELL_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22195.20

2.075

0

0

0.0

SELL_EVENT | DEPTH_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22209.60

4.506

0

0

0.0

SELL_EVENT | TRADE_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205116000000

1676419207212584000

22177.90

0.001

0

0

0.0

検証

  1. すべてのタイムスタンプは正しい順序、時系列順でなければなりません。

取引所でのイベントが別のイベントの前に発生し、より早い取引所タイムスタンプを持つ場合がありますが、ローカルでの受信は他のイベントの後になります。 これにより、取引所とローカルのタイムスタンプの時系列順序が逆転します。この状況を処理するために、hftbacktest は EXCH_EVENT および LOCAL_EVENT フラグを使用します。 EXCH_EVENT フラグが付いたイベントは、取引所タイムスタンプに従って時系列順に並んでいる必要があります。 一方、LOCAL_EVENT フラグが付いたイベントは、ローカルタイムスタンプに従って時系列順に並んでいる必要があります。

  1. 取引所タイムスタンプはローカルタイムスタンプよりも早くなければなりません。フィードレイテンシーは正の値でなければなりません。

2 つのサイト間の時間同期にエラーが発生する可能性があるため、ローカルタイムスタンプが取引所タイムスタンプよりも早くなり、負のレイテンシーが発生することがあります。 これに対処する最良の方法は、PTP (Precision Time Protocol) を使用して時間同期を改善し、負のレイテンシーの可能性を最小限に抑えることです。 ただし、基本的なレイテンシーを追加するか、負のレイテンシーのサイズをオフセットすることで、データが正のレイテンシーのみを持ち、イベントのローカルタイムスタンプが常に取引所タイムスタンプよりも遅くなるようにすることができます。

次の例を参照してください。深さフィードの取引所タイムスタンプは、取引フィードの前に進められていますが、深さフィードは取引フィードの後に受信されます。

1676419207212385000 {'stream': 'btcusdt@trade', 'data': {'e': 'trade', 'E': 1676419206968, 'T': 1676419205111, 's': 'BTCUSDT', 't': 3288803051, 'p': '22177.90', 'q': '0.300', 'X': 'MARKET', 'm': True}}
1676419207212480000 {'stream': 'btcusdt@trade', 'data': {'e': 'trade', 'E': 1676419206968, 'T': 1676419205111, 's': 'BTCUSDT', 't': 3288803052, 'p': '22177.90', 'q': '0.119', 'X': 'MARKET', 'm': True}}
1676419207212527000 {'stream': 'btcusdt@depth@0ms', 'data': {'e': 'depthUpdate', 'E': 1676419206974, 'T': 1676419205108, 's': 'BTCUSDT', 'U': 2505118837831, 'u': 2505118838224, 'pu': 2505118837821, 'b': [['2218.80', '0.603'], ['5000.00', '2.641'], ['22160.60', '0.008'], ['22172.30', '0.551'], ['22173.40', '0.073'], ['22174.50', '0.006'], ['22176.80', '0.157'], ['22177.90', '0.425'], ['22181.20', '0.260'], ['22182.30', '3.918'], ['22182.90', '0.000'], ['22183.40', '0.014'], ['22203.00', '0.000']], 'a': [['22171.70', '0.000'], ['22187.30', '0.000'], ['22194.30', '0.270'], ['22194.70', '0.423'], ['22195.20', '2.075'], ['22209.60', '4.506']]}}
1676419207212584000 {'stream': 'btcusdt@trade', 'data': {'e': 'trade', 'E': 1676419206976, 'T': 1676419205116, 's': 'BTCUSDT', 't': 3288803053, 'p': '22177.90', 'q': '0.001', 'X': 'MARKET', 'm': True}}
1676419207212621000 {'stream': 'btcusdt@trade', 'data': {'e': 'trade', 'E': 1676419206976, 'T': 1676419205116, 's': 'BTCUSDT', 't': 3288803054, 'p': '22177.90', 'q': '0.005', 'X': 'MARKET', 'm': True}}

これを次の形式に変換する必要があります。HftBacktest は、この問題を自動的に修正するための correct_event_order メソッドを提供します。 validate_event_order は、この問題が存在するかどうかを確認するのに役立ちます。

EXCH_EVENT               1676419207212527000 {'stream': 'btcusdt@depth@0ms', 'data': {'e': 'depthUpdate', 'E': 1676419206974, 'T': 1676419205108, 's': 'BTCUSDT', 'U': 2505118837831, 'u': 2505118838224, 'pu': 2505118837821, 'b': [['2218.80', '0.603'], ['5000.00', '2.641'], ['22160.60', '0.008'], ['22172.30', '0.551'], ['22173.40', '0.073'], ['22174.50', '0.006'], ['22176.80', '0.157'], ['22177.90', '0.425'], ['22181.20', '0.260'], ['22182.30', '3.918'], ['22182.90', '0.000'], ['22183.40', '0.014'], ['22203.00', '0.000']], 'a': [['22171.70', '0.000'], ['22187.30', '0.000'], ['22194.30', '0.270'], ['22194.70', '0.423'], ['22195.20', '2.075'], ['22209.60', '4.506']]}}
EXCH_EVENT | LOCAL_EVENT 1676419207212385000 {'stream': 'btcusdt@trade', 'data': {'e': 'trade', 'E': 1676419206968, 'T': 1676419205111, 's': 'BTCUSDT', 't': 3288803051, 'p': '22177.90', 'q': '0.300', 'X': 'MARKET', 'm': True}}
EXCH_EVENT | LOCAL_EVENT 1676419207212480000 {'stream': 'btcusdt@trade', 'data': {'e': 'trade', 'E': 1676419206968, 'T': 1676419205111, 's': 'BTCUSDT', 't': 3288803052, 'p': '22177.90', 'q': '0.119', 'X': 'MARKET', 'm': True}}
             LOCAL_EVENT 1676419207212527000 {'stream': 'btcusdt@depth@0ms', 'data': {'e': 'depthUpdate', 'E': 1676419206974, 'T': 1676419205108, 's': 'BTCUSDT', 'U': 2505118837831, 'u': 2505118838224, 'pu': 2505118837821, 'b': [['2218.80', '0.603'], ['5000.00', '2.641'], ['22160.60', '0.008'], ['22172.30', '0.551'], ['22173.40', '0.073'], ['22174.50', '0.006'], ['22176.80', '0.157'], ['22177.90', '0.425'], ['22181.20', '0.260'], ['22182.30', '3.918'], ['22182.90', '0.000'], ['22183.40', '0.014'], ['22203.00', '0.000']], 'a': [['22171.70', '0.000'], ['22187.30', '0.000'], ['22194.30', '0.270'], ['22194.70', '0.423'], ['22195.20', '2.075'], ['22209.60', '4.506']]}}
EXCH_EVENT | LOCAL_EVENT 1676419207212584000 {'stream': 'btcusdt@trade', 'data': {'e': 'trade', 'E': 1676419206976, 'T': 1676419205116, 's': 'BTCUSDT', 't': 3288803053, 'p': '22177.90', 'q': '0.001', 'X': 'MARKET', 'm': True}}
EXCH_EVENT | LOCAL_EVENT 1676419207212621000 {'stream': 'btcusdt@trade', 'data': {'e': 'trade', 'E': 1676419206976, 'T': 1676419205116, 's': 'BTCUSDT', 't': 3288803054, 'p': '22177.90', 'q': '0.005', 'X': 'MARKET', 'm': True}}

正規化データ

ev

exch_ts

local_ts

px

qty

order_id

ival

fval

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT

1676419205108000000

1676419207212527000

2218.8

0.603

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT

1676419205108000000

1676419207212527000

5000.00

2.641

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT

1676419205108000000

1676419207212527000

22160.60

0.008

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT

1676419205108000000

1676419207212527000

22172.30

0.551

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT

1676419205108000000

1676419207212527000

22173.40

0.073

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT

1676419205108000000

1676419207212527000

22174.50

0.006

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT

1676419205108000000

1676419207212527000

22176.80

0.157

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT

1676419205108000000

1676419207212527000

22177.90

0.425

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT

1676419205108000000

1676419207212527000

22181.20

0.260

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT

1676419205108000000

1676419207212527000

22182.30

3.918

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT

1676419205108000000

1676419207212527000

22182.90

0.000

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT

1676419205108000000

1676419207212527000

22183.40

0.014

0

0

0.0

BUY_EVENT | DEPTH_EVENT | EXCH_EVENT

1676419205108000000

1676419207212527000

22203.00

0.000

0

0

0.0

SELL_EVENT | TRADE_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205111000000

1676419207212385000

22177.90

0.300

0

0

0.0

SELL_EVENT | TRADE_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419205111000000

1676419207212480000

22177.90

0.119

0

0

0.0

BUY_EVENT | DEPTH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

2218.8

0.603

0

0

0.0

BUY_EVENT | DEPTH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

5000.00

2.641

0

0

0.0

BUY_EVENT | DEPTH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22160.60

0.008

0

0

0.0

BUY_EVENT | DEPTH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22172.30

0.551

0

0

0.0

BUY_EVENT | DEPTH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22173.40

0.073

0

0

0.0

BUY_EVENT | DEPTH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22174.50

0.006

0

0

0.0

BUY_EVENT | DEPTH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22176.80

0.157

0

0

0.0

BUY_EVENT | DEPTH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22177.90

0.425

0

0

0.0

BUY_EVENT | DEPTH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22181.20

0.260

0

0

0.0

BUY_EVENT | DEPTH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22182.30

3.918

0

0

0.0

BUY_EVENT | DEPTH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22182.90

0.000

0

0

0.0

BUY_EVENT | DEPTH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22183.40

0.014

0

0

0.0

BUY_EVENT | DEPTH_EVENT | LOCAL_EVENT

1676419205108000000

1676419207212527000

22203.00

0.000

0

0

0.0

SELL_EVENT | TRADE_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419206976000000

1676419207212584000

22177.90

0.001

0

0

0.0

SELL_EVENT | TRADE_EVENT | EXCH_EVENT | LOCAL_EVENT

1676419206976000000

1676419207212621000

22177.90

0.005

0

0

0.0