———–
はじめに-バックテストとは何か?-
バックテストとは、金融市場において、ある取引戦略が過去にどのような成果を上げたかを調べる方法です。
バックテストを行う事によって、自分がこれから取り入れたいと思っているトレード戦略が過去にどれだけ効果的だったかを検証する事が出来ます。
もし過去のデータにおいて、そのトレード戦略にある程度の有用性が認められれば(つまり収益性が見込まれるようであれば)、その戦略が未来の相場でも有効に機能する可能性があります。
もっとも、未来の事はだれにもわかりません。未来の相場が過去の相場と同じように動くかどうかは保証の限りではない訳で、開発したEAを実運用されるにあたってはバックテストだけでなく、フォワードテストも実施する必要があります。
※フォワードテストに関しては↓の記事で詳しく解説していますので、ご参照ください。
例えば、株やFXの相場に対して、実践したいと考えている取引戦略がある場合、その戦略を過去数年間にバックテストに適用してみて、「もしその期間中に実際にその戦略を使っていたらどれだけの利益または損失が出たか」を計算します。
このバックテストは特に、株式市場や外国為替市場(FX)などでの取引戦略を試す際に重要です。
なぜなら、実際のお金をリスクにさらす前に、戦略が理論上有効かどうかを確認できるからです。
バックテストを行うメリット
改めてバックテストを行う事のメリットを考えてみると、以下のような点が挙げられます
- 戦略の有効性の確認
- バックテストにより、取引戦略が過去の市場状況にどのように反応したかを知ることができます。これにより、その戦略が将来も成功する可能性があるかどうかの手がかりを得ることができます。
- リスクと損失の予測
- さまざまな市場条件での戦略のパフォーマンスを分析することにより、潜在的なリスクや損失の可能性を事前に理解することができます。これにより、実運用させる際に必要な資金管理及びリスク管理をどのように遵守していくか、の手がかりを得ることができます。
※MQL5にて開発したMT5用EAを実運用するにあたっての資金管理については↓の記事をご参照ください。
3:戦略の改善
- バックテストを通じて、戦略の弱点を特定し、それを改善するための気づきを得ることができます。例えば、特定の市場の状況で不十分なパフォーマンスを示す戦略を見つけ出し、当初の取引戦略を、より利益を生み出す方向に修正することが可能になります。
一例として「ブレイクアウト戦略」のEAを実戦運用させる事を検討しているとしましょう。
ブレイクアウト戦略では、通貨ペアの価格が特定のレンジを突破した際に取引を行います。
しかし、この戦略が特定の市場状況、例えば高いボラティリティがある時や主要な経済ニュースが発表される時にうまく機能しないことがバックテストによって明らかになるかもしれません。
このような場合、我々システムトレーダーはバックテストの結果を分析し、戦略の弱点を特定します。たとえば、高ボラティリティの時には取引を避ける、または重要度の高い経済指標発表の前後はポジションを持たない、といった調整を行うことができます。
このようなプロセスを辿る事により、戦略の全体的な効果を向上させることが可能になります。
※ブレイクアウト戦略には最高値・最安値の正確な情報取得が不可欠です。↓の記事で詳しく解説しておりますので宜しければご参照ください。
バックテストの実施手順
バックテストを行う際には、基本的に以下のステップに従って進めていきます。
戦略の決定
最初に、どのような取引戦略をテストするかを決めます。
取引戦略とは、端的に言えば
「いつ買い、いつ売るか」を定義するルールの集まりです。
例えば、「株価が特定の平均値を上回ったら買い、下回ったら売る」といった簡単なルールから始め、そういったルールを集積させて取引戦略を構築していきます。
※MQL5を使ったシステムトレードを行う場合は、決定した戦略をEAというシステムトレード専門プログラムで実行できるように開発するプロセスもここに含まれます。
過去の市場データ収集
取引戦略が決まったら、それをバックテストで検証する作業に移る訳ですが、バックテストを行う為には、過去の市場データが必要です。
このデータには通常、価格・取引量・その他の金融市場に関連する情報が含まれます。
多くのオンラインサービスや取引プラットフォームから、このようなデータを入手できます。
※MQL5を使ったシステムトレードを行う場合は、EAというシステムトレード専門プログラムを開発し、そのプログラムをメタトレーダ5(MT5)というソフトで動かします。
従って、過去の市場データもメタトレーダ5(MT5)にダウンロードさせる事になります。
メタトレーダ5でバックテストを行う場合の過去市場データ入手方法
※なお、メタトレーダ5(MT5)でバックテストを行う場合、以下のような手順を踏んで過去の市場データ(=ヒストリーデータ)を入手します。
- メタトレーダー5を開く:まず、MT5プラットフォームを開きます。
- ヒストリーセンターの利用:MT5のメインメニューから「ツール」を選択し、「ヒストリーセンター」(またはキーボードのF2キーを押す)を開きます。
- データの選択:ヒストリーセンターで、必要な通貨ペアまたは他の金融商品を選択します。通貨ペアや商品には、EUR/USD、USD/JPY、Goldなどがあります。
- 時間枠の選択:バックテストに使用する時間枠を選択します。例えば、1分(M1)、1時間(H1)、1日(D1)などです。
- データのダウンロード:選択した商品と時間枠のデータをダウンロードします。これにより、その通貨ペアまたは商品の過去の価格データがMT5にインポートされます。
- データの確認:ダウンロードしたデータが正しくインポートされたかを確認し、必要に応じてデータの品質を確認します。
バックテストソフトウェアの選択
バックテストを行うためのソフトウェアを選ぶ必要があります。いくつかの取引プラットフォームは、組み込みのバックテストツールを提供しています。また、専用のバックテストソフトも利用可能です。
当サイトはプログラミング言語MQL5を使ったシステムトレードプログラム(=EA)の構築に関する内容が中心となっていますが、MQL5によるEAのバックテストを行う場合、選択するバックテストソフトは必然的にメタトレーダ5(MT5)という事になります。
※メタトレーダ5(MT5)については↓で解説しておりますのでご参照ください。
取引戦略のバックテストを行う
選んだソフトウェアを使って、決定した戦略に従い、収集した過去データに対してバックテストを行います。これにより、その戦略が過去の市場状況でどのように機能したかを見ることができます。
※メタトレーダ5(MT5)を使ってバックテストを行う場合には、MT5に実装されているストラテジーテスターを利用する事になります。
※ストラテジーテスターについては別途解説記事を作る予定ですのでもうしばらくお待ちください。
バックテスト結果の分析
「バックテストの実施手順」セクションで解説したバックテスト手順に従い、取引戦略に対するバックテスト結果が出たら、そのバックテスト結果を分析し、戦略が成功したかどうか、どの程度の利益または損失があったかを評価します。
また、潜在的なリスクや問題点を特定します。
分析には色んな着眼点がありますが、以下のような観点に着目し、分析・洞察を行っていきます。
利益率を確認する
採用しようとしている取引戦略がそもそも「儲かるのか儲からないか?」という大前提を、バックテストがはじき出した利益率から確認します。
具体的にはバックテスト結果による総利益と総損失を比較し、バックテストを実施したEAが生成した利益の量を評価する、という作業になります。
利益率とは?
利益率とは、MT5のシステムトレードにおけるEA(エキスパートアドバイザー)のパフォーマンスを測る指標の一つで、EAが生成した総利益と総損失の比率を表します。
簡単に言うと、EAがトレードでどれだけの利益を生み出したか(または損失を出したか)を数値化したものです。
利益率は、以下の式で計算されます:
利益率 = (総利益 – 総損失) / 初期資金額 × 100%
ここでは
をそれぞれ表します。
利益率が正の値であれば、EAは利益を生み出していると言えますし、利益率が負の値であれば、EAは損失を出しています。
いくつかの前提があるものの、利益率が高ければ高いほど、一般にEAのパフォーマンスは良いと言えます。
ただし、バックテスト結果の利益率を検証する上でいくつか注意しなくてはいけない点があります。
次のセクションではそれを解説します。
バックテスト結果の利益率を検証する上で注意すること
バックテスト結果における利益率を検証する上で注意するべき点は主に次のような点になります。
過去のデータと未来の不確実性
EAのバックテストは過去の市場データを使用しています。したがって、これらのテスト結果が未来の同様のパフォーマンスを保証するものではないことを理解することが重要です。市場の状況は絶えず変化し、過去のデータでは捉えられない新しい動きが生じる可能性があります。
データの質と範囲
利益率を評価する際には、使用されるデータの質と範囲も考慮する必要があります。データが短期間に限定されている場合や、特定の市場環境下のみでのデータである場合、その結果は限定的な意味しか持ちません。長期間にわたり、さまざまな市場状況を反映したデータを使用することが望ましいです。
オーバーフィッティングの危険性
EAが過剰に過去のデータに最適化されている場合、オーバーフィッティングという現象が発生する可能性があります。これは、過去の特定のパターンに対して過度に調整され、新しい市場環境ではうまく機能しないリスクを高めるものです。オーバーフィッティングを避けるためには、異なる時期や市場環境でのテストを行い、EAの一般化能力を評価することが重要です。
※オーバーフィッティングについてはフォワードテスト解説記事内の下記リンクをご参照ください。
ドローダウンを確認してリスクの度合いを測る
バックテスト結果がはじきだしたドローダウンを確認して、取引戦略がどれくらいのリスクをはらんでいるのかを検討します。
ドローダウンは、EAのリスクレベルを示します。大きなドローダウンは高リスクを意味するので、重要な指標となります。
ドローダウンとは?
ドローダウンは、MT5でのシステムトレードにおいては、エキスパートアドバイザー(EA)が運用中に経験する資金の最大減少額を指します。
つまり、特定の期間における、口座資金のピーク(天井)からトラフ(底)までの減少率を表す指標です。
ドローダウンはリスク管理において重要な指標で、EAのリスクレベルを評価するのに役立ちます。
ドローダウンは以下のように計算されます:
ドローダウン = (ピーク時の資金 – トラフ時の資金) / ピーク時の資金 × 100%
ここでは、
- ピーク時の資金: ある期間における口座資金の最高額。
- トラフ時の資金: 同じ期間における口座資金の最低額。
をそれぞれ表します。
ドローダウンが大きいほど、資金の大きな減少を経験したことを意味する為、EAは高リスクであると評価されます。
逆に、ドローダウンが小さいほど、EAは低リスクであると見なされ、資金の減少が比較的小さいことを示します。
EAを評価する際、ドローダウンは利益だけでなく、潜在的なリスクを考慮する上で非常に重要な指標です。
取引の勝率と損失率を分析する
バックテストでは利益率やドローダウンだけではなく、取引の勝率と損失率を考慮することも非常に重要です。
利益率は、トレードでどれだけの利益を上げたかを示しますが、これだけではリスクを正確に評価できません。
例えば、高い利益率を持つトレーディングシステムでも、それがたった数回の大きな勝利によって生まれたものなら、実際には非常にリスクが高いかもしれません。
一方で、利益率が低くても、安定して利益を出しているシステムは、長期的にはより信頼できるかもしれません。
勝率は、取引が利益に終わる確率を示し、損失率はその逆で取引が損失に終わる可能性を示します。
高い勝率は、トレードが一般的に利益をもたらすことを意味しますが、これも全体像を理解するには不十分です。例えば、勝率が高いシステムでも、損失が発生した際に大きな損失を被る可能性があれば、リスクは依然として高いです。
一方で、勝率が低いシステムもまた、その一事だけで全否定されるものではありません。全体的なリスクとリターンを考慮してそのシステムの良しあしを判断する必要があります。
勝率が低いということは、トレードが利益に終わる確率が低いということですが、これだけでそのシステムを評価するのは早計です。たとえ勝率が低くても、勝った際の利益が非常に大きい場合、そのシステムは長期的に見て有益かもしれません。
結局のところ、勝率の高いシステムも低いシステムも、それぞれのリスクとリターンのバランスを理解し、適切な資金管理を行うことが重要です。トレーディングは単なる勝率のゲームではなく、いかに効率的にリスクを管理し、長期的な利益を追求するかが鍵となります。
以上の前提を踏まえた上で、野暮かもしれませんが、一応勝率と損失率の定義も解説しておきます。
勝率とは?
勝率は、全トレードの中で利益を生んだトレードの割合を示します。
勝率はEA「どの程度の頻度で利益を出すか」を測るために使われます。
勝率の計算方法は以下の通りです。
勝率 = (利益を生んだトレードの数 / 総トレード数) × 100%
損失率とは?
損失率は、全トレードの中で損失を生んだトレードの割合を示します。
損失率はEAが「どの程度の頻度で損失を出すか」を評価するのに役立ちます。
損失率の計算方法は以下の通りです。
損失率 = (損失を生んだトレードの数 / 総トレード数) × 100%
- 勝率が高い場合、一般にEAは利益を生み出す能力があることを示しますが、それだけではリスクの大きさや利益の規模はわかりません。
- 損失率が低い場合、EAが損失を最小限に抑える能力があることを示しますが、大きな利益を逃している可能性もあります。
勝率と損失率は、EAのパフォーマンスを全体的に評価する際に重要な指標ですが、これらだけではEAの全体的な効果を正確に理解することはできません。
利益率やこの後解説する期待値、ドローダウンなど他の指標と合わせて、総合的な評価を行うことが重要です。
期待値を確認し、 一回の取引あたりの平均的な利益または損失を推し量る
バックテストが算出した期待値を確認し、一度の取引がどれくらいの利益が見込めるのか、あるいは損失の可能性があるのか、という事を視認し検証を行います。期待値の定義は以下のようなものです。
期待値とは?
「期待値」は、一回のトレードにおける平均的な利益または損失を示す指標です。
期待値は、以下の式で計算されます:
期待値 = (勝率 × 平均勝利額) – (損失率 × 平均損失額)
ここでは、
- 勝率: 全トレードのうち利益を生んだトレードの割合。
- 平均勝利額: 勝利したトレードにおける平均的な利益額。
※平均勝利額は、全ての勝利トレードの利益の合計を勝利トレードの数で割ったものです。
数式で表すと、次のようになります↓
- 損失率: 全トレードのうち損失を生んだトレードの割合。
- 平均損失額: 損失を生んだトレードにおける平均的な損失額。
※平均損失額は、全ての損失トレードの損失の合計を損失トレードの数で割ったものです。
数式で表すと、次のようになります↓
をそれぞれ表します。
期待値が正の値であれば、EAは平均して一回のトレードで利益を生み出していることを意味します。
その一方で期待値が負の値であれば、EAは平均して一回のトレードで損失を出していることを意味します。
総じて期待値が高いほど、EAのトレード戦略はより利益を生む可能性が高いと評価されます。
ただし、それだけで戦略が成功すると断定するのは早計です。
期待値を見る時に注意するべきこと。
トレーダーは、期待値の結果を他の重要な指標、例えば勝率、損失率、ドローダウン、プロフィットファクターなどと照らし合わせて、取引戦略を総合的に考える必要があります。
例えば、期待値が高くても、ドローダウンが非常に大きい場合や勝率が低い場合、その戦略は高リスクであると判断できます。
また、戦略の成功が少数の大きな利益に依存している場合、市場状況の変化への対応力が弱まる可能性があります。
プロフィットファクターを確認し、利益率とは別観点から収益性を考える
プロフィットファクターは総利益と総損失の比率で、一般的には値が高いほど良いパフォーマンスを意味します。総利益と投資金額の比率である利益率とは別確度から、トレード戦略を検証できる指標と言えるでしょう。
プロフィットファクターとは?
「プロフィットファクター」は、EAのトレード戦略がどれだけ利益効率が良いかを示す指標です。
この数値は、トレードによって得られた総利益と総損失の比率を測り、EAの全体的なパフォーマンスを評価するのに役立ちます。
プロフィットファクターは以下の式で計算されます
プロフィットファクター = 総利益 / 総損失
ここでは、
をそれぞれ表します。
- プロフィットファクターが1以上の場合、EAは利益が損失を上回っていることを意味し、効率的なトレード戦略を持っていると言えます。
- プロフィットファクターが1未満の場合、EAは損失が利益を上回っており、戦略の見直しが必要である可能性があります。
- プロフィットファクターが高いほど、一般的にEAのトレード戦略は利益を生み出す能力が高いと評価されます。
プロフィットファクターと利益率の違い
プロフィットファクターを見ることで、利益率だけでは明らかにならない重要な側面が明らかになります。
利益率が単に期間内の利益の割合を示すのに対し、プロフィットファクターは利益と損失の比率を考慮した値となります。
例えば、高い利益率を持つ戦略であっても、それが大きなリスクを伴う少数の取引に依存している場合、プロフィットファクターはその「大きなリスク」をプロフィットファクター値の低さ、という形で反映してくれます。
プロフィットファクターが低い場合、それは戦略が損失をカバーするのに十分な利益を生み出していないことを示唆しています。
逆に、プロフィットファクターが高い場合、それは利益が損失を大きく上回っており、戦略が全体として健全であることを示しています。
※ただし、高いプロフィットファクターも手放しで喜べるものではなく、注意が必要です。この点については次のセクションで詳しく解説します。
このように、プロフィットファクターは利益率とは異なり、トレーディング戦略の全体的なリスクとリターンのバランスを考慮することで、より総合的なパフォーマンスの評価を可能にします。
プロフィットファクターを見る際の注意点
プロフィットファクターは、EAのトレード戦略が長期的に見て持続可能で利益を生むかどうかを判断するのに役立つ重要な指標です。
この数値を使用することで、トレード戦略の全体的な利益効率を評価し、必要に応じて調整を行うことができます。
ただその一方で、プロフィットファクターを使ってEA(エキスパートアドバイザー)の性能を評価する際には、いくつかの注意点があります。
まず第一に、プロフィットファクターは利益効率を示しますが、全体的なリスク管理や戦略の持続可能性を完全には反映しません。
高いプロフィットファクターを持つEAでも、大きなドローダウン(資金の減少)を経験する可能性があります。
また、小さなサンプルサイズ(=少ないトレード回数)では、プロフィットファクターは偶然の結果に左右される可能性があります。長期間での十分なサンプルサイズを元に分析することも重要です。
プロフィットファクターはEAの利益効率を評価する強力なツールですが、他の多くの指標(ドローダウン、勝率、損失率、期待値など)と組み合わせて用いることで、より総合的なパフォーマンス評価が可能になります。また、異なる市場条件や時間枠でのバックテストを行い、EAの一貫性と適応性を検証することも重要です。プロフィットファクターが高いEAが常に最適な選択であるとは限らず、リスク許容度や投資目標に合ったEA選択が必要です。
総じて、プロフィットファクターをEAの性能評価の一部として使用する際には、他の指標とのバランスを考慮し、多角的な分析を行うことが重要です。これにより、より正確なリスクとリターンの評価が可能になり、より効果的なトレーディング戦略を立てることができます。
その他の、主なバックテスト結果に対する着眼点
バックテスト結果に対する検証項目は多岐にわたる為、すべてを挙げるのは難しいですが、その他以下のような点に着目して仮説・検証を繰り返していきます。
取引の数と頻度
取引の総数とその頻度を分析し、EAの活動レベルを評価します。
多数の取引がある場合、戦略が積極的であることを示しますが、それが必ずしも利益につながるとは限りません。
取引頻度の高さは、市場への迅速な反応を示す一方で、高リスクと高ストレスを伴う可能性があります。
これらの指標は、戦略の性質と効果性を理解するために重要ですが、他の成果指標と併せて考慮することが重要です。
ポジションの平均保有時間
一つのポジションを保有する平均時間を確認します。
ポジションの平均保有時間を分析することによって、トレーディング戦略の性質と市場に対する反応速度を確認できます。
ポジションの平均保有時間が短い場合、対象の戦略が短期的な市場の動きを利用していることを一般に示します。
これは高頻度取引やデイトレードに一般的な特徴です。
一方で、長いポジション保有時間は、戦略が長期的なトレンドや市場の変化を重視していることを示し、スイングトレードやポジション取引によく見られます。
ポジションを保有する平均時間は、戦略が市場の変動にどれだけ敏感か、またリスク管理や資金効率の観点から戦略をどのように調整するべきかを理解するのに役立ちます。
まとめ
今回の記事では、バックテストの基本的な概念から、メタトレーダー5を使用した具体的な実施方法に至るまで、その手順と重要なポイントを詳しく解説しました。
バックテストを行うことで、戦略の強みと弱点を発見し、将来の取引におけるリスクとリターンのバランスをより良く理解することができます。
重要なのは、利益率だけではなく、ドローダウン、勝率と損失率、期待値、プロフィットファクターなど、多角的な視点から戦略を分析することです。
これにより、よりリアルな市場環境での戦略のパフォーマンスを評価し、実際のトレーディングに適用する際の信頼性を高めることができます。
バックテストは単に過去のデータを確認する作業ではなく、取引成功に向けた戦略を磨き上げるための、貴重な学習の機会を提供するものです。
バックテストのプロセスを通じて、戦略を客観的に評価し、市場変動に対応する柔軟性を持つことができます。
バックテストは、安定したトレーディングパフォーマンスを実現するための第一歩と言えるでしょう。
今回は以上とさせていただきます。
最後までお読みいただきありがとうございました。
※当サイトでは、プログラミング経験ゼロの方でも、プログラミングの基礎から学べる
をメインコンテンツとして展開しています。
第0回から、順を追って勉強していけばプログラミングの経験がなくてもMQL5を使って、MT5用のEAが作れるように書いています。最初は難しいと感じるかもしれませんが、繰り返し勉強していく事で自然とスキルが身についていくはずです。興味ある方は是非ご覧ください。