同期メッセージ配送でアクターモデルを低遅延取引へ適用する
Adapting the Actor Model of Concurrency for High-Frequency Trading: Synchronous Message Delivery (fast_send) and a Tick-to-Book Latency Study
この論文をやさしく読む
ひとことで言うと
処理単位同士がメッセージを送るアクターモデルを、同じスレッド内では直接呼び出す仕組みにして、非常に短い遅延が求められる処理へ適用する研究です。
何に役立つ?
状態を分けた設計を保ちながら、通信・スケジュール処理の負荷を減らす実装例になります。同じコードを実運用と再現可能なシミュレーションで使う設計も提示しています。
この研究の面白いところ
実際の市場データで、基礎的な復号・板更新時間とフレームワークの負荷を分けて測っています。遅延の大きな外れ値を、フレームワークだけでなくデータ到着の集中から説明しています。
どこまで分かった?
数十ナノ秒は同期往復のマイクロベンチマーク、約7マイクロ秒は市場データの復号・板更新の下限部分であり、別の測定量です。取引収益や全システムの安全性を実証した結果ではありません。
v1のアブストラクトに基づくAI解説。日本語訳とは別に、用途の解釈を含みます。
アブストラクトの日本語訳
状態の分離、データ競合の回避、デッドロックへの耐性、一度に一つのメッセージを逐次的に考えられる性質を持つアクターモデルは、高頻度取引(HFT)には不適切だと長く見なされてきた。アクターは多数のスレッド、アクターごとのメールボックス、やり取りごとのヒープ上のメッセージ確保とコンテキスト切り替えを伴うように見え、その負荷はマイクロ秒単位の時間予算に合わないためである。本論文は、同一場所に配置したアクターにはこの否定的判断が当てはまらないと論じ、解析と、導入・計測済みのオープンソースC++20フレームワークkaspar-hftの実装の両方で裏づける。 四つの拡張がモデルをHFT向けに適応させる。送信スレッドが受信側ハンドラーをその場で実行し、応答を値として返す同期配送機構fast_send、共有メールボックスを介して一つのスレッド上でアクターを共同スケジュールするアクターグループ、アクターごとに選択可能なメールボックスキュー、メモリプールである。fast_sendは受信側に対して透過的で、ハンドラーは配送が同期か非同期か、どのスレッドで実行されているかを判別できない。グループ化された同期的な呼び出し連鎖は一つのスレッド上で動き、スケジューラーのコンテキスト切り替えをO(N)からO(1)へ減らす。また、スレッド局所の呼び出し連鎖検査が、ロック取得前に循環呼び出しを検出する。 マイクロベンチマークでは、同期往復は数十ナノ秒である。CMEの実市場データ配信(ES、NQ、ZN先物)では、ソケット受信から板更新までの遅延は約7マイクロ秒の復号・板更新の下限部分と、メッセージ数に比例する増分に分けられ、フレームワーク自身の寄与は下限部分の1%未満である。遅延分布の裾を決めるのはアクター機構ではなく、関連論文で特徴づける、市場の非ポアソン的で集中した到着過程である。共有キューのグループは本番とシミュレーションの両用性も生み、同じアクターコードが実取引と決定論的バックテストで変更なしに動作する。
v1の要旨から自動生成。本文の精読・人による確認は未実施。
- 初稿
- 2026-09-18(UTC)
- 最新改訂
- 2026-09-18 · v1
- 査読・掲載
- 査読状況未確認
更新履歴
- v1 2026-09-18 この版を読む
取得できた版を表示。版の更新は査読済みを意味しません。過去版の本文差分は未解析です。
原文の要旨
The actor model - state isolation, data-race freedom, deadlock resistance, and sequential single-message reasoning - has long been dismissed as unsuitable for high-frequency trading (HFT): actors seem to imply many threads, a mailbox per actor, and a heap-allocated message plus a context switch per interaction, overhead incompatible with a microsecond budget. This paper argues the dismissal is wrong for co-located actors, and supports it both analytically and with a deployed, measured implementation: kaspar-hft, an open-source C++20 framework. Four extensions adapt the model for HFT: fast_send, a synchronous delivery mechanism in which the sending thread runs the receiver's handler inline and returns the reply as a value; actor groups, which co-schedule actors on one thread behind a shared mailbox; per-actor selectable mailbox queues; and a memory pool. fast_send has receiver transparency: the handler cannot tell whether delivery was synchronous or asynchronous, or which thread runs it. A grouped synchronous chain runs on one thread, cutting scheduler context switches from O(N) to O(1), and a thread-local call-chain test catches cyclic invocation before any lock is taken. Microbenchmarks put the synchronous round trip at tens of nanoseconds. On a live CME market-data feed (ES, NQ, ZN futures), socket-to-book latency decomposes into a ~7 microsecond decode-and-book floor plus a per-message slope; the framework's own contribution is under 1% of the floor. The tail is set not by the actor machinery but by the market's non-Poisson, clustered arrival process, characterized in a companion paper. The shared-queue group also yields a production/simulation duality: the same actor code runs unchanged in live trading and deterministic backtest.
著者のコメント
31 pages, 4 figures. Companion paper on the market-data arrival process in preparation
arXiv ID: 2609.21173 / 要約の誤りについて