金融市場の最前線では、1秒にも満たない時間が勝敗を分けることがあります。今回は、世界的な高頻度取引(HFT)およびマーケットメイキング企業であるOptiver社が、Databricksのカンファレンスで発表した講演「Building Real-Time Trading Dashboards With DLT and Databricks Apps」の内容を深掘りします。彼らがどのようにして、数分かかっていたデータ反映を数秒レベルにまで短縮し、トレーダーの意思決定を加速させたのか、その技術的な挑戦と解決策に迫ります。
データエンジニアやBI開発者、そしてリアルタイムデータ処理に関心のあるすべての方にとって、示唆に富んだ内容となるでしょう。
なぜリアルタイムの可視化が不可欠なのか?
Optiverは、オプション、先物、ETFなど多様な資産クラスを扱うマーケットメイカーです。マーケットメイカーの役割は、市場に常に買い注文と売り注文を提示し、流動性を供給することにあります。講演では、市場が活発な時も閑散な時も、常に取引を行う姿勢について紹介されました。
ビジネスの成否を左右するのがデータです。どの取引戦略が成果を上げているのか、次のビジネスチャンスはどこにあるのか、そして規制を遵守できているのか。こうした問いに応えるために、リアルタイムに近いデータ分析が重要であると説明されました。
Optiver社はこの課題を解決するため、オンプレミスに散在していたデータをDatabricks上に集約し、ダッシュボードの民主化を実現。研究者からトレーダーまで、誰もが容易にデータへアクセスし、BIダッシュボードを作成できる環境を整えました。しかし、秒単位の更新が求められるライブユースケースで使われ始めると、既存アーキテクチャ(下図)では性能が追いつかなくなってしまいました。
Databricksレイクハウスへのアーキテクチャ変革
Optiver社は要件定義から見直しました。トレーディングデスクから提示された主な要件は以下の通りです。
- 低レイテンシ: エンドツーエンドでシングルデジット秒レベルの遅延
- 信頼性: ライブでリフレッシュされ続けること
- アクセス制御: Unity Catalogを活用し、コンプライアンス要件を満たす詳細なデータアクセス権限管理
- 開発効率: 研究段階のPythonロジックを再実装せず本番環境へ移行できること
これを実現するため、データパイプラインの「取り込み」と、クエリ実行および可視化を行う「ダッシュボード」の両面から徹底的に最適化を行いました。
データパイプラインの最適化:数分から数秒への飛躍
当初はC++製アプリケーションでKafkaからS3へ中間ファイルを保存し、DatabricksのAutoloaderで取り込む構成でした。スループット重視ではあるものの、レイテンシ最優先の要件には不向きです。
そこでDatabricksのStructured Streamingを使い、Kafkaから直接データを読み込むストレートなパイプラインを採用。さらにSpark設定をチューニングし、Kafkaパーティション数やmaxOffsetsPerTrigger
などを調整して、ネットワーク往復回数を減らしマイクロバッチ処理の効率を最大化しました。
書き込み最適化では、Optimized Write
は無効化し、代わりにAuto Compaction
機能でファイル結合を委ねる判断を採用。こうして書き込み速度と下流読み取り性能を両立させた結果、データ取り込みのレイテンシは数分レベルから数秒レベルへと劇的に短縮されました。
宣言的パイプライン定義と管理を簡素化するDelta Live Tables(DLT)は、同様の課題を抱えるチームにとって強力な選択肢となるでしょう。
クエリエンジンの高速化:Photonがもたらす魔法
パイプラインが高速化されても、クエリレスポンスが遅ければ意味がありません。ここで主役となったのが、高性能クエリエンジンPhotonです。
Optiver社は生データに対して都度SQLを実行するアーキテクチャを選びました。その背景には以下のポイントがあります。
- 「使い慣れたSQLで直感的に操作できるため、ロジック変更が容易」
- Databricks SQL Warehouseが差分データのみを読み込むキャッシュ機能で高速応答を実現
- Photonのアダプティブクエリ最適化により、動的に実行計画を見直し不要なスキャンやシャッフルを削減
これらの機能により、都度クエリ実行でも高速かつ柔軟なソリューションが成立しました。
ダッシュボードとアプリケーションの革新
ダッシュボードは標準BIツールではなく、Databricks Apps上でホストしたカスタムアプリケーションとして構築されました。Databricks Appsは、Pythonベースのアプリを比較的容易にプロダクションデプロイできる機能です。
フロントエンドはPlotly Dashを採用し、リッチな対話型UIを実現。ダッシュボード管理効率化のため、設定ファイル(TOML/SQL)からインタラクティブ画面を自動生成する「ダッシュボードジェネレーター」を開発し、研究者が設定変更だけでダッシュボードを更新できるようにしました。
また同時アクセス集中を防ぐため、クエリのロック&キャッシュ機構を実装。同一クエリの最初の結果をキャッシュし、以降のリクエストはキャッシュを返すことでバックエンド負荷を大幅に抑えています。
最新技術スタックによるエンドツーエンドの加速
アーキテクチャ全体を支えるのはモダンなデータ技術のエコシステムです。Databricks SQLのCloudFetch機能で大規模結果を効率的にストリーミングし、高速なデータフレームライブラリPolarsはゼロコピー変換をサポートして高速処理を実現。これらを繋ぐApache Arrowは、カラムナフォーマットの標準として各コンポーネント間のデータ受け渡しを効率化します。
まとめ:高速化がもたらした価値
Optiver社の取り組みの結果、リアルタイム取引ダッシュボードのエンドツーエンドレイテンシは数分からシングルデジット秒台へと大幅に改善。トレーダーは市場動向をより迅速に把握でき、開発者はインフラ管理や複雑な再実装から解放され、より価値ある業務に注力できるようになりました。
本事例は、明確なビジネス要件に基づき、データ取り込みからクエリエンジン、アプリケーション、そしてエコシステムまでスタック全体を徹底最適化した成果です。Optiver社の挑戦は、リアルタイムデータ活用の未来を示す優れたモデルと言えるでしょう。