コンテンツにスキップ

ライブのレコード(Databento 風)

brisk live は、そのフィードをこのコンピューター上の他のプログラムにも、クラウド API が返すのと同じレコードとして配信します。briskapi.Live は Databento のライブクライアントと同じ形で、キーもサインインも要りません。証券会社にサインインするのはフィードだけです。

brisk live --site sbi   # 止めるまで記録・アップロードし、XTKS.BRISK を配信(--site demo ならデモの XTKS.BRISKDEMO)
import briskapi

live = briskapi.Live()          # このコンピューターで動いているフィードを見つける
live.subscribe(dataset="XTKS.BRISK", schema="imbalance", symbols=["7203", "6758"])
live.subscribe(dataset="XTKS.BRISK", schema="trades", symbols=["7203"], start=0)   # その日のここまで、続けてライブ
live.subscribe(dataset="XTKS.BRISK", schema="ohlcv-1m", symbols=["7203"])          # 1分ごとのバーを、その1分が終わりしだい
for record in live:             # または live.add_callback(fn); live.start(); live.block_for_close()
    print(record.schema, record.symbol, record.ts_event)
  • スキーマ: trades、mbp-10、imbalance、definition、brisk-quotes、OHLCV バーの ohlcv-1s 〜 ohlcv-1d。同じセッションなら Historical が返すのと同じ列・同じ値です。Live は受け取った約定から、クラウドと同じ規則でバーを作ります。
  • バーは、その区間がフィードの時計で終わりしだい届きます。終わりより後の時刻のバッチが届いたとき、またはこのコンピューターの時計から、BRiSK からこのセッションまでに測った遅延(直近10秒の最大値)を引いた時刻が終わりを過ぎたときです。自分のバーが終わったあとに届いた約定は、まだ終わっていない次のバーに入ります(クラウドでは約定自身の時刻のバーに入ります)。どの約定も数えられ、バーは順に届きます。バーは、セッションがその取引時間内の全期間を見ている場合にだけ渡します。 start を指定すればフィードの開始から、指定しなければ購読より後に始まるバーです。
  • セッションの始まり: その日の銘柄定義、続いて届いた更新を順に受け取ります。start(時刻、日付、UTC ナノ秒、またはフィードが持つすべてを表す 0)を指定すると、まずフィードのその取引日をその時点から再生します。フィードが持っているのは、起動してからの分と、スナップショットが復元したその日の約定です。snapshot=True を指定すると、mbp-10、imbalance、brisk-quotes を各銘柄の現在の気配から始めます(flags は 32)。
  • レコードは辞書で、属性としても読めます(record.price)。スキーマは record.schema です。フィードがバッチを受け取った順に届き、バッチ内は Historical と同じ順です。 add_callback(fn, exception_callback) と add_stream(path)(JSON Lines。Databento では DBN)でも受け取れます。block_for_close(timeout) はセッションの終わりを待ち、stop() は終わらせます。購読は start() の前でも後でもかまいません。後からの購読にもそれぞれの再生やスナップショットがあり、その銘柄はその時点から届きます。1つのセッションの購読は同じデータセットを共有します。 symbology_map は instrument_id から銘柄コードへの対応です。
  • 高速レーン: 証券会社のフィードは全銘柄を記録するため、遅めのコンピューターでは寄付でストリームから数秒遅れることがあります。start を付けずに銘柄を指定したセッションは高速レーンで受け取ります。フレームが届くたびに読み、記録より先に、同じレコードを届けます。高速レーンが扱えるのはそのワーカー1つにつき約 500 銘柄です(フィードのワーカーの4分の1)。ALL_SYMBOLS、start による再生、扱える数を超える銘柄は、記録と同じ速さで届きます。後の購読で収まらなくなったセッションは、レコードを欠かすことも重複させることもなく、そちらに移ります。
  • このコンピューターだけ: フィードは 127.0.0.1 でのみ待ち受け、所有者だけが読めるファイル(~/.config/brisk/gateway/XTKS.BRISK.json)にポート番号とともに保存したキーを持つセッションだけを受け入れます。Live() はこのファイルを読みます。配信する内容がこのコンピューターの外に出ることはありません。1 GB を超えて遅れたセッションは、フィードやその記録を遅らせる代わりに切断されます。
  • 配信: brisk live は --no-gateway を指定しない限り配信します。1つのデータセットを配信できるフィードは同時に1つです。Python では briskapi.connect() に gateway=True を渡します。