自分 の バックテスター を 作ら なけれ ば なら ない か

作者: リン・ハーン優しさ作成日: 2019-03-19 14:03:46, 更新日: 2019-03-19 14:08:48 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19 更新日: 2019-03-19

この記事について

この記事では,数値取引を始めてみている方や,この分野での経験のある方にも適しています.この記事では,バックテストの一般的な落とし穴や,珍しいものについて説明します!

また,バックテストのメカニズムや,これらのアプローチを実装するソフトウェアの状況も検討します.その後,今日利用可能なオープンソースツールの普及にも関わらず,自分のバックテストを作成する価値はあるかどうかを議論します.

最後に,イベント駆動バックテストシステムの内側と外側について議論します. このトピックは,私がQuantStartで前回の投稿で頻繁に取り扱ってきたものです.

バックテスト は 何 です か

バックテストは,過去の価格データに取引戦略の規則の適用です. つまり,資産のポートフォリオへの入入出のメカニズムを定義し,これらのルールを資産の歴史的な価格データに適用すると,過去に達成されたかもしれないこの"取引戦略"のパフォーマンスを理解しようとします.

"すべてのモデルが間違っているが,いくつかは有用だ" と言われてきました.バックテストも同じです.それでは,どんな目的に役立つのでしょうか?

バックテストは,戦略のルールの一連のライブトレードが価値あるかどうかを決定するのに役立ちます.それは,戦略が過去にどのように機能していたかについてのアイデアを提供します.本質的には,実際の資本を割り当てる前に悪い戦略ルールをフィルタリングすることができます.

バックテストを生成するのは簡単です.残念ながらバックテスト結果はライブ取引の結果ではありません.代わりに現実のモデルです.通常多くの仮定を含むモデルです.

ソフトウェアのバックテストには2つの主なタイプがあります. ループ型システムとイベント型システムです.

バックテストソフトウェアを設計する際には,常に正確性と実装の複雑性との間のトレードオフがあります.上記の2つのバックテストタイプは,このトレードオフのスペクトルの両端を表しています.

バックテスト の 罠

バックテストには多くの落とし穴があります.それらはすべてバックテストが現実のモデルにすぎないという事実に関係しています.より一般的な落とし穴には以下が含まれます:

  • インサンプルのテスト - これは,同じデータを使用して,取引モデルを訓練し,テストするときに起こります.これは,ほぼ常にライブ取引で見られるよりも戦略のパフォーマンスを膨らませます.これは,見られないデータで検証されていないため,トレーニングデータと大きく異なる可能性があります.本質的には,これはオーバーフィッティングの一種です.
  • 生き残りのバイアス - S&P500のような株式市場指数では,リストアップとリストアウトの周期的なプロセスが起こり,時間とともに構成が変化する.バックテストの上でこの変化する構成を考慮しないことで,取引戦略は,低市場資本化のためにインデックスから落ちたすべての企業を無視することによって自動的に"勝者を選ぶ". したがって,長期バックテストを行うときに,常に生存偏見のないデータを使用することが必要です.
  • Look-Ahead Bias - 将来のデータは,非常に微妙な方法でバックテストに潜入することができます.特定の時間枠にわたって線形回帰比を計算することを検討してください.この比が同じサンプルで使用される場合,我々は暗黙に将来のデータを導入し,その結果,パフォーマンスを膨らませる可能性があります. イベント駆動バックテストは,以下のようにこの問題を解決します.
  • 市場体制の変化 - これは,株式市場の"パラメータ"が静止していないという事実に関係している.つまり,株の動きを生成する基礎プロセスには,時間とともに恒定であるパラメータが必要ない.これは,パラメータ化されたモデル (多くの取引戦略が例である) を一般化することを困難にし,したがって実績は,ライブ取引よりもバックテストで高い可能性があります.
  • トランザクションコスト - 多くのFor-Loopバックテストは,手数料や手数料などの基本的なトランザクションコストさえも考慮していない.これは,バックテストが主にトランザクションコストなしで実施される学術論文において特に当てはまります.残念ながら,トランザクションコストなしで非常に収益性の高い戦略を見つけることはあまりにも簡単ですが,実際の市場にさらされると実質的な損失を伴う.典型的なコストには,スプレッド,市場影響,スリップが含まれます.これらすべては現実的なバックテストで説明されるべきです.

