今回は自動売買システム、EAのバックテスト結果をモンテカルロ法で分析する方法を解説します。
「なんだか難しそう」と感じるかもしれませんが、やることは「トレード結果をランダムに並び替える」だけです。
10回のトレード結果が以下のように連続していた場合と‥
「勝ち」「勝ち」「勝ち」「勝ち」「勝ち」「負け」「負け」「負け」「負け」「負け」
「勝ち」と「負け」が交互に連続していた場合では‥
「勝ち」「負け」「勝ち」「負け」「勝ち」「負け」「勝ち」「負け」「勝ち」「負け」
ドローダウンが変わります。前者の方がドローダウンが大きくなります。
ランダムに並び替えて非常に多くの試行回数(1000回以上)の実行を行うことで、起こり得る「最悪に近い最大ドローダウンの目安」が確認できます。
メタトレーダーにはこういった機能は無いため、プログラミング言語「Python」の力を借りましょう。
Pythonのインストール
まずはpythyonのインストールから。Microsoft Storeからインストールできます。無料です。
Storeの上部、検索入力にpythonと入力してEnterするとPython 3.xx のようなアプリが表示されます。当記事執筆時点では3.11が最新です。(Beta版は除く)
私の環境には3.10がインストールされておりましたので、今回の記事では3.10を使用します。
なお、私はWindows11を使用しています。
モンテカルロ法のPythonソースコードを入手する
Pythonでバックテストのモンテカルロシミュレーションを行うという記事を見つけたのですが、こちらには一部しかソースコードがありません。
無いものは作るしか無いか‥と思っていたのですが、検索単語を色々変えながら調べてみると先駆者がいらっしゃいました。
こちらの方がソースコードを配布していらっしゃったのでありがたくお借りしましょう。
後は上記URLの記事に書いてあるとおり、実行するだけなんですが‥一応、動作するかどうか、確認してみます。
モンテカルロ分析の実行
1.MT4でバックテストを実行
まずは普通にバックテストします。
今回使用するEAは私が開発したEAです。まだ調整中だったので、今回の検証にはもってこいだと考えました。
記事に書かれている通り、MT4の「結果」タブで「すべてコピー」した後、テキストエディタを開いて保存、名前はea.csvとしてダウンロードしたPythonソースコード(monte_carlo.py)と同じフォルダに置きます。
なお、MT5の場合は「バックテスト」タブからOpenXMLで保存したり、グラフタブからCSVエクスポートするなどすると「なんとかなりそうな気はしました」が、取得したCSVファイルをPythonソースコード(MT4の形式)に合わせるか、Pythonソースコードを修正しないと使えません。
興味のある方はチャレンジしてみてください!(丸投げ)
2.Windows PowerShellで実行
monte_carlo.pyとCSVファイルがあるフォルダをエクスプローラーで開き、フォルダ名をクリック、powershellと入力してEnterを押します。
そうするとmonte_carlo.pyとCSVファイルがあるフォルダでPowerShellが起動します。
あとは記事に書いてあるようにコマンドを入力するだけです。
python monte_carlo.py ea.csv 5000
エンターキーを押すと次のメッセージが表示されました。
ModuleNotFoundError: No module named 'numpy'
うん!やっぱりね!(笑) ※知ってた
ということで必要なものを入れましょう。
3.必要なモジュールをインストール
numpyというモジュールが見つからないためにエラーとなっているので、numpyを入れます。
pip install numpy
このようにpipコマンドにinstall numpyとインストールしたいモジュールを指定するだけです。
Successfully installed numpy-x.xx.x のようなメッセージが表示されれば成功しています。
ソースコードを見るとpandasとmatplotlibというモジュールも使っているので、pandasとmatplotlibも入れます。複数指定する場合には半角スペースを空けて指定します。
pip install pandas matplotlib
4.monte_carlo.pyを実行
先程のコマンド
python monte_carlo.py ea.csv 5000
を実行してから少し待つと
monte_carlo.png save finished.
monte_carlo.csv save finished.
というメッセージが返ってきます。結果がこれらのファイルに格納されているはずです。
このEAの場合、あまりブレは無いみたいです。
なお、分割エントリーや分割決済、複数ポジションの一括決済などを行っていると「失敗するだろう」とのことでした。
モンテカルロ・シミュレーションの分析
ドローダウンの目安として、MT4に表示されているものだけでなく、最悪の値に近い数値(下振れ95%)を「最悪の場合のドローダウン」と考えた方が良いようです。
私のバックテスト結果ではプロフィットファクターやドローダウンがMT4の結果と大きく異なっており、参考にはならなそうだったんですけど‥。
ご興味のある方は試してみてください!
コメント