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

翻訳者から:技術のスキルを使って年間50万ドルを稼ぐことができた人について、私の注意を引き、行商人に訴えた記事( その1 )の翻訳を続けました。







完全なトレーディングシミュレーターの作成



そのため、インジケータをテストおよび最適化できるフレームワークがありました。 しかし、私はもっと何かをしなければなりませんでした-取引システム全体をテストして最適化できるフレームワークが必要でした。 コマンドを送信してポジションをオープンできるもの。 この場合、総利益と損失を最適化することができます-ある程度-1つの取引セッションの平均利益と損失。



このようなフレームワークを作成するのは簡単ではありません。ある意味では、正確にシミュレートすることさえ不可能ですが、できる限りのことをしました。 そして、私が直面しなければならなかったいくつかの質問があります:





注文の実行のシミュレーションを改善するために、APIを使用して実際の取引中に収集されたログを取得し、同じ期間の取引シミュレーション中に記録されたログと比較しました。 私はシミュレータを現実に非常に近い状態に近づけることができました。正確にモデル化できない瞬間については、出力結果が統計データに対応することを確認しようとしました(重要だと思われるメトリックについて)。



収益性の高い取引の確保



発注のシミュレーションモデルを使用して、シミュレーションモードで取引所にコマンドを送信し、条件付きの利益と損失を追跡することができました。 しかし、私のシステムは、いつどこで売買するかをどのように理解しますか?



価格行動の予測はシステムの出発点でしたが、話はそこで終わりませんでした。 次に、売買の5つの価格レベルごとにスコアリングシステムを開発しました。 これらのレベルには、国内需要の1つ上のレベル(買い注文)と国内供給の1つ下のレベル(売り注文)が含まれます。



いずれかの価格レベルのアカウントが指定されたしきい値よりも高い場合、これは、このレベルでシステムにアクティブな買い/売りオファーがあることを意味します。 スコアがしきい値を下回っている場合、アクティブな注文をキャンセルする必要があります。 これらの条件下では、私のシステムが購入の申し出を突然市場に出し、すぐにそれをキャンセルすることは珍しくありません(実際、そのような状況はモニター画面上の生きている人にとって怖いので、私はそのようなイベントが発生する可能性を最小限に抑えようとしました迷惑です)。



さまざまな価格レベルのアカウントは、次の要因に基づいて計算されました。





基本的に、これらの要因が売買の「安全な」ゾーンを決定します。 それ自体では、価格の振る舞いを予測することは状況を評価する不適切な方法です。なぜなら、購入オファーを出すときに自動的にポジションをクローズしなかったという事実を考慮していなかったからです。 。 現実には、誰かが与えられた価格で何かを私に売っているというまさにその事実は、取引の確率論的な見方を変えます。



このステップで使用されるすべての変数は、最適化の対象となりました。 価格変更の指標の変数を最適化したのと同じ方法で行われましたが、この場合、損益の下限に応じて変数を最適化しました。



私のプログラムが無視したもの



人が取引するとき、彼らはしばしば次善の決定につながる可能性のある感情や偏見の影響を深刻に受けます。 もちろん、これらの偏見が私のコードに反映することは望みませんでした。 したがって、私のシステムはいくつかの要因を無視しました:





リスク管理



私のアルゴリズムは、イベントの展開のどの段階で彼が取引をしたか、ポジションが現在ロングかショートかに関係なく等しく決定を下したので、彼は時々不利なポジションをオープンし、多額の金額で取引に失敗しました(成功した取引はありましたが)それほど大きくないため)。 しかし、リスクを管理するために私が何もしていないと思い込まないでください。



アクティブな取引日中に最大ポジションのサイズが時々大きくなる可能性があるため、単位時間あたり2契約のレベルで最大ポジションのサイズを厳密に設定しました。 また、日中の予想外の変化や自分のプログラムのバグから身を守るために、日中の最大損失額に制限を設けました。 これらの制限はコードで規定されていましたが、ブローカーに指示を出すことでさらに保険をかけました。 これらの予防措置を講じて、その後、重大な問題は発生しませんでした。



アルゴリズムを使用する



私のプログラムの作業が開始されてから、収益性が出始め、実際にテストできるようになるまで、6か月が経過しました。 正直なところ、ほとんどの場合、私はプログラミング言語を勉強しました。 プログラムの改善に取り組みながら、今後4か月間に利益の増加を記録しました。



毎週、過去4週間から収集したデータに基づいてプログラムを再トレーニングする必要があります。 しかし、これにより、最新の行動市場のトレンドを検索することと、アルゴリズムが有意な行動パターンを開発するのに十分な情報を確実に受け取ることのバランスが崩れることがわかりました。 トレーニングに時間がかかるようになったとき、Amazon EC2サービスを使用して8台の仮想マシンで実行できるように、トレーニングを中断しました。 その後、結果はローカルマシンで結合されました。



私の取引の最高点は2009年10月で、ほぼ10万ドルを稼ぎました。 その後、毎月利益が減少しているにもかかわらず、プログラムを改善するためにさらに4か月を費やしました。 残念ながら、今日、私は自分の最高のアイデアをすべて試したように思えます。なぜなら、私が使用したすべてが私をあまり助けてくれなかったからです。



プログラムを改善できないことや成長感の欠如に苛立ち、新しい方向性について考え始めました。 私は、高頻度取引を専門とする6つの異なる取引会社に手紙を書き、私のプログラムを購入して仕事に雇ってくれないかと尋ねました。 誰も答えませんでした。 それから、私は新しいスタートアップのアイデアを手に入れたいと思ったので、このビジネスを完全に放棄しました。



:この投稿をHacker Newsに投稿しました。 私は今、自分で似たようなことをしようとしている人々を保護しようとはしていないと言いたいだけです。 市場の誰かと競争しようとするためには、多くのスキルを備えた非常に優秀な同僚のチームが必要です。 私のプログラムを書いたときでさえ、lonersが成功することはめったにありませんでした(しかし、私はそのようなことを聞​​きました)。



ページの上部[ 元の投稿 -約。 翻訳者]「統計の操作」などの表現があるコメントがあり、実際の量[ 量/引用-両方の翻訳バージョンがロシア語の翻訳実務で使用されている -約 "投資家小売業者"と呼ばれています。 翻訳者]彼らは「撃つ必要がある」と言う。 これは非常に残念なコメントであり、現実とはほど遠いものです。 一方、私の記事にはもっと興味深いレビューがあります



注2 :この記事を読んだトレーダーから受け取ったよくある質問に対する回答のリストを公​​開しました。



All Articles