高頻度取引のための技術の積み重ねになることができるもの





Habréのブログで 、取引所の取引エンジンと高頻度取引用のソフトウェアを備えたハードウェアをホストするためどのデータセンターが使用されいるかについて既に説明しました。 今日は、さらに進んで、HFT取引に必要なテクノロジーのスタック全体がどのようになるかについてお話します。



フォーブスは、ロビンフッドサービスの共同設立者(このプロジェクトについてはこちらで説明しまし )、ブルガリアのVlad Tenevaについての話をします。



オンライン取引のための彼自身のモバイルアプリケーションで作業を開始する前に、TenevはHFT企業、銀行、ヘッジファンド向けの超高速ソフトウェアを開発したChronos Researchで働いていました。 多くの場合、取引に使用されるインフラストラクチャの特定の構成は、取引する資産と使用される市場戦略に依存していました。 たとえば、外国為替市場で働くのに適したインフラストラクチャは、株式市場やデリバティブで常に競争力があるとは限りません。



2011年、Chronosは2つのソフトウェアプラットフォームを開発し、同じ名前のZardoz (John Conneryとの映画のように)を統合しました。そのうちの1つは標準のx86ハードウェアで動作し、15マイクロ秒の遅延で取引に使用できます。 もう1つは、 Tileraハードウェアを使用するために最適化されており、その使用により、遅延を5マイクロ秒未満の値に減らすことができました。 各システムは、エクスチェンジデータセンターでのコロケーションベースでの配置を目的としていました。



プライベートトレーダーにとっては、x86アーキテクチャのプラットフォームがより興味深いため、Tenevが説明しています。



データ転送



原則として、取引プラットフォームは、交換エンジンへの1つの物理的な接続(ファイバーの形)を提供します。このエンジンでは、さまざまな売り手と買い手からのアプリケーションの「削減」があります。 Chronosシステムを使用するには、10ギガビットの帯域幅のチャネルを使用することをお勧めします。この場合、シリアル化の遅延は減少しましたが、ユーザーが1ギガビットを超えるチャネルを取得できた場合はめったにありませんでした。 1つの物理接続を介して、市場データが送信され(通常はTCPまたはUDPマルチキャスト経由)、注文が送信されます(TCPまたはUDPユニキャスト経由)。



遅延を減らすには、物理​​的なクロスケーブルをサーバーのネットワークカードに直接挿入する必要があります。 ただし、実際には、トレーダーはさまざまな取引所からの数十本のケーブルが接続されている複数の物理サーバーを常に使用するため、このオプションを満たすことはほとんど不可能です。



装備品



このすべての多様性を結合するために、Chronosの専門家は24ポートAristaのような高速スイッチの使用を推奨しました。 このような機器を使用すると、350ナノ秒のポート間遅延が発生しました。 また、一部のトレーダーはBlade Networksのスイッチ(IBMが購入)を使用しました。これはFulcrum ASICでも機能しましたが、より安価でした。







さらに、正常に動作するには、HFTトレーダーにはカーネルバイパスドライバーを備えた高速ネットワークカードが必要です。 Tenevは、 Myricomの UDPトラフィック用の10G-PCIE2-8C2-2Sネットワークアダプターと、 Solarflare Flareon Ultra SFN7122Fデュアルポート10GbE PCIe 3.0サーバーI / Oアダプター-パーツID:SFN7122Fに言及しています。







ソフトウェア



これらの各カードには、カーネルをバイパスするために必要なドライバーがあり、ユーザー空間でTCPおよびUDPを介してデータを送受信できます。 コンテキスト切り替えは、遅延の観点からすると高価な操作であるため、HFT取引では避ける必要があります。 したがって、重要なデータの処理はコアに移されます。



Chronosシステムを使用するために、ソフトウェア開発者によってサポートされたGentoo Linuxの「カスタム」バージョンも提供されました。



ソフトウェアは、直接取引を担当するモジュールが特定のプロセッサコアで動作するように機能し、他のプロセスがそれらを使用することは禁止されていました(これはコンテキストの切り替えを避けるためにも必要です)。 これらのコアでは、ローカルタイマーとその他の割り込みが無効にされていました。



プラットフォームロジックコードはCで記述され、イベント指向でした(このスキームに従って動作するバックテスターの作成について説明した一連の記事で)。 開発者は独自の「ノンブロッキング」データ構造を作成しました。その結果、各スレッドは無限ループで動作し、入力用に独自のFIFOをポーリングしました。



その結果、すでに述べたように、アプリケーションの処理の遅延は15マイクロ秒を超えませんでした。



取引インフラストラクチャのトピックに関するその他の資料:





All Articles