バックテストでは,より微妙な問題もありますが,あまり議論されていませんが,それでも考えることが非常に重要です.

  • OHLCデータ (OHLCデータ) - Yahoo Financeなどの無料サイトから取られた日々のデータであるOHLCデータは,しばしば複数の取引所のフィードを組み合わせている.したがって,その日の高値と低値を含む,より極端な値がライブ取引システムによって得られる可能性は低い.そのような"オーダールーティング"はモデルの一部として考慮する必要があります.
  • 能力制限 - バックテストを行うとき,無限の資金を使用することは簡単です.しかし,実際には,資本と利回りは厳しく制限されています.また,リスク管理目的のために,私たちの取引が実際に市場を動かす可能性のあるスモールキャップ株式の平均日用量 (ADV) 制限についても考える必要があります.
  • ベンチマーク選択 - バックテストされた戦略が評価されるベンチマークの選択は良いものですか? 例えば,商品先物取引をしている場合と,S&P500米国株式指数に対して中立であれば,S&P500をベンチマークとして使用することは本当に意味がありますか?他の商品取引基金のバスケットはより意味がありますか?
  • 安定性 - バックテスト内での戦略開始時間を変化させることで,結果は劇的に変化するのでしょうか? バックテストが月曜日か木曜日に開始されるかは長期戦略にとって重要ではありません. しかし,初期条件に敏感であれば,ライブ取引時の将来のパフォーマンスをどのように信頼的に予測することができますか?
  • オーバーフィッティング/バイアス・バリエンス・トレードオフ - 我々は,この点について少し前述した.しかし,オーバーフィッティングは,すべての (監督される) マシンラーニング方法にとってより広範な問題である.この問題を解決する唯一の真の方法は,クロスバリダーション技術の慎重な使用である.それにもかかわらず,我々は,トレーニングセットのノイズに単に取引戦略を適応させていないことを非常に注意する必要があります.
  • 心理的寛容性 - 量子金融では,心理学はしばしば無視される.それはアルゴリズムシステムを作成することで (推定) 削除されるためである.しかし,それは常に潜み込む.なぜなら,量子は,生動に展開されたら,システムを"tinker"または"override"する傾向がある.さらに,バックテストで許容されるように見えるものは,生動取引で胃が揺れる可能性があります.あなたのバックテストされた株式曲線が,取引の歴史のどこかで50%の引き下げを示している場合,あなたは生動取引シナリオでもこれを乗り切ることができますか?

バックテストの問題について多くのことが書かれています.タッカー・バルチとエルニー・チャンはどちらも問題を詳細に検討しています.

ループ型バックテストシステム

For-Loop Backtesterは,最もシンプルなバックテストシステムであり,単純性と透明性のために,量子ブログ投稿で最もよく見られる変種です.

基本的には,For-Loopシステムは,すべての取引日 (またはOHLCバー) にわたって繰り返され,閉店時の移動平均値などの資産の価格 (s) に関連する計算を実行し,その後特定の資産 (しばしば同じ閉店価格,時には翌日) にロングまたはショートする.繰り返しは継続する.その間,総資本は追跡され,保存され,後に株式曲線を作成する.

このようなアルゴリズムの擬似コードです

for each trading bar:
    do_something_with_prices();
    buy_sell_or_hold_something();
    next_bar();PythonCopy

戦略のルールセットのパフォーマンスの"初見"を得るのに魅力的になります.

利点

For-Loop バックテストは,ほぼすべてのプログラミング言語で実装し,実行が非常に迅速である.後者の利点は,取引の設定を最適化するために多くのパラメータ組み合わせをテストできるということです.

