ここ数週間、高頻度取引に関する多くの記事に出くわしました。彼らは皆、コンピュータとソフトウェアがこれにとってどれほど重要であるかについて語っていますが、それらはすべて経済的な観点から書かれているため、ソフトウェアが何をするかについての詳細はありません?
プログラマーの観点から、高頻度取引とは何かを説明できる人はいますか? また、この分野でコンピュータ/ソフトウェアが重要なのはなぜですか?
パウロが言ったことを拡張するには:
HFTまたはUHFTを実行するサーバーは、ほとんどの場合、取引所のデータセンターに併置されます。これにより、待ち時間が最小限に抑えられ、アルゴがFlash注文(間もなく禁止される可能性があります)を使用して、注文が市場にブロードキャストされる前に注文フローを最初に確認できるようになります。多くのアルゴはほんの数ミリ秒で注文を評価します。これはミリ秒が重要なゲームです。トレーディンググループは、注文がNICに到達してから結果のアクションが実行されるまでの時間を最適化するために、カーネル開発者を雇ってカスタムOSコンポーネントを構築するなど、あらゆる手段を講じることで知られています。
今日一般的に使用されている戦略の大きなバケツがいくつかあります。
1つ目は、大量のブロック注文の前で取引することです。ポールがIBMの100万株を購入する例を使用するために、HFTアルゴは購入圧力を探します。注文は分割され、通常は複数の取引所とダークプールで実行されるため、さまざまな取引所とダークプールにある会社のコンピューターは情報を共有する必要があります。HFTアルゴは、統計/機械学習モデルを使用して購入圧力の大きさを予測し、十分であると判断した場合は、市場全体からのシェアを蓄積し、わずかに高い価格で販売しようとします。
2つ目は、取引所が市場参加者に流動性を追加するために支払う流動性リベート取引です。(直接エッジ価格設定を参照してください)売買された株式は、非常に短い期間しか保有できません。目標は、リベートを集めて、他のすべてのものでさえ損益分岐点にすることです。
これらの戦略タイプの両方で、アイデアは取引でペニー(または分数)を作り、これを1日に何度も行うことです。
お気づきかもしれませんが、利用可能なHFTジョブがたくさんあるため、取引はますます混雑しています。これは2000年代初頭の統計上の裁定書のようなものだと思いますが、非常に多くのプレーヤーがそれを作ろうとしているため、最終的には貿易はあまり有益ではなくなります。
ソフトウェアが重要である理由については、ミリ秒が重要です。レイテンシーは非常に重要であり、コードはタイトで高速で、安定している必要があります。市場があなたに反対するときにアルゴクラッシュを起こし、株に捕まるのはあまり有益ではありません。これらの要件のエンジニアリングは必然的に異なり、異なるスキルが必要です。フルオーダーブックをリアルタイムで処理するには、ある程度の馬力と優れたアルゴリズムが必要です。でもそれは楽しくて面白いです。
HFT システムには 2 つの部分があります。
リアルタイムの超低遅延取引 - リアルタイムのオーダーブックと多くの異なるソースからの価格情報を購読し、最小限のスリッページで大規模な注文を実行するように設計された調整されたアルゴリズムを実行します (つまり、最後までに IBM の 100 万株を購入したい)市場を動かしすぎずにその日の時間帯を計算する)、または短期のアービトラージに基づいて統計的に利益を上げようとするだけです。このシステムは、1 人以上の人間のオペレーターがシステムの動作を効果的に監視および制御できるように、優れたリスクおよびポジション管理ツールも提供する必要があります。
オーバーナイト/ウィークリーなど、大量の「ティック データ」(価格、時間、オーダー ブック情報、およびシステムの以前の取引活動に関する履歴データ) の分析、最適化および実際に実行される最適なアルゴリズムの「検索」パート#1の時間。つまり、#1 で実行されるアルゴリズムを「調整」してテストします。
最初のものは、低遅延と市場への非常に優れたアクセス (つまり、最小限のホップでの取引所への直接ネットワーク接続) を必要とします。この部分は通常、C や C++ などの非 GC 言語で記述する必要があります (ガベージ コレクターが世界を停止する間の 0.5 秒の遅延は非常にコストがかかる可能性があります)。2 つ目は通常、グリッドと多くの優れたシミュレーションおよび統計分析ソフトウェア、AI アルゴリズムなどが必要です。
この種の取引で最も普及しているアプリケーションは、CEP (複雑なイベント処理) である傾向があることを付け加えておきます。いくつかの例は、Streambase、Apama、および Aleri です。一方、大量のデータを処理するために、人々は KDB、OneTick、Vhayu などの高速データベースを使用しています。
技術的な課題の種類を理解したい場合は、まずこれらのベンダーに目を向けることをお勧めします。彼らのマーケティング資料は、ビジネス アプリケーションと技術的な課題を理解するのに役立ちます。
特定の時間 (たとえば、先物の満期時) には、1 分間に数千回の取引を行う必要があります。ところで、この時間はプログラマーにとって非常にストレスの多い時期です。何か問題が発生した場合、回復の可能性はほとんどないためです。
この分野でコンピュータ/ソフトウェアが重要なのはなぜですか?
最高のパフォーマンスと最低のレイテンシーが望ましいのは、物事に素早く反応できるほど、より多くのお金を稼ぐことができるからです。