低レイテンシ コードで「Python を接着剤として使用する」方法

低レイテンシのトレーディング スペースで Python 開発者になるのは簡単ではありません。 とすれば C++ Python 開発者は、より複雑な言語を学習するようプレッシャーを感じることがよくあります。

彼らはする必要はありません。 コードの待ち時間を短縮する目的に応じて、Python を確実に高速化できます。 低レイテンシの Python を使用している人々は、その汎用性と、さまざまなコンパイラや追加言語との互換性を称賛していますが、状況によっては C++ を超えることができないことも認めています。

HFT の場合は C++、暗号の場合は Python

あなたの夢が、高頻度の取引環境で低レイテンシのコードを書くことである場合、C++ の学習をすでに開始しているはずです。

Turnleaf Analytics の共同創設者である Saeed Amen 氏は次のように述べています。 」

ただし、高速取引実行だけが焦点ではない場合、Python が本領を発揮します。 Amen 氏は、Python は主に「低頻度での取引とクオンツ調査」に使用されると述べています。 これは、Python の強みである「研究は素早くアイデアを思いつき、それを効果的に実装する必要がある」ためです。

Python は、低遅延の暗号取引にも適しています。 アーメン氏は、「仮想通貨市場の動きは鈍化している」と述べており、その結果、C++ が提供する耐え難いほどの微調整は必要ありません。

Python を高速化する方法

多くの場合、Python を高速化するための推奨事項は、NumPy ライブラリまたは C と Python のスーパーセット サブ言語である Cython を使用することです。 トレーディング分析会社 Profitview の最近のウェビナーで、Citi と Citadel の元クオンツである Antony Peacock 氏は、「NumPy を使用している場合、ベクトル化を行う Intel Maths Kernel ライブラリのようなものに対して構築される可能性が非常に高い」と述べています。

代わりに、Amen は「別の言語で記述しなくてもコードを高速化できる優れた新しいツール、Numba」を推奨しています。

Numba はその Web サイトで、「Python および NumPy コードのサブセットを高速なマシン コードに変換するオープン ソースの JIT コンパイラ」として自社を宣伝しています。 その重要な機能の 1 つは、「パフォーマンスを最適化するために、さまざまな配列データ型とレイアウトに特化したコードを生成する」ことです。

しかし、それは「無料のランチではない」とアーメンは警告します。 「特に特定のボトルネックがあるコードの高速化に重点を置いている場合は、コードを書くのに時間を費やす」必要があります。

代わりにこの言語を学ぶべきです

C++ を学習する際の問題は、C++ と Python の両方が「汎用言語」であることです。 目立つようになる、よりニッチな言語を学びたい場合は、KDB+ が最適な候補です。

データベース言語は大量の情報を迅速に処理することに特化しているため、Amen 氏は「大量の高頻度データを処理している場合は、KDB を学ぶ価値があります」と述べています。

KDB 開発者の希少性により、彼らはより高い給与を要求することもできます。 たとえば、バイサイドの KDB 開発者は、ニューヨークで最大 60 万ドルの給与を得ることができます。 それを Python の専門知識と組み合わせると、さらに印象的になります。

Python コーダーが学習することが非常に優れているのは、2 つの言語がどのように連携するかです。 Amen 氏は、「KDB は強力な主力であり、Python は追加の分析です」と述べており、「データベースからデータを取り出して別の場所で実行する必要なく」プロセス全体を実行できるため、コードがはるかに合理化されます。

コードを部分の合計以上のものにする

ただし、Python を高速化する最善の方法は、1 つのことに固執するのではなく、それらを効果的に組み合わせる方法を検討することです。 Amen は、「Python を他のライブラリや言語の接着剤として使用する」べきだと言います。

例として、Amen 氏は、「NumPy と NumbA を使用してコーディングを開始し、Cython でコードを書き直し、それを KDB などの他のテクノロジーと組み合わせてディスク上のデータを前処理する」ことができると述べています。

そうは言っても、代替技術を取り入れすぎると、リスクと障害が伴います。 Amen 氏は、「コードを複雑にすると、コードが壊れやすくなり、より多くの単体テストを行う必要があります」と述べています。

eFinancialCareers でプロフィールを作成するには、ここをクリックしてください。 記事に匿名でコメントして、テクノロジーと金融のトップ ジョブを採用している採用担当者に自分のことを知ってもらいましょう。

共有したい秘密の話、ヒント、またはコメントがありますか? 最初の連絡先: alex.mcmurray@efnancialcareers.com。

この記事の最後にコメントを残す場合はご容赦ください。すべてのコメントは人間によってモデレートされています。 時々、これらの人間は眠っているか、机から離れている可能性があるため、コメントが表示されるまでに時間がかかる場合があります. 攻撃的または中傷的でない限り、最終的にはそうなるでしょう (その場合はそうなりません)。

写真提供: eFinancialCareers/Dall-E

Leave a Comment

Your email address will not be published. Required fields are marked *