欠点

For-Loop バックテストの主な欠点は,かなり非現実的であることである.特に追加しない限り,トランザクションコスト能力がないことが多い.通常,注文はすぐに市場価格で満たされる.したがって,スプレッドの説明はしばしば行われない.

バックテストシステムとライブ・トレードシステムの間には,コードの再利用が最小限である.これは,コードを2回書く必要があることを意味し,より多くのバグの可能性を導入する.

For-Loop バックテストは,インデックスでバグが発生したため,Look-Aheadバイアスになりやすい.例えば,パネルインデックスでi,i+1,またはi-1を使用するべきだったのでしょうか?

For-Loop バックテストは,フィルタリングメカニズムとしてのみ使用されるべきです.明らかに悪い戦略を排除するためにそれらを使用できますが,強いパフォーマンスに対して懐疑的であり続けなければなりません.さらなる研究がしばしば必要です. 戦略は,バックテストよりもライブ取引でよりよく機能することがまれです!

イベント駆動バックテストシステム

イベント駆動バックテストは,スペクトラムの反対側にある.彼らはライブ・トレード・インフラストラクチャの実装にはるかに近い.したがって,バックテストとライブ・トレードパフォーマンスとの違いはしばしばより現実的である.

このようなシステムは,大きな"while"ループで実行され,継続的に"event queue"で異なるタイプの"event"を探します.潜在的なイベントには以下が含まれます:

  • Tick Events - 新しい市場データの到着を意味する
  • シグナルイベント - 新しい取引信号の生成
  • オーダーイベント - 市場ブローカーに送信する準備中のオーダー
  • 記入イベント - 市場ブローカーからの記入情報

特定のイベントが特定されると,インフラストラクチャ内の適切なモジュール (s) に転送され,そのイベントを処理し,次にキューに戻る新しいイベントを生成する可能性があります.

イベント駆動バックテストシステムの偽コードは以下のとおりです

while event_queue_isnt_empty():
    event = get_latest_event_from_queue();
    if event.type == "tick":
        strategy.calculate_trading_signals(event);
    else if event.type == "signal":
        portfolio.handle_signal(event);
    else if event.type == "order":
        portfolio.handle_order(event);
    else if event.type == "fill":
        portfolio.handle_fill(event)
    sleep(600);  # Sleep for, say, 10 minsPythonCopy

ポートフォリオハンドラーモジュールに大きく依存していることがわかります.このようなモジュールは,以下のとおりイベント駆動バックテストシステムの"心臓部"です.

利点

イベント駆動バックテスターを使用する利点はいくつかあります.

  • 前向きのバイアスの排除 - メッセージ伝達設計により,イベント駆動システムは,少なくとも取引レベルでは,通常前向きのバイアスから自由である.しかし,事前に研究されたモデルを通じて間接的にバイアスを導入する可能性があります.
  • コード再利用 - ライブ取引では,データハンドラーと実行ハンドラーモジュールを交換するだけです.すべての戦略,リスク/ポジション管理,パフォーマンス測定コードは同一です.これは通常,修正すべきバグがはるかに少ないことを意味します.
  • ポートフォリオレベル - イベント駆動システムでは,ポートフォリオレベルで考えるのがはるかに簡単です. グループや戦略の導入は,ヘッジ・インstrumentと同様に簡単です.
  • 適切なリスク/ポジション管理 - リスクとポジション管理を簡単にモジュール化できます.ケリー基準などのレバレッジと方法論を簡単に導入できます.また,セクター露出警告,ADV制限,波動性制限,非流動性警告も簡単に含まれます.
  • リモートデプロイ/モニタリング - コードのモジュール化性質により,クラウドでデプロイしたり,仮想システム上の交換所の近くでソフトウェアを共同配置したりすることが容易になります.

欠点

