機械学習と高頻度取引で50万ドルを稼ぐ方法-パート1

翻訳者から:最近、ITスペシャリストがどのようにお金を節約し、増やすことができるかというトピックがHabréで公開されました。 私は最近、金融のトピックに興味があり、技術的なスキルを使って年間50万ドルを稼ぐことができた男の興味深い話に出会いました。 彼の経験は多くの行商人にとって興味深いものであるように思えます(彼は既に交換での作業経験がありますが)ので、私はこのテキストを翻訳することにしました(非常に膨大なので、2つの部分があります)。



この投稿では、2009年から2010年までの高頻度取引で約50万ドルを獲得した方法について詳しく説明しています。 私は完全に独立して働いており、プログラムを使用しなくなったため、自由にすべてを伝えることができます。 ほとんどの場合、DAXとRussell 2000のインデックス先物契約で取引しました。



私の意見では、私の成功の鍵は、複雑な金融方程式の使用ではなく、多くの単純なコンポーネントをリンクし、アルゴリズムを最適化して最大の収益性を達成するための機械学習の原理を含む一般的なアルゴリズム手法の適用でした。 この記事を読むときには、特定の用語を知っている必要はありません。プログラムを立ち上げたとき、私は直感に頼っていました。 (残念ながら、当時、アンドリューNgの優れた機械学習コースはまだ一般に公開されていませんでした。リンクをクリックすると、現在のプロジェクトであるCourseTalkにアクセスできます。 。



まず、私の成功は単なる偶然の一致ではなかったことを示したいだけです。 私のプログラムは1日に1000〜4000のトランザクション(「ロング」と「ショート」の両方)を実行しましたが、時間の単位では常にいくつかの契約しか開いていませんでした。 これは、突然の成功の可能性がすぐに平均化されたことを意味します。 また、私は1日あたり2,000ドル以上を失ったことがなく、1か月の間に損失を見たことがありません。





(修正:これらは手数料を差し引いた指標です)



そして、これは日中の私の収入の変動を示すグラフです。 このチャートには過去7か月が含まれていないことに注意してください。なぜなら、量が増えなくなるとすぐに、私はそれらを入力する動機を失ったからです。







私の株式取引の経験



私の自動取引プログラムを使い始める前に、私はトレーダーとして「通常」モードで2年間働いていました。 それは2001年でした-電子商取引の形成中に、小さな投機家が良いお金を稼ぐ機会がありました。 私が働いていた方法は、ある意味ではコンピューターとギャンブルに似ていました。 成功するためには、迅速で規律があり、市場パターンを直観的に認識できる必要がありました。 私は約25万ドルを稼いだので、トレーニングにお金を払ったり、延期することさえできました。 利益!



次の5年間で、プログラミングスキルを向上させながら、いくつかのスタートアップを育てようとしました。 2008年まで取引に戻ることはほとんどできませんでした。 しかし、証券取引所でのゲームは、最後のスタートアップの売却からのお金が終わり始めた瞬間に私の財政状況を改善する良い機会に思えました-そのような活動は私に次のステップを検討する機会を与えてくれます。



取引用API



2008年、私は先物市場の普通のデイトレーダーで、T4と呼ばれるソフトウェアを使用しました。 コマンドを発行するためにカスタマイズされたホットキーの組み合わせを取得したかったので、T4にオープンAPIがあることを知ったとき、C#(APIで使用されるプログラミング言語)を学ぶために一生懸命働き、必要なものを作成しましたホットキー。」



APIを試してみたので、私は食欲を増すことに決めました。コンピューターに取引方法を教えたかったのです。 APIは、市場からのストリーミングデータと、取引所にコマンドを送信する簡単な方法の両方を提供します。これら2つのイベントを接続するロジックを作成するだけでした。



以下は、T4ポップアップウィンドウのスクリーンショットです。 私自身のプログラムを作成した後、同じインターフェースからコンピューター取引を観察できたことは特に良かったです。 ワーキングウィンドウで実際のチームがどのように表示され、どのように表示されなくなるか(自分で表示され、実際のお金に関連付けられています)を見るのは、同時に恐ろしく、刺激的でもありました。







独自のアルゴリズムの設計



当初、私の目標は、取引所での実際のゲームの前でさえ、合理的に確信できるシステムを作成することでした。 このような自信を得るために、できるだけ正確に市場の行動を再現できる取引シミュレーションフレームワークを作成する必要がありました。



[通常、彼らは交換のためにテストアクセスを使用しますが、国内のサイトではこのような機会があります。 また、多くのトレーダーは既製のフレームワークを使用して取引ロボットを開発します(ロシアの取引所には、主に支払われるそのような ソリューションいくつかあります)。 perev。]



実際の取引では、APIを介してストリーミングされる市場の更新を処理する必要があるため、シミュレーションモードでは、組織がデータファイルから市場の更新を読み取る必要がありました。 このデータを収集するために、APIに接続して市場の更新をタイムスタンプ付きで記録するためだけに、プログラムの最初のバージョンをインストールしました。 システムをテストおよびトレーニングするために、市場から最新の情報を収集するのに合計4週間かかりました。



基本的なフレームワークを使用しても、収益性の高い取引システムを作成する方法を理解する必要がありました。 判明したように、私のアルゴリズムは2つの個別のコンポーネントに分けられます。これらのコンポーネントは個別に検討します。







価格予測



おそらく、取引システムの明らかなコンポーネントは、価格がどのように変化するかを予測する機能です。 そして、私のシステムも例外ではありませんでした。 現在の価格を国内需要と国内供給の平均として定義し、価格が今後10秒間でどのように変化するかを予測するために着手しました。 したがって、私のアルゴリズムでは、1日を通して随時価格の位置を予測する必要があります。



インジケーターの作成と最適化



いくつかの指標を一度に作成し、それを利用して短期的に価格の動きを予測する能力を確認できました。 各インジケータは、正または負の特定の値を与えました。 このような指標の使用は、ほとんどの場合、プラスの値が成長に対応し、マイナスの値が市場の下落に対応することでした。



私のシステムにより、各インジケーターの予測の質を迅速に判断できるようになったため、多数のインジケーターを試して、どのインジケーターが最も正確に機能しているかを調べることができました。 多くの指標は変数を含む式によって定義されます-これらの式を知っているので、変数の最適な値を選択し、異なる値を使用して達成された結果のペアごとの比較を行うことができます。



最も有用であることが判明した指標は比較的単純で、私が取引した市場の最新データと、同様の証券が取引された他の市場の情報に基づいていました。



正確な価格動向予測



しかし、単に価格の上昇または下落を予測する指標を持っているだけでは十分ではありませんでした。 各インディケーターの各値が特定の価格変動をどれだけ正確に予測するかを知る必要がありました。 インジケーターの値を正確な価格に変換できる数式が必要でした。



これを達成するために、予測される値上げを50のグループに分配しました。これはインジケーター値の散布が異なりました。 これにより、Excelでグラフを作成できる値に基づいて、グループごとに一意の予測を行うことができました。 ご覧のとおり、予測価格の変化の確率はインジケーターの値とともに増加します。







このようなグラフに基づいて、結果の曲線に対応する数式を作成できました。 最初はこの「曲線にフィット」を手動で行いましたが、すぐにこのプロセスを自動化する小さなサブルーチンを作成しました。



ちなみに、すべてのインジケーターカーブに同様のグラフがあるわけではありません。 さらに、各グループの初期値がほぼ同じになるように、グループは対数的に分布しました。 また、インディケータの負の値(および対応する価格引き下げの予測)がモジュロで取られ、正の値で配置されたことにも注意してください(私のアルゴリズムは価格の増減でまったく同じように機能します)。



価格行動の明確な予測のための指標のレイアウト



この点に注意することが重要です。すべての指標が完全に独立しているわけではありません。 指標のすべての予測を単純に積み重ねて、そこから最終的な値を選択することはできませんでした。 追加された予測値を強調表示することが重要でした。これにより、各インジケータはすでに予測された値を補完しました。 それほど難しくはありませんでしたが、曲線の下で複数のインジケーターを同時に手動で調整した場合、注意する必要がありました-1つのインジケーターを変更すると他のインジケーターが変更される可能性がありました。



すべてのインジケーターを特定の曲線に同時に調整するために、オプティマイザーを設定して、各反復で予測曲線が指定された曲線の方向に30%だけ変化するようにします。 この30%のジャンプにより、予測曲線は少数の反復で安定しました。



現在、すべてのインジケーターが価格予測に精度を追加するだけであるため、すべてのインジケーターを一度に使用して、今後10秒以内に市場がどこにあるかについて明確な予測を得ることができます。



価格だけでは不十分な理由



このような市場の優位性があれば、私は金持ちになれるかもしれません。 しかし、市場は単なる市場価格ではなく、需要と供給で構成されていることを覚えておくことが重要です。 高頻度取引の成功は、最高の価格を提供する人にもたらされますが、これは簡単なことではありません。



収益性の高いトランザクションを完了できるシステムを作成する際の問題は、次のように特定できます。





続行するには...



All Articles