バックテストは,定量取引と伝統的な取引の最も異なる場所である.歴史上起こった実際の市場データによると,シミュレーション戦略信号は迅速に取引を誘発し,対応し,パフォーマンスレポートおよびその他のデータが一定期間取得される.国内外の株式,商品先物,外貨その他の市場では,バックテストは戦略開発の最も重要な構成要素である.
前回の章では,主流プログラミング言語の基礎を学び,これらのプログラミング基盤を使用して簡単な取引戦略を書く方法を教えました. 道のりは半分以上経ったと言えるでしょう. しかし,戦略が書き上げられたら,それはまだ実際の市場環境から長い距離にあります. 戦略がモデルコンテンツを完全に実装し,スムーズに動作するまで,常にバックテスト,バックテスト,バックテスト,バックテストなどが必要です.
定量的な取引論理の観点から,取引戦略は実際に市場の認識と仮定の一連のものに基づいています.バックテストは,これらの仮定が安定しているか否かを決定することができます.歴史的な不安定な時代に,それはどのような損失をもたらすことができ,またこれらの損失の意思決定を防ぐことができます.
さらに,定量的な取引の観点から,バックテストは,将来の機能,スライディング価格,多度フィッティングなど,戦略論理のバグを検出するのに役立ちます. 戦略が実際の市場取引に使用できるという信頼できる証拠を提供します.
取引信号の正確性を確認する.
取引の論理とアイデアが実行可能か確認してください
取引システムの欠陥を発見し 元の戦略を改善する
過去のデータの妥当性を検証し 間違った戦略で高額な間違いを回避し フィルタリングや改善や最適化に役立ちます
取引戦略はバックテスト中に静的歴史的データに基づいているが,実際の取引のデータはダイナミックである.例えば:最高価格が昨日の閉店価格よりも大きい場合,ロングポジションを開く.このオープンポジション条件は,実際の市場で,Kラインが完了していない場合,最高価格がダイナミックであり,取引信号が往復する可能性があります.バックテスト中に,バックテストエンジンは,シミュレーションと合成できる静的歴史的データに基づいています.
未来関数は将来の価格を使用し,現在の条件が将来的に変更される可能性があることを意味し,同じ未来関数も
下記のように:ジグザグインジケーター関数はピークと低谷のターニングポイントを示します.最新のリアルタイム価格に応じて独自の値を調整できますが,現在の価格が変化した場合,ジグザグターニング関数の結果も変化します.このような将来の機能でこのインジケーターを使用すると,現在のオーダー信号が設定され,配置されることがありますが,この信号は後で定量化されません.
いわゆる"盗難価格"行為とは,過去価格を使用して取引することを意味します.例えば:最高価格が一定の固定価格よりも大きい場合,開口価格を使用してポジションを開く.この開口ポジション条件は"盗難価格"です.なぜなら,実際の市場で,最高価格が一定の価格よりも大きいとき,価格は一定の距離の開口価格よりも高くなり,その後,開口価格を使用してポジションを開くことは不可能です.しかし,バックテスト環境では,開口価格で仮説的にポジションを開くことができます.
また,もし価格格差が戦略によって設定された固定価格を超えると,バックテスト環境では取引信号が発生し実行できる別のケースもありますが,実際の市場で,明らかに実行できません.
第"タイプ:実際の市場では,一部の取引所で最大値上昇と減少の日々の制限があります.しかし,バックテスト環境では,注文を実行することが可能です.
2つ目は,価格優先度と時間優先度である交換オーダーマッチングメカニズムです.市場オーダー深さのいくつかの種類は,実行を待っている膨大な数のオーダーを持つことが多いです.実際の市場で,実行する前に注文を待つ必要があります.時にはあなたの注文は実行されません.しかし,バックテスト環境では,待機せずに待機中の注文は,任意の価格で実行されます.
第三に,アビトレージ戦略では,バックテストの利益は通常非常に高く,バックテストの操作がすべてのスプレッド価格を掴んだと仮定されるたびに非常に高い.実際の状況では,ほとんどの価格は実行不可能であり,または時には1つの方向または1つの取引目標のみが実行されます.一般的に,有利な方向または取引目標が最初に実行されることはほぼ確実です.その後,すぐに逆方向またはさまざまなアビトレージ戦略の注文を実行しようとします.そのような短い遅延期であっても,この取引機会のスプレッドは1点または2点以上の価格ポイントに費用がかかりますが,スプレッドアビトレージ戦略全体は利益の非常に少ない価格ポイントしか得られません.この種の状況はシミュレーション環境でバックテストするのが非常に困難です.実際の利益はバックテスト結果から遠いです.
第四:
この絵は真実の意味を示し 馬鹿げたモデルで 十分複雑で あらゆるデータに完璧に適応しています
量的な取引では,バックテストは歴史的データに基づきますが,歴史的データのサンプルが限られています.取引戦略のパラメータがあまりにも多く,または取引論理が複雑すぎると,取引戦略は歴史的データにあまりにも適応します.
定量戦略のモデリングプロセスは,本質的に,多くの見かけにランダムなデータから,局所的な非ランダムなデータを発見するプロセスです.統計知識に頼らない場合は,過剰なフィットメントの罠に簡単に陥ります.
モデルがうまく機能していないことを認めようとせず, モデルを最適化し続けます. モデルがうまく機能していないまで, モデルを最適化し続けます. モデルがうまく機能していないまで, モデルを最適化し続けます.
ウォール街には人気のジョークがあります. 投資に参加した市場には1000頭のサルがあるとします. 最初の年に500頭のサルが市場に失われた. 2年目の半ばには250頭のサルが残っています. 3年目の終わりには125頭のサルが残っています.
…
9年目には最後の猿が残りました.そしてあなたはそれを見て,それを見るほど,その顔はより身近に感じます.そして,ついに,金融雑誌の表紙を見て, "あ,それはウォーレン・バフェットですか?"と叫んだのです.
これは単なるジョークですが,現実世界での状況に映し出できます. 例えば,1000人のファンドマネージャーがいる場合,10年後に約10人のファンドマネージャーが10年連続で市場を上回ります. これはランダムな運と決定によって引き起こされる可能性があります.これらのファンドマネージャーのスキルには関係ありません.
左の図を選びます 重要なリターセーションなしで非常に堅調なパフォーマンスを示しています
しかし,右側が示すように,この曲線は,実際の状況です. 左側の曲線は,この多くのバックテストの中で,最も良いものです. つまり,左側の状況よりもはるかに悪いパフォーマンスがあります.
実際の取引環境では,価格は常に変動しています. 取引機会について楽観的であれば,注文を出す瞬間に価格が変化している可能性があります. したがって,主観的取引であれ定量的な取引であれ,滑り込み問題は避けられません.
しかし,バックテストは静的データに基づいているため,実際の取引環境をシミュレートすることは困難です.例えば:注文価格は1050で,実際の取引価格は1051かもしれません.この現象には,極端な価格動きにおける流動性の真空,ネットワーク遅延,ハードウェアおよびソフトウェアシステムの遅延,サーバー応答遅延など,多くの状況があります.
バックテスト
バックテストの報告は,滑りがないので,利益曲線はよく見えますが,バックテストと実際の市場での取引には違いがあります. したがって,バックテスト中にこのエラーを減らすために,我々は,購入価格を増やしたり減少させたりするために,2つの滑り点を追加しました.
バックテスト
上記のように,同じ戦略に 2 ポイントの滑り値を加えた場合,滑り値と無数のバックテスト結果は非常に異なっており,この戦略は改善または放棄する必要があることを意味します.特に,比較的高い取引頻度の戦略,バックテスト中に 1 ~ 2 ポイントの滑り値を加えると,バックテストを実際の取引環境に近いものにすることができます.
数量的な取引には多くの問題があるので,私の戦略が大丈夫であることをどのように証明できますか? 答えは簡単です,我々は最初にこの戦略でシミュレーション取引をする必要があります リアルマネーを使用する前にしばらく,取引価格と取引シミュレーション状況が戦略論理とほぼ同じである場合,少なくとも戦略論理に問題がないことを証明します.
いずれにせよ,経験豊富な取引システム開発者にとって,バックテストは必須事項です. なぜなら,戦略のアイデアが歴史的データで検証されるかどうかを教えてくれるからです. しかし,多くの場合,バックテストは将来が利益をもたらすことを意味しません. バックテストに穴がたくさんあるため,あなたが"価格"を支払った後,あなたはそれを理解するでしょう. そして,これらのレッスンはすべて実際のお金で積み上げられています. この記事は主に,道外や罠を減らすためです.
過剰 に 適合 する こと は 何 です か