方法:最初の取引ロボットを開発する際の考慮事項

画像



ブログでは、機械取引システムの開発 、市場での作業戦略の選択 、履歴データでのテスト重要な段階について既に書いています 。 本日の記事では、前述の情報を要約し、一般的なミスを回避するために、株式市場の新規参入者が最初の取引ロボットの作成にどのように取り組むべきかについて説明します。



技術の選択:妥協する能力



ほとんどの場合、ソフトウェア製品を作成するとき、開発者は何らかの形で何らかの妥協を行い、いくつかのことの間のバランスを模索する必要があります。 ロボットの取引の場合、3つの要因が重要な役割を果たします。





速度が最も重要な場合、コードは確実に効果的な低レベル言語で作成する必要があります。 C ++および純粋なCは、これらのタスクに非常に適しています( SmartXトレーディングターミナルの開発者は、インタビューでC ++の使用について話しました )。 また、アセンブラーで高速ロボットがほぼ作成されることもあります-ここでは、ネットワークカードのメモリへのデータの直接読み取りおよび書き込みのメカニズムに言及する価値があります。ドライバーを介して動作する標準メカニズムをバイパスし、FPGAのような「超高速プログラマブルハードウェア」で動作します。



速度の概念には、相互に関連するものの、2つの異なるタスクが含まれます。 これらの最初のものは、取引所との相互作用の速度の最適化です(注文の配置、回答の受信)。 ソリューションを成功させるには、コードを最適化して優れたハードウェアを用意するだけでなく、サーバーが設置されているラックまで、交換アーキテクチャの機能を考慮して使用する必要があります。 2番目のタスクは、取引アプリケーション自体のロジックを最適化することです。



画像



画像: ビジネスワイヤ



アーキテクチャと開発環境



同様に重要な点は、ロボットアーキテクチャの選択です。 ここでも妥協が可能です。たとえば、特定の市場、交換ゲートウェイ、1つのアルゴリズムを備えたシステム、または限られたツールセットを備えたロボットを「調整」するかどうかなどです。 このような最適化により、パフォーマンスをさらに向上させることができます。



逆に、より汎用性の高い製品を使用すると、開発速度が向上し、ロボットの使用が容易になりますが、おそらくこのアプローチのマイナス面は生産性の低下です。



将来のロボットのタイプと使用されるアルゴリズムの性質は、テクノロジーの選択においても重要です。 高周波ロボットの作成を計画している場合、C ++の使用、場合によってはCの使用が単に必要になります。



少数のトランザクションを含む取引戦略を自動化する必要がある場合(「最速ではなく、最も賢い」スキームに従って動作します)、ポジションへの入り口での「滑り」の量は、利益と利益の両方に比べて無視できます。損失が発生する可能性がありますが、開発の速度と容易さが最初になります。



作業速度と開発速度のもう1つの妥協点は、C#、Visual Basic、およびこのプラットフォーム上の一般的な形式の任意の形式の.Netです(このトピックは、以前の資料でも説明しました)。



ロボットがリアルタイムのパフォーマンスを必要としない重要な計算を必要とするが、バックグラウンドで取引パラメーターを最適化するために使用される場合、解釈されたPython、R言語などのエキゾチックなものも実行可能です(1それらの-スクリプト化されたTradeScript 、その上でのロボットの作成についての詳細は、 ここここで説明さています )。 .Netテクノロジーと互換性のあるこれらのツールの実装もあります。



画像



SmartXターミナルのTradeScriptで簡単な取引戦略を作成する例



開発環境についての会話の下に線を引くには、次の3層アーキテクチャをお勧めします。



ステージ#1


かなり原始的ですが、可能な限り高速で、単純な一連の操作を実行するロボットです。 本質的に、彼の仕事は、非常に単純なアルゴリズムに従って、市場から素早く取り出すか、単純な資産または合成資産を市場に発行することです。 このレベルは、C、C ++、および異なるレベルのアセンブラーで記述されています。



ステージ#2


第1レベルのロボットのパラメーターの制御システム、その周りの「ラッパー」。 アルゴリズムの操作に対するより複雑な制御の機能と、取引結果を表示するための制御パラメーターとメカニズムを含むユーザーインターフェイスを組み合わせています。 このような製品は、C ++、C#、Java、または一般的にWebアプリケーションとして実装できます。



ステージ#3


パラメータのバックテストと選択のためのシステム。 この3番目のレベルは最初の2つのトレーダーに直接関連していませんが、基本的な接続があります。ここでは、履歴データに対する新しいアルゴリズムのテストが実行され、既存のアルゴリズムに対して新しいパラメーターが選択されます。



ロボット作成者が作業時間のほとんどを費やすのは、履歴データで新しいアイデアと仮説をテストするためです(最初の2つの段階で作成されたツールがどのように取引されているかを観察するためではありません)。



画像



画像: シカゴ



優れた開発スタイルとは、テスト後にコードを変更せずに、第3レベルのシステム用に記述されたアルゴリズムを「そのまま」トレーディングモジュールに転送できる状況です。 最大の快適さと開発速度を達成できるテクノロジーを使用して、このレベルの実装に取り​​組むことは価値があります。



