バックテスト/最適化 - ページ 7

 
lomme:
そうなんですね。

しかし、バックテストでは、最も細かい粒度も1分です。

1分足のバックテストでは、ティックデータでも結果が変わらないことは想像できます。

このデータをバックテスト した人はいるのでしょうか?また、エキスパートアドバイザーが過度のスキャルピングを使用しない限り、1Mのデータは大きな 違いを作らないことに同意し、その場合は秒でもカウントされます。

 

バックテストと最適化

まず注意しなければならないのは、最適化はあくまでも市場の動きや事実に基づいて既存のアイデアを検証するために使われるべきで、優れたトレーディングアイデアを発見するために使われるのではないということです。 トレーディングのアイデアが先でなければなりません。 過去のデータでうまくいったことが、将来はうまくいかないかもしれません。しかし、過去のデータで素晴らしい組み合わせを発見したのです。 しかし、この方法は、いくつかの市場にまたがって、トレーディングシステムの感度ではなく、使用すべきではないパラメータのセットを見つけるために使用することができます。 シミュレーション/バックテストのもう一つの使い方は、システムの弱点と強みを理解することです。 どのような場合にうまくいき、どのような場合に遅れるのか、そしてどのような場合に完全に失敗するのかを理解し、それらの問題を解決するために新しいアイデアを開発することができます。

このとき、バックテストで最も重要なのはデータであることを理解することが重要です。 バックテストは、数学的な分布ではなく、過去のデータに対するシミュレーションなので、様々な市場の状況を表す、様々なペアの良質なデータが必要です。 強気、弱気、横ばい、様々なボラティリティ。 システムがショックを含む様々な市場条件に耐えることができれば、それは取引に十分です。 代表的なデータがなければ、実際のマーケットでの結果は役に立ちません。

次に、結果の信頼性を高めるために、何回テストを行う必要があるかを決定する必要があります。 これは、十分に代表的な15〜30個のデータセットに対してバックテストを実行し、信頼区間を作成することを意味します。 これは、データが正規分布であると仮定していますが、金融データはそうではなく、左に偏り、右側に太い尾を引いています。 したがって、一つの選択肢は、実験を改善し、より信頼性の高いものにするために中心極限を使用することです。

Tradestationのバックテスターは終値を待たずにティックトレードができるので、メタトレーダーよりも信頼性が高いと思いますが、それはメタトレーダーのEAも同じことです。 メタトレーダーのバックテスターがひどいとは思いませんが、それは単に正しく使用する必要があり、シミュレーションのプロセスを理解せずに使用すると、常にオーバーフィッティングの結果と非現実的な期待につながります。 これは、資本の損失となります。 バックテスト、最適化、シミュレーションは、システムを改善し、システム間の改善を比較するために使用されるツールであり、システムを設計するアナリストの代わりではない ことを理解するために、いくつかのヒントを与えることを期待するすべてのこの本当にポイントです。 もしあなたがバックテストを使うなら、頭痛と資本の損失の多くを保存するために、シミュレーションの方法論を理解するための私の提案です。

もし私が本当にバックテストを行うつもりなら、そうするでしょう。そして、バックテストシステムをArenaやWitnessのようなシミュレーションソフトウェアにプログラムしようとしていますが、トレードステーションの能力に関心を持っています。

 

バックテストのチュートリアルとヒント

私はバックテストについて多くの話を見てきましたし、非常に多くの混乱があるように見えるので、私はむしろそれに関連するすべてのスレッドに投稿するよりも、私はここに情報を投稿することに決めました。

バックテストは、トレーディングシステムの改良を評価するために過去のデータを使用するシミュレーションの一形態です。

