データ ====== `Data Collector `_ または :doc:`Data Preparation ` を参照して、フィードデータの収集と変換について確認してください。 フォーマット ------------ `hftbacktest` は `numpy` 構造化配列を処理できます。データは以下の順序で 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 値用に予約されています **生データ** .. code-block:: 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}} **正規化データ** .. list-table:: :widths: 5 10 10 5 5 5 5 5 :header-rows: 1 * - 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 は :const:`EXCH_EVENT ` および :const:`LOCAL_EVENT ` フラグを使用します。 :const:`EXCH_EVENT ` フラグが付いたイベントは、取引所タイムスタンプに従って時系列順に並んでいる必要があります。 一方、:const:`LOCAL_EVENT ` フラグが付いたイベントは、ローカルタイムスタンプに従って時系列順に並んでいる必要があります。 2. 取引所タイムスタンプはローカルタイムスタンプよりも早くなければなりません。フィードレイテンシーは正の値でなければなりません。 2 つのサイト間の時間同期にエラーが発生する可能性があるため、ローカルタイムスタンプが取引所タイムスタンプよりも早くなり、負のレイテンシーが発生することがあります。 これに対処する最良の方法は、PTP (Precision Time Protocol) を使用して時間同期を改善し、負のレイテンシーの可能性を最小限に抑えることです。 ただし、基本的なレイテンシーを追加するか、負のレイテンシーのサイズをオフセットすることで、データが正のレイテンシーのみを持ち、イベントのローカルタイムスタンプが常に取引所タイムスタンプよりも遅くなるようにすることができます。 次の例を参照してください。深さフィードの取引所タイムスタンプは、取引フィードの前に進められていますが、深さフィードは取引フィードの後に受信されます。 .. code-block:: 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 は、この問題を自動的に修正するための :meth:`correct_event_order ` メソッドを提供します。 :meth:`validate_event_order ` は、この問題が存在するかどうかを確認するのに役立ちます。 .. code-block:: 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}} **正規化データ** .. list-table:: :widths: 5 10 10 5 5 5 5 5 :header-rows: 1 * - 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