利点は明らかですが,このような複雑なシステムを利用する際には,いくつかの大きな欠点もあります.

  • プログラミングは難しい - 完全にテストされたイベント駆動システムを構築するには,おそらく数週間または数ヶ月間のフルタイム作業が必要になります.この結果として,フリーランス/契約量子開発者にとって常に健全な市場があります!
  • オブジェクト指向を必要とする - モジュール式設計では,オブジェクト指向プログラミング (OOP) 原則を使用し,したがってOOPを容易にサポートできる言語を必要とします.しかし,これはユニットテストをはるかに直接的にします.
  • ソフトウェアエンジニアリング - ログ付け,ユニットテスト,バージョン制御,継続的統合などの優れたソフトウェアエンジニアリングの専門知識と能力を必要とする可能性が高い.
  • 遅い実行 - コードがメッセージを送信する性質により,ベクトリ化されたFor-Loopアプローチと比較して実行がはるかに遅い.複数のパラメータの組み合わせは,最適化されていないコードで計算するのに時間がかかる.

ソフトウェア 景観

このセクションでは,For-Loopとイベント駆動システムの両方に存在するソフトウェア (オープンソースと商業の両方) を検討します.

For-Loopのバックテストでは,主に使用されているプログラミング言語/ソフトウェアは,Python (Pandasライブラリを含む),R (Quantmodライブラリを含む),MatLabなどである.量子ブログには多くのコードスニペットが掲載されている.Quantcracyではこのようなブログのリストが多数掲載されている.

イベント駆動システムの市場は,クライアント/ユーザがソフトウェアがバックテストとライブ取引の両方を1つのパッケージで実行できるようにすることを望むため,はるかに大きい.

高価な商用製品にはDeltixやQuantHouseが含まれる.それらはしばしば量子ヘッジファンド,ファミリーオフィス,プロペラ取引会社で見つけられる.

クラウドベースのバックテストとライブ取引システムは比較的新しい. Quantopianはバックテストとライブ取引の両方の成熟したウェブベースの設定の例です.

機関企業もしばしば自社ソフトウェアを構築する.これは規制の制約,投資家関係/報告,監査可能性の組み合わせによる.

小売クォントは,クォントピアンの"クラウド+データ"アプローチを使用するか,Amazon Web Services,Rackspace Cloud,Microsoft Azureなどのクラウドベンダーを使用して,DTN IQFeedやQuantQuoteなどの適切なデータベンダーを使用するか選択できます.

オープンソースソフトウェアに関しては,多くのライブラリが利用可能である.それらは主にPythonで書かれています (以下に概説する理由のために),Zipline (Quantopian),PyAlgoTrade,PySystemTrade (Rob Carver/Investment Idiocy) およびQSTrader (QuantStartの独自のバックテスト) が含まれています.

しかし,最も重要な側面の1つは,あなたが最終的に使用するソフトウェアが何であれ,それは同様に堅牢な金融データの源と組み合わせなければならないということです.そうでなければ,あなたは"ゴミを入れ,ゴミを出す"状況にあり,あなたのライブ取引結果はバックテストと大幅に異なります.

プログラミング言語

ソフトウェアは詳細を私たちのために処理しますが,私たちの取引戦略の複雑さを拡大したいときにしばしば重要な多くの実装の詳細を隠します.ある時点で,自分のシステムを書くことがしばしば必要であり,最初の質問は"どのプログラミング言語を使用すべきですか?"です.

量的なソフトウェア開発者の経歴があるにも関わらず,私は個人的に"言語戦争"に関心を持っていません. 一日に限られた時間しかありません. そして,量として,私たちは物事を成し遂げなければなりません - インターネットフォーラムで言語デザインを議論する時間を無駄にしないでください!

機能するものにのみ 興味を持つべきです

パイソン

Pythonは,学習が非常に簡単で,プログラミングを学ぶときに最初に接触する言語である.考えられるほぼあらゆる形式のデータを読み,他の"サービス"と非常に簡単に通信できる標準的なツールライブラリを持っています.