説明されている回路が異なるように見える例外があります-たとえば、高速高周波(HFT)ロボットは基本的に第1レベルに制限され、すべての不必要なボディキットは除外されます。また、複雑なオプションモデルでは、たとえばCUDAを使用したグラフィックカードでの計算のサポートが必要になる場合があります さらに、タスクの80%では、このような3つのレベルへの分割が最も正当化されるようです。



取引ロボットを作成する段階



ロボット開発は、いくつかの段階で構成される周期的なプロセスです。



アイデア


最初に、将来のアルゴリズムトレーダーは、利益を上げるために使用できるアイデア、取引プロセスの理解、または非効率性の実現を持っています。



バックテスト


その後、新たな取引のアイデアは「履歴によって追い払われる」必要があります-特定の取引アプローチと時間枠に応じて、異なる履歴データをこれに使用できます-「粗い」ろうそく、取引のティックシーケンス、および注文の動きを考慮した為替メガネの完全なログの両方。



コスト分析


株式市場の新規参入者がしばしば過小評価する重要な段階は、必須(手数料、ポジション移転率、レポなど)と追加の予想が難しい追加費用(取引中の価格のずれ、その時点でのインフラストラクチャの予期しない遅延)の分析です市場の強い動き)。



画像



画像:ゲッティイメージズ



このような費用の合計額は、平均取引額に影響します。 収益性の危機にonしている多くのアルゴリズムがあり、そのような追加コストの評価が不十分であると、見えない場所で正常に見つかった杯の錯覚を作り出す可能性があります。



ロボットの作成とその「戦闘」テスト


実際、ロボットのコーディングは非常に重要ですが、それでもなお最も平凡なタスクです(アーキテクチャ、作業アイデアなどの正しい選択に依存します)。



ロボットを作成してデバッグした後(このためには 、仮想通貨で取引所へテストアクセスを使用できます)、アルゴリズムの実際の使用が開始されます。



最も効果的なアプローチは、ロボットのテスト期間中であっても実際のお金と交換することです-小さなトランザクションで戦略をテストできるように、特定の予算(事前に別れを告げることができます)を割り当てる必要があります。 金額を非常に小さくしますが、実際のお金のリスクは、取引プロセスの根本的に異なる理解を与えます-それが実現され、将来成功裏にモデル化される唯一の方法です。



ほとんどの場合、取引開始直後の結果は当初の計画どおりではないため、開発者は2、3回以上ステージに戻って何かを修正する必要があります。



戦略が少量の資金で稼いだが、その成功した仕事のためにボリュームを増やす必要がある場合、あなたは徐々にこれに移る必要があります-また、この経路上に問題と資金の損失があるでしょう、それはあなたが戦略とコードの最適化に再び対処しなければならないことを意味します



2012年の春、私は突然どこから来たのか分からずに余分なお金を稼ぎました。 私は間違ったドルヘッジを持っていたことが判明しました。 その瞬間、RTS指数には強い動きがあり、私の「バスケット」は大きなプラスとして過大評価されていました。 私は約150万ルーブルを稼ぎましたが、同時に、将来の予期しない失敗が起こらないように、この利益はシステムを真剣に変革する機会となりました。



-ITinvest副マネージングディレクター、Alexey Afanasevsky、F&O誌とのインタビュー


安定した(おそらく)仕事


ある程度の一定の最適化の後、アルゴリズムは(おそらく)一貫して許容可能な結果を​​示し始めます-この段階は集中力の低下を伴います(暖かい国のスポーツカー、ヨット、ヴィラの夢はすぐに現れます)。 現実には、現実に反撃し、ロボットの作成者にいくつかのステップをロールバックさせ、原則として取引戦略全体を修正することがしばしば起こります。



画像



結論



取引ロボットの作成を成功させるには、多くの要因を考慮する必要があります:テクノロジー、プラットフォーム、ゲートウェイ、数学、ハードウェア、取引所までの距離、ニュース、取引時間、ニュースリリース時間、経済学と政治の関係など。

さまざまなタイプのロボットを作成する場合、これらすべてのパラメーターはさまざまな重みを持ちます-高頻度取引の場合、指示されたロボットの場合、迅速な実行が必要です-さまざまな種類の仲裁の良い統計的方法のための技術的および/または基本的なプロセスの十分な理解 同時に、純粋な形ではそのような「ロボットの分類」は存在しないことを理解する必要があります-各製品は、さまざまな程度で、「異なるアプローチのクリアリングに同時に入り込みます。



ロボットの作成に挑戦したいITプロフェッショナルは、まず株式市場の構造に関する知識を増やし(専門の文献がこれに役立ちます)、その後でコードと実験を書く段階に進む必要があります。 結果を達成するロボットを作成する途中で、間違いや経済的損失は避けられません。



いずれにせよ、トレーディングロボットでの作業を開始する前であっても、お金を稼ぐための普遍的なツールを作成し、引退してアカウントの増加のみを観察する準備をする必要があります。 アルゴリズム取引は興味深いが、その表現として自分自身と世界と市場の理解を向上させるための長く継続的な作業です。 人がこれを行うことに興味がある場合、ロボットの作成は結果を得るためのツールに過ぎず、それ自体が目的ではありません。



資料の準備では、F&O誌のITinvest Alexei Afanasyevskyの副マネージングディレクターとのインタビューから情報が使用されました。



ティーザーの写真: モダンマーケット



PSタイプミス、リンク切れ、またはその他の不正確さに気付いた場合は、個人的なメッセージを書いてください。すぐに修正します。



All Articles