正確なバックテスト結果を得られるのか再検証します。
ForexSolidについて私が常に疑問を抱えていた部分としてサマータイム設定があります。
これは当初から何度も質問したり、バックテストしたりして検証してます。
ただ明確な答えを出せずにいました。
なので、どのようにバックテスト検証を行なうのか方針を決めたいと思います。
今回はそれなりに自分でも納得できる形になったと思います。
まず開発者さんにコミュで質問しました。
Q 正確なバックテストはできるのか?
A 夏時間・冬時間でサーバータイムに調整があるブローカー(夏GMT+3/冬GMT+2など)では通年のバックテストでも正しくバックテストが可能でございます。
夏時間・冬時間でサーバータイムに調整がないブローカー(GMT+9固定など)では上記の場合とおおむね同じバックテスト結果とはなりますが一部時間がずれることがありますので正しくバックテストが可能とは言えません。
Q 6ヶ月毎に夏時間・冬時間に合わせてバックテストした場合はどうか?
A はい、理論上可能だと思います。ただしバックテスト期間を細かく区切ることになるため、期間の終わりに持った保有ポジションはストラテジーテスター上では強制決済となりますので、通年でのバックテスト結果とは誤差が出るかと思います。
で、開発者さんの説明を確認するにはどうするか?
サーバーのサマータイム有無がバックテスト結果に影響を与える
ということを確認できれば
6ヶ月毎に冬時間・夏時間に合わせバックテストすればOK。
まずヒストリカルデータを用意
サマータイム有り 冬GMT+2 夏GMT+3
代表データとしてアルパリデータを使用します。
2000年~2015年
サマータイム無し 冬GMT+0 夏GMT+0
代表データとしてTickstoryデータをGMT=0で出力します。
2012年~2015年
確認方法
最適化を利用してパラメータを振って結果を比較して確認します。
「GMT」と「サマータイム」これらを最適化パラメータとします。
気になる点として
バックテスト時にGMT+2 サマータイム=falseとするべきなのか?
GMT+3 サマータイム=trueとするべきなのか?
そもそもサマータイムというパラメータは機能しているのか?
これら疑問が一気に解決するはずです。
最適化結果
グラフクリックで最適化結果が見れます。
またパラメータ確認として画像も添付しています。
サマータイム=1がtrueという意味です。
サマータイム=0がfalse。
GMT2-3実験
【GMT+2 サマータイム=false】と
【GMT+3 サマータイム=true】が同じ結果になっています。
つまりバックテスト時においては間違った設定をしなければOK。
冬時間設定でも夏時間設定でもバックテスト結果は同じ。
GMT0-0実験
チャートはEGOISTの画像です。
最適化結果は今回の実験結果です。
GMT+2と同じノリなら
【GMT+0 サマータイム=true】と
【GMT+1 サマータイム=false】が同じ結果になりそうと思ってました。
しかし結果はどれもバラバラです。
単純にサマータイムtrue/falseでGMT調整をしている訳では無さそうです(^_^;)
まとめ
サマータイム調整がないデータでは正しくバックテストが行えない
またGMT処理もサマータイム調整を前提としてプログラムされていることを確認できた。
開発者さんの説明通りの結果です。
なのでプログラムを信頼して
6ヶ月毎に夏時間・冬時間に合わせてバックテスト確認します。
アルパリデータ(サマータイム調整有)に関しては区切る必要はない。
ブローカー選定も夏時間・冬時間に合わせてバックテスト確認する必要がある。
サマータイムの切替は
2006年までは4月第1日曜~10月最終日曜まで
2007年からは3月第2日曜~11月第1日曜まで
ForexSolidは週またぎを限りなくしないEAなので
開発者さんが心配するバックテストの都合で強制決済することもないのでOK。
非常に読みにくい、理解し辛い内容となっていますが
今回は自分のためのまとめなので許してください。
次回から長期バックテスト確認を行います。
↓↓ 「fxonに慣れてない人」や「初めての方」向けのマニュアル用意しました! ↓↓