NumPy,SciPy,Pandas,Scikit-Learn,Matplotlib,PyMC3およびStatsmodelsでいくつかの例外的な量子/データ科学/機械学習 (ML) ライブラリを持っています.MLと一般的なデータ科学には素晴らしいですが,より広範な古典的な統計方法とタイムシリアル分析には少し苦しんでいます.

For-Loop と Event-Driven バックテストシステムの両方を構築するのに最適です.実際は,端から端への研究,バックテスト,展開,ライブ取引,レポート,モニタリングを直接許可する唯一の言語の一つです.

おそらく最大の欠点は,C++などの他の言語と比較して実行がかなり遅い点である.しかし,この問題を改善するために作業が行われ,時間が経つにつれてPythonはより速くなりつつある.

R

Rは,完全な"ファーストクラスプログラミング言語"ではなく,統計プログラミング環境である.これは主に時間列,古典/周波数統計,ベイジアン統計,機械学習,探査データ分析のための高度な統計分析を実行するために設計された.

For-Loop バックテストに広く使用されているが,イベント駆動システムやライブ取引には特に適していない.しかし,戦略研究では優れている.

C++

C++ は極めて高速であることで有名である.ほぼすべての科学的高性能コンピューティングは,Fortran または C++ で実行される.これが主な利点である.したがって,高周波取引を検討している場合,または大型組織でレガシーシステムに取り組んでいる場合,C++ は必要である可能性が高い.

ストラテジカルなタイプであるため,PythonやRと比較してデータを簡単に読み込み,読み込み,フォーマットすることがかなり難しい.

比較的古いにもかかわらず,最近はC++11/C++14の導入とさらなる標準の改良により大幅に近代化されています.

他の人?

また,Java,Scala,C#,Julia,および多くの機能言語をご覧ください.しかし,私の推奨は,量子取引コミュニティがはるかに大きいため,Python,Rおよび/またはC++に固執することです.

自分 の バックテスト を 書く べき です か

答え: はい!

独自のイベント駆動バックテストシステムを書くことは,素晴らしい学習経験です. まず,それは特定の戦略を修飾する時間を費やすことではなく,あなたの取引インフラストラクチャのすべての側面を検討することを強制します.

商用またはFOSSバックテストのベンダーに尋ねるべき膨大な数の質問を提供します.

例えば,現在の実況システムとバックテストシミュレーションの違いは?

  • アルゴリズムの実行と命令のルーティング?
  • スプレッド,手数料,スリップ,市場影響?
  • リスク管理とポジションサイズ?

イベント駆動システムを書くのは 簡単でも 簡単でもありませんが この経験は 量子トレーディングのキャリアにおいて 大きく教育的な利益をもたらします

イベント駆動バックテスト設計 101

どのようにしてこのようなシステムを 作るのでしょう?

始めるための最良の方法は,Zipline,QSTrader,PyAlgoTrade,PySystemTradeなどをダウンロードし,ドキュメントとコードを読み取ってみることです.それらはすべてPythonで書かれています (上記で述べた理由のために).そして幸いにもPythonは偽コードを読むようなものです.つまり,それは非常に簡単です.

また,Event-Driven バックテストデザインに関する多くの記事を書きました.ここで,システムの各モジュールの開発を案内します.

その日の専門家である必要はないことを覚えておいてください. ゆっくりと,日々,モジュールごとに,それを行うことができます. もし助けが必要な場合は,いつでも私や他の意欲的な量子ブロガーに連絡することができます. 私の連絡先メールの記事の終わりを参照してください.

現在,多くのイベント駆動バックテストシステムでよく見られるモジュールについて説明します. リストは完全ではありませんが,そのようなシステムがどのように設計されているかについての"味"を与えるべきです.

証券マスターデータベース

プロフェッショナルなシステムは Yahoo金融から CSV ファイルが数個だけではありません!

