やはりバックテスト&フォワードテストにおいては、
通常のMT4で出力される評価項目だけでは心もとないことが分かってきました。
そこで、兼ねてから検討していた回帰分析を評価項目として出力するようにコードをEAに埋め込みました。
埋め込んだコードの基本的な作りとしては、
①start()関数実行ごとに、OrdersHistoryTotal()関数にて、トレードの増加(残高の変化)をキャッチし、
取引ごとの資産残高を配列に記録していきます。
②deinit()関数実行時には、その資産残高配列をもとに、回帰分析を行い、評価項目をファイル出力します。
まぁ、こんなもんです。
で、事前に、2011/01/01~2011/08/01で最適化したパラメータセット群で、
2006/10/01~2011/09/11までをテストしてみました。(バックフォワードテスト??)
結果が下記のエクセルです。
ファイル出力したものをエクセルに転記しております。
ソートが効くので、R2でソートした状態です。
試しに、R2の最も高いTEST_NO=1635をテストしてみます。
こんな感じにしておけば、
再現性指数のテストでも使いやすい形となると思います。
それではテストしてみますと、
なんという直線。
たしかに、R2はめちゃくちゃ高そうですが・・・・・。
次点の339番を確認してみます。
避けられないDDはありますが、かなり良い直線ですね。
トレード回数が素敵ですね。
また、同じくR2が高く、トレード回数が少ないものは、
似てますね。こちらもいい感じ。
さて、R2の高いものを確認してみましたが、
MT4の標準の評価項目である資産残高で見ていきます。
バックテスト時に資産残高が最も高かったパラメータセットでテストしてみますと、
こうなりました。
標準誤差: 51.64573073 /
R2 : 0.62991803 /
cut : 8837.64660626 /
Inclination : 9.70851672
バックテストの資産残高だけで選んでいると、
結構ひどいものが選ばれている可能性もあるのかもしれないですね。
まぁ、未知の過去期間と未知の未来期間を含んでいるので厳しいの自明です。
最後に、去年の12月からずっと使い続けているパラメータセットだと、、、
標準誤差 : 52.30667450 /
R2 : 0.96745513 /
cut : 8030.72849178 /
Inclination : 54.05610452
鉄板でした。
結局、パラメータセットの変更は必要ないという結論に至りました。
・まとめ
個人的に、標準誤差が低いものがいいのではないかと考えていたのですが、
それよりもR2で考えていった方が良さそうな印象です。
R2が高くて、傾きもそれなりに高いパラメータセットがいい感じ。
次は平均含み損益なども出せるようにすると面白いかもしれません。
今回の検証に利用した参考書はこちらです。
私のような高校数学をまるごと放棄してきた人間でも分かりやすく書かれています。
統計基礎、相関、回帰分析(単回帰)までをカバーしています。
[3回]
PR