4月の第2週・初旬が終わりました。
時の流れを、とても早く感じます。
今週末クローズ時のスプレッドは、1.7pips。
この開きは、平時よりか、ちょびっと大き目なため、パフォーマンスは低めに出がちですが、拡縮がないため、バックテスト結果を比べやすい環境です。
この機を使って、SDFXを完成に近づけようと思ってます 。
先日の話と重複するところもありますが、
もう一度、『最適化とカーブフィッティング』 について話してみます。
どんな自動取引プログラムでも、適用する通貨ペアや時間枠の種類に応じて、プログラム内のパラメータは変わります。
相性の良いパラメータを探すため、候補となるパラメータ値をいくつか選んだ上で、また、パラメータが複数設定されている場合は、それらを組み合わせた上で、『最適化』 と呼ばれるバックテストを行います。
取引回数の少ないバックテストでは、過去の限られたケースだけにフィットする(カーブフィッティング)パラメータが選定されてしまう可能性が高まるといわれています。
今回の制作過程で学んだのは、それとは異なる、期間限定の際に起こりうるカーブフィッティングの危険性です。
自動取引プログラムを制作していると分かるのですが、2007年金融危機勃発以降の為替相場は、それ以前(99年8月から06年12月)の様相と比べ、かなり変化したようです。
06年12月までは良好なパフォーマンスを生み出していたプログラムが、突然、さっぱり振るわなくなってしまうんです。
類を違わず、SDFXも同様だったので、2007年以降に期間を絞って、パラメータを模索し直してみたんです。
次の2つのパフォーマンス・グラフ、どちらが良いと思います?
ぱっと見で、はじめの方ですよね。
こちらは、2007年以降の米ドル円相場を対象に最適化を行い、パラメータを選定した上のテスト結果です。
これでよしと思ってましたが、「金融危機以降の米ドル円は、一方的な右肩下がりの相場になっている」ことを思い出しました。
ということは、2007年以降に期間を限定して最適化を行うと、必然的に、ドル安・円高相場に適したパラメータになります。
すなわち、買いより売り取引重視のもの。
これだと、相場環境が変化すれば(ドル高・円安に転ずれば)適応しなくなるだろうから、再度、やり直したものが、下の方のグラフです。
中間辺りの変化点は、08年10月のリーマン・ショック時です。
これら2つを、99年8月から通して稼動してみると、やっぱりバランスの取れた後者の方が良好なパフォーマンスを現していました。