最初に理解しておくべきことは、シミュレーションはチャートソフトがツールであるのと同じように、ツールであるということです。 シミュレーションはそれ自体でアイデアを発見したり、改善したりするものではなく、アナリストが市場の基本的な特性を観察した上で行う必要があります。 通常、シミュレーションは過去のデータを用いてシステムを改善し、システムの出力のばらつきを抑えようとしますが、金融シミュレーションは特別なものです。 しかし、金融シミュレーションは特別なもので、私たちがコントロールできないデータのばらつきに対して、より良いパフォーマンスを発揮するようにシステムを変更しようとします。 そのため、市場の変化にあまり影響されない、ロバストなシステムが必要です。

シミュレーションにはいくつかの部分があります。 方法論、システム、そしてデータです。 この投稿の後で、これらのそれぞれについて詳しく説明します。 この情報がお役に立つことを願っています。

 

シミュレーションの方法

トレーディングシステムの改善を決定する場合、成功に導くために体系的であることが重要です。 幸いなことに、シミュレーションのための実証済みの方法が開発されました。最初の6つのステップと最後の5つのステップは、あなたの時間の約40%を取る必要があります。 実験にかかる時間は、全体の20%程度です。 その手順は次の通りです。

1.1. 問題を定義する - これはシミュレーションのプロセスで最も重要なステップです。 シミュレーション(バックテスト)を通じて何を達成しようとするのか、明確に述べなければなりません。 つまり、あなたのシステムは今どこでパフォーマンスが低下しているのか。 十分な速さでエントリーできないのか、十分な速さでエグジットできないのか、取引頻度が多すぎるのか、少ないのか。 2つのシステムを比較して、どちらがより価値があり信頼できるかを決めたいのでしょうか。 これらは有効な問題です。

2.2. プロジェクトの計画 - このステップは、実験を成功させるためのツールやロードマップがあることを確認するためのものです。 ほとんどの人はメタトレーダーやエクセルなどのソフトウェアで必要なものを持っていますが、もしかしたら自分でできるほどプログラミングの知識がないかもしれないので、助けを借りる必要があるかもしれません。 タイムラインは、実験が十分に早く終了しているかどうかを判断するのに役立ちます。

3.3.システムの定義 - 金融シミュレーションでは、このステップでは、あなたが取引する予定の市場とこれを行うためにあなたのシステムが使用するツールを決定することを含むだろう。 従来のシミュレーションとは異なり、できるだけ詳細に記述する必要があります。

4.4.モデルの概念化 - このステップでは、システムがどのように機能するかを概説し、取引システムにプログラムされるルールベースを開発します。 出来高、幅、勢い、オシレーター、サイクル、季節、行動テクニック、適応テクニック、リスクコントロール、資金管理、流通システムなど、あなたがカバーしたいと思うあらゆる側面を考慮することができます。

5.5.予備実験デザイン - このステップまでで、皆さんがこれらのアイデアを頭の中でかなり素早く解決できることを望みますが、終了後に結果を見直し、比較できるように、書き留めることは依然として重要です。 このステップでは、どのように実験を行うかを決めます。 実験計画については、別の記事で詳しく説明する予定です。

6.6.入力データの準備 - 良いデータは、すべてのシミュレーション、特に金融シミュレーションに不可欠です。 貧弱なデータは、あなたの結果を膨らませたり、萎ませたりする可能性があります。 十分なデータがない場合は、市場を代表するものではありません。 市場データの詳細については、別の記事を作成する予定です。 このステップでは、データを収集し、ソフトウェアで使用可能な形式に整理します。 メタトレーダーは、日付、時間、オープン、ハイ、ロー、クローズ、ボリュームの列を好むと思います。そして、それを実験に使う様々なデータセットに分割します。

7.7.モデル変換 - このステップでは、実際にシステムをプログラムします。この時点で、どのように構成され、様々な機能に分割されたかをよく理解しておくことで、スムーズな作業が可能になります。 通常、システムには、統合型と垂直型の2種類があります。 統合されたシステムは、ある特定の方法で一緒に動作し、垂直システムは、部品を追加したり削除したりすることができます。

8.8.検証と妥当性確認 - これは非常に重要なステップで、モデルが取引システムを表しているか、データが様々な市場状況を代表し、正確であるかを確認します。 ストラテジーテスターでは、サンプル実行後にチャートを開くことで、システムが予想通りに動作しているかどうかを視覚的に確認する良い方法です。