その代わりに,PostgreSQL,MySQL,SQL Server,またはHDF5などの"ファーストクラスの"データベースやファイルシステムを使用します.

理想的には, 取引のスプレッドを把握できるので, チケットレベルのデータを入手し, 保存したいと考えます. また,必要に応じて, 低周波のOHLCバーを作ることもできます.

株式の分割や配当などの企業活動や 存続偏見 (株式のリスト解除) の対処や 取引所の時区間の違いを常に把握する必要があります

生産品質のデータベース技術が成熟し,フリーでオープンソースであるため,個人/小売企業はここで競争することができます. Quandlのようなサイトを通じてデータ自体は安くなり,民主化されています.

市場や戦略はまだたくさんありますが 大手ファンドが興味を持つには小さすぎるのです これは小売量取引業者にとって肥沃な土壌です

取引戦略

イベント駆動システムにおける取引戦略モジュールは,一般的に新しい市場データに対して何らかの予測またはフィルタリングメカニズムを実行します.

このモジュールは,ポジションサイジングモジュールを介して実行される量を生成するように設計されていません.

クワントブログの議論の95%は,通常,取引戦略を中心に回ります.私は個人的に20%くらいでなければならないと考えています.これは,より多くのアルファを持つ戦略を追いかけるよりも,適切なリスク管理とポジションサイジングを通じてコストを削減することによって期待されるリターンを増加させることがはるかに簡単だと思います.

ポートフォリオと注文管理

イベント駆動バックテストの"ハート"はポートフォリオ&オーダー管理システムである.これは最も開発時間と品質保証テストを必要とする領域である.

このシステムの目的は,リスクを最小限に抑え,取引コストを削減しながら,現在のポートフォリオから望ましいポートフォリオへと移行することです.

このモジュールは,システムの戦略,リスク,ポジションサイズ,オーダー実行能力を結びつけ,また,ブローカーの独自の計算を模倣するためにバックテストしながらポジション計算を処理します.

このような複雑なシステムを使用する主な利点は,単一のポートフォリオでさまざまな金融商品を扱うことを可能にすることである.これはヘッジ付きの機関型ポートフォリオに必要である.このような複雑性はFor-Loopバックテストシステムでコードすることは非常に難しい.

リスクとポジション管理

リスクマネジメントを独自のモジュールに分割することは非常に有利である.モジュールはポートフォリオから送信されるオーダーを変更,追加または拒否することができます.

特に,リスクモジュールは,市場中立性を維持するためにヘッジを追加することができます. セクター露出またはADV制限によるオーダーのサイズを減らすことができます. 差幅が幅広くすぎたり,取引サイズに比べて手数料が大きすぎたりした場合,完全に取引を拒否することができます.

単一のポジションサイジングモジュールは,ケリーレバレッジなどの波動性推定およびポジションサイジングルールを実装することができます.実際には,モジュールアプローチを使用することで,戦略または実行コードに影響を与えることなく,ここで広範なカスタマイズが可能になります.

このようなトピックは量子ブログ圏ではよく表現されていない.しかし,これはおそらく機関と一部の小売トレーダーの取引について考える方法の最大の違いである.より良い収益を得るための最も簡単な方法は,この方法でリスク管理とポジションサイジングを実装し始めることです.

実行処理

市場の中央に 市場が満たされる保証はありません

能力,スプレッド,手数料,スリップ,市場影響,その他のアルゴリズム実行問題など 取引上の問題を考慮する必要があります そうでなければ,バックテストの収益は 大きく過大評価される可能性があります

イベント駆動システムのモジュール的なアプローチにより,BacktestExecutionHandlerをLiveExecutionHandlerと簡単に切り替えてリモートサーバーに展開できます.

簡単に複数のブローカージーを追加できます.これは,これらのブローカージュがシンプルなアプリケーションプログラミングインターフェイス (API) を持っていることを前提に,そのシステムとインタラクションを行うためにグラフィックユーザーインターフェイス (GUI) を利用することを強制しません.