9.9. 最終的な実験デザイン - アイデアの検証後、メソドロジーを進める過程で必要であると認識したシステムの変更を行います。 これは、データを調べているうちに新しいアイデアに気づいたり、結果を満足させるために新しい報告手段が必要であることを意味します。

10.10.実験 - このステップでは、実験の反復を実行し、分析のための出力データを収集する。 これはおそらく、データを記録することも含むだろう。

11.11. 解析と解釈 - 実験を行い、出力データを収集した後、そのデータを解析し、解釈する必要がある。 ここで、システムの改良が有効な貢献となるか、そうでないかを判断することになる。

12.12. 実装と文書化 - 改良を最終的に実装し、結果を文書化して、シミュレーションの寿命を改善するために参照します。

 

実験計画法の拡張

シミュレーションを行う過程で何かを忘れてしまった場合、多くのメソドロジーのステップを何度も実行しなければならないことがあることに注意してください。 しかし、非常に重要なことは、実験計画です。

世の中には2種類のシステムがあります。 確率的なもの(結果が変動するもの)と決定論的なもの(結果が単一であるもの)です。 金融市場は天候に次ぐ究極の確率系である。 変動に満ちていて、日ごと、市場ごとに結果が大きく変わる。 しかし、私たちが望むのは、この非常に変動しやすいデータに、変動幅の少ない方法で反応し、リスクを減らしながらパフォーマンスを向上させるシステムなのです。 分散は自然界のルールであり、2つのタイプがあります。 ランダム分散と非ランダム分散です。 ランダムな変動はシステムに内在するものであり、完全に排除することはできません。 非ランダム分散はコントロールする必要があります。 これは、許容範囲外のパフォーマンスや、データの大きなスパイクやホール、停電、接続の喪失、不適切なプログラミングに対するシステムの反応などが含まれます。 安定したシステムとは、何らかの手段でこれらすべてを管理しているものである。

この実験のポイントは、システムが要求される性能(許容できない変動)を超えている箇所を特定し、それを改善しようとすることです。 ですから、最初のステップは、測定基準(測定値)を定義することです。 メタトレーダーは、ドローダウン、プロフィット・ファクター、パーセンテージ・グッド・トレードなど、多くの重要な指標を提供してくれます。 私たちは、エントリーシグナルとエントリーすべき場所の差など、これら以外のシステムの機能にも関心を持つかもしれません。 このような複雑な指標は、手動でプログラムしなければならないかもしれません。

シミュレーション/バックテストから収集することが重要な測定基準を定義した後、実験をどのように行うかを決定する必要があります。 市場データは確率的であるため、1回の実行(1セットの市場データに対するシステムの1回のテスト)だけでは、システムの性能に確信を持つには十分ではありません。 統計学的には数千回行うことが望ましいのですが、残念ながら私たちにはそれだけのデータも時間もありません。 実行回数は、データの分散に依存します。 これは市場データの分散ではなく、トレーディングシステムの性能の分散を意味します。 トレーディングの全ては分散を理解し、それをコントロールすることです。 この場合、強気、弱気、非トレンドなどあらゆる種類の市場を表現するために、十分に長い期間にわたって、おそらく15~30回の独立した実行(異なるデータセット/市場)を行うことが最善です。 非トレンドは、トレンドトレーディングのシステムがレンジトレーディングの市場にどのように対処するかを見るために、FXで表現するために最も重要かもしれませんが、それはあなたのシステムに依存します。

この情報から、結果の信頼区間を作成することができます。 信頼区間は、測定値がその範囲内に収まるように信頼できるレベルのパフォーマンス範囲です。 つまり、30個のデータセットのテストに基づいて、10万ドルから20万ドルの間で利益を上げることに90%の自信を持っていると言うことができます。 これは、シミュレーションに使用した市場データが、様々な市場の状況をどれだけ代表するものであったかに依存します。 もし、新しいものが一度も出てこなかったら、信頼区間と同じような結果になるわけがないのです。 信頼区間の計算は簡単で、 x(mean)+-(student t value for alpha/2)*(s/sqrt(n)) を使用します。 ここで,Student t 値は表で見つけることができ,n は標本サイズである. s は標準偏差,アルファは信頼水準で,90%なら0.9であろう. 平均は、問題の測定基準に対する結果の平均値です。

もし、2つの異なるシステムを比較するのであれば、仮説検定を読んでみてください。

つまり、私たちが学んだことは、何回実行するか、どれくらいの長さが必要か、何を表すべきか、そしてその意味を決定するためにどのように評価するかということです。 このセクションは多くの人にとってわかりにくいかもしれませんが、遠慮なく質問してください。

 

バックテスト・データの拡充

バックテストの方法論と実験方法、そして目的についてお話しました。 今回は、使用するデータについてお話したいと思います。

疲れてきたので、もし何か意味がなかったらごめんなさいね。

データは非常に重要で、適切に評価されるためにはいくつかの特徴を持たなければなりません。 データは十分な長さであること、パフォーマンスを行う条件を表していること、正確であること、そして有効であることです。

このことを拡大解釈すると、可能であれば、データは様々な市場の状況を何度も表すべきであるということです。 ブル、ベア、ハイボラ、ローボラ、価格ショック、レンジ相場、非トレンド相場、その他思いつくもの全てです。 多くの人がバックテストを行う際の間違いの1つは、1回だけ実行し、オプティマイザを実行し、取引システムの聖杯を見つけたと思うことです。 もし、本当に良い結果や悪い結果が出た場合は、データ、プログラミング、またはカーブへのオーバーフィッティングに問題がある可能性があることを常に覚えておいてください。 オーバーフィッティングとは、以前のデータに対してシステムを最適化し、非常にうまく機能させることです。 残念ながら、そのような市場環境には二度と出会えないでしょうし、システムは最適化されているので、新しい市場環境には非常に敏感で、すぐにクラッシュしてしまうでしょう。 代表性を持たせるためには、数年間、可能であれば数十年間のデータが必要であり、市場が統合されるなど大きな変化があった場合には、そのデータを含めるべきではないでしょうか。 私は、バックテスト用のデータとして、ある程度の条件を満たしていれば、マーケットデータはマーケットデータであると思いますので、ご自身の判断でお願いします。

マーケットデータを集めてテストするのは、長い試練です。なぜなら、希望するようなフォーマットではありませんし、調達するのに3倍以上の時間がかかるからです。

最終的にデータは独立したものでなければなりませんが、ドル・ペアがすべて高い相関性を持っている外国為替市場では、これが問題になることがあります。 これは、1つの市場内であっても、次のデータが最後のデータに相関または依存することを意味する自己相関でしばしば破壊されます。 第二の観測は、プロセスの期間を通じて同一に分布している必要があります。 ここでも金融市場の分布は常に変化していますが、基本的な形状は十分に近いと思われます。 最終的には、正規分布であるべきです。 これは価格が低いレベルに留まる傾向があるため、常に壊れ、むしろ価格分布と価格変動分布は左に偏り、予想される右側の厚い尾を持っています。 これは、私たちがお金を稼ぐことができるものですが、シミュレーションの基本的な前提に反しています。 これを補正する方法として、対数変換などの分析がありますが、通常は中心極限定理を用いた方が実験しやすいでしょう。 つまり、15回実行し、それぞれの実行値を他の15回の平均値とすれば、より正規分布に近くなり、より現実的な信頼区間となります。 しかし、バックテストの結果とあなたが取引する物理的なシステムとの間に相関関係がないことを忘れないでください。

他の多くのトピックも考慮されるべきで、次のようなことを後で行うかもしれません。

バックテストの手順

最適化

統計

確率

変換

実践的考察

分布とその理解

ランダムストリームとシンテックデータ

仮説検証