認識すべき問題の一つは,第三者のライブラリとの"信頼性"である.ブローカージーと話すことを容易にするようなモジュールがたくさんあるが,自分でテストを行う必要がある.大規模な資本を投入する前に,これらのライブラリに完全に満足していることを確認してください.そうでなければ,これらのモジュールのバグのためだけに多くのお金を失う可能性があります.

業績と報告

小売クォントは,機関クォントが利用する洗練された報告技術を利用できるし,するべきである.そのようなツールには,ポートフォリオとそれに対応するリスクのライブ・ダッシュボード,バックテスト・エクイティとライブ・エクイティの差またはデルタ,取引コスト,収益分布,高水印 (HWM),最大引き上げ,平均取引遅延,ベンチマークに対するアルファ/ベータなどのすべての通常のメトリックが含まれます.

このインフラストラクチャに一貫した漸進的な改善が必要である.これは,バグを排除し,貿易遅延などの問題を改善することによって,長期的に見れば収益を上げることができます.単に"世界最大の戦略" (WGS) を改善することにこだわらないでください.

WGSは最終的にアルファ衰退により侵食する.他の者は最終的に利点を発見し,リターンを仲裁する.しかし,堅牢な取引インフラストラクチャ,堅牢な戦略研究パイプライン,継続的な学習は,この運命を避けるための素晴らしい方法である.

戦略開発よりも"退屈"かもしれませんが 収益が向上すると 退屈性が大幅に減ります

配備と監視

リモートサーバーへの展開と,このリモートシステムの広範な監視は,機関レベルのシステムにとって極めて重要です.小売業者もこれらのアイデアを活用することができます.

堅牢なシステムは,遠隔でクラウドに展開され,または交換所の近くに位置する必要があります.家庭ブロードバンド,電源,その他の要因は,家庭デスクトップ/ラップトップを使用することが信頼性が低いことを意味します.しばしば,最悪のタイミングで失敗し,かなりの損失につながる.

リモートデプロイを検討する際の主な問題は,CPU,RAM/スワップ,ディスクおよびネットワークI/Oなどの監視ハードウェア,システムの高可用性および冗長性,バックアップおよび復元計画を通じてよく考えられたシステム,システムのすべての側面の広範なログ ainsiと継続的な統合,ユニットテストおよびバージョン制御です.

マーフィーの法則を覚えてください 失敗する可能性があるなら 失敗するでしょう

Amazon Web Services,Microsoft Azure,Google,Rackspaceなど,比較的簡単なクラウドデプロイメントを提供する多くのベンダーが提供されています.ソフトウェアエンジニアリングタスクのベンダーには,Github,Bitbucket,Travis,Loggly,Splunk,その他多くのベンダーがあります.

終わり の 考え方

量子トレーディングでは 簡単な解決法はありません 成功を収めるためには 努力と学習が必要です

初心者 (そして中級者) の大きな障害は,ベストな"戦略"に過剰に集中することである.そのような戦略は,必ずアルファ崩壊に屈し,利益を失ってしまう.したがって,ポートフォリオに追加するための新しい戦略を継続的に研究することが必要である.本質的には,"戦略パイプライン"は常に満タンであるべきです.

また,取引インフラストラクチャに多くの時間を投資する価値があります. 展開と監視などの問題に時間を費やしてください. 収益性は,取引収入を得ることと同じくらいコストを削減することです.

自分のバックテストシステムを書き直すのは簡単です.それを利用して継続的に改善したり,ベンダーを見つけ,自分のシステムを構築したときに発見したすべての質問を彼らに尋ねることができます.それは間違いなく商用で利用可能なシステムの限界を認識させます.

最後に,常に読み,学び,改善してください. 貿易のあらゆる側面について議論する教科書,貿易誌,学術誌,量子ブログ,フォーラム,雑誌がたくさんあります. より高度な戦略アイデアのために,SSRNとarXiv - 定量金融をお勧めします.


もっと