モンテカルロ最適化/メタトレーダーより高速化

しかし、それまでは、これがいくらか役に立ち、あなたがより良いバックテストを実行し、取引システムを実装する際に、より良い結果を達成できることを願っています。 ご質問はお気軽にどうぞ。

 

素晴らしい説明です。

サンキューCro2314

 

バックテストシステムについての簡単な質問です。

TradestationsはMetatraderよりバックテストに適して いるのでしょうか?

どなたか両方を使った経験のある方はいらっしゃいますか?

私の結論は、tradestationsのバックテストはmetatraderより進んでいるようですが、一方でmetatraderは無料で、tradestationは$$$の費用がかかります...

両者の違いについて何かフィードバックがあれば嬉しいです。

 

数人しか知らない

edit***May 27. その重要なことは、バックテストはシミュレーションの練習であり、シミュレータではないことに注意してください。よく動くと思われるシミュレーターはForex testerとしてこのサイトに掲載されています。 バックテスターとして使えますが、EAではまだ使えません。 シミュレーション/バックテストは、実際には、あなたの取引システムのパフォーマンスの統計を提供し、あなたが弱点を分析できるようにすることを意図しています。 究極的には、時間の経過に伴う自己資本の曲線の傾きのばらつきを小さくすることを試みているのです。 メタトレーダーのバックテスターが好まれない理由はそこにあるのではないでしょうか。 多分、シミュレーターを探しているのでしょう。 しかし、もしあなたが視覚的なパフォーマンスを求めているなら、ストラテジーテスターを 実行した後にチャートを開くだけで、EAがどのように取引されているのかを正確に見ることができます。 システムの検証にはとても役に立ちます。

実は、私はtradestationsのバックテスターを使った経験がほとんどありません。 しかし、いくつかの利点は認識しています。 メタトレーダーは終値を使用しますが、Tradestationはストラテジーテスターで終値を使用せず、日中(ティック)購入することができます(最新バージョンで実現)。 もし、あなたが非常に迅速に取引を行い、時々現れる2本または3本のバーの動きを捕らえようとするならば、あなたの戦略によっては、これはあなたのシステムに重大な結果をもたらす可能性があります。 しかし、終値を待つという多くのファンダメンタルズ戦略にも反しています。 もう一つの違いは、もちろんプログラミングに使用できる言語が両者で異なり、変数の合計などの一般的なタスクはtradestationの方が簡単なようです。 Finaly メタトレーダーではメモリの制限があり、tradestationではその制限がないという話を聞いたことがありますが、私は遭遇したことがありません。 メタトレーダーのようにEAがインジケータを画面に読み込まないなど、システム変数にどのような制限があるのかはわかりません。 また、バックテスト結果については、tradestationが提供する事前に書き込まれた統計情報の方がより堅牢であるように思われます。 トレードステーションにはいくつかの利点がありますが、バックテスターは、あなたが完全に自動化されたシステムを実行する場合、ソフトウェアと同じように反応する必要があることを覚えておいてください。 もしそうなら、自動売買に使っているのと同じソフトウェアでバックテストをすることをお勧めしますし、そうでなければ、驚かれるかもしれません。

しかし、多くの人とは異なり、私はメタトレーダーのバックテスターが正しく使用され、それがあなたのコードを実行する方法を理解していれば、想定通りに正確に動作すると信じています。 シミュレーションソフトは常にそうなので、欠点とは思っていません。 どんなソフトウェアを使うかは、そのソフトウェアから得られるデータをどう解釈するかということほど重要ではありません。 さて、わだかまりがあるので、この辺でやめておきます。

ところで、Felixさん、お褒めの言葉ありがとうございます。

 

私のバックテスターは 非常に遅いです。

時々速く、時々とても遅くなります。 なぜかわかりません。 ログに1.5GBのファイルを見つけたので、それを削除しましたが、まだ遅いです。 プログラムをバックテストする良い方法はないでしょうか? 私はメタトレーダーを使っていますが、しばしば20%のモデリング品質しかありません。