ストラテジーテスターで数字を一つ動かす。損益曲線が少しだけ上に持ち上がる。もう一つ動かす。また上がる。面白くなって続けているうちに夜中になり、最初に何を動かしたのか分からなくなっている。EAの最適化で、いちばんよくある夜の過ごし方だと思う。
そうやって出来上がった設定は、動かし始めると違う顔をすることが多い。過去のデータには驚くほど合っているのに、来週からは平凡になる。腕が落ちたわけではなく、合わせにいった相手が過去だっただけだ。テスターの中では、その設定が最も賢く見えていた。
今回は、最適化をどこで止めるかを書いていく。決まった正解はないが、「ここまで来たら怪しい」という目印はいくつかある。数字を良くする方法ではなく、良くなった数字を疑う方法の話になる。手を動かす前に、一度読んでおくといい類のものだ。
良くなり続けるのは、当たり前だ
パラメータを一つ増やすと、試せる組み合わせは掛け算で増える。五つのパラメータにそれぞれ二十通りの候補を用意すれば、三百二十万通りになる。これだけ並べれば、その中に過去のデータへたまたま合う組み合わせが混ざってくる。
困るのは、よく効く値とたまたま当たった値が、成績表の上では同じ顔をしていることだ。どちらも右上がりの線として出てくる。だから成績が良くなったこと自体は、判断の材料にならない。試すほど良い設定が見つかるのは当然で、増えたのは成績ではなく、当たりを引く回数のほうだ。
最適化そのものが悪いわけではない。移動平均を何本で見るか、損切りをどこに置くか、どこかで決めないと動かせない値は残る。まずいのは、決めるための作業がいつのまにか、過去にいちばん合う形を探す作業にすり替わっていることだ。
期間を半分に割り、後半には触らない
いちばん効くのは、期間を割ることだ。手元のデータを前半と後半に分け、前半だけで最適化する。値が決まったら、その値のまま後半を一度だけ通す。順番はこれだけで、難しい統計の道具も、特別なツールも要らない。テスターの日付の欄を二回に分けて入力するだけだ。
肝心なのは、後半の結果を見てから値を戻さないことだ。一度でも後半を見て調整したら、その後半はもう前半になっている。締めた月の帳簿を後から書き換えないのと同じで、確かめる用に取っておいた期間は、見てしまったら元には戻せない。それでも直したいなら、別の期間を新しく取っておくしかない。
後半で崩れたときは、値をもう少しだけ触りたくなる。そこで触ると、また前半が増えるだけだ。崩れたのは値ではなく作りのほうだと考えて、条件そのものに戻ったほうが結局は早い。値で埋められる崩れなら、そもそも大きくは崩れない。
一点だけ尖った設定を疑う
最適化の結果は、順位表ではなく面で見るとよく分かる。二つのパラメータを縦横に並べて成績を色で塗ると、良い場所が塊になっている設定と、一マスだけ飛び抜けている設定に分かれる。MT5のテスターなら最適化の結果をグラフで表示できるので、数字の列を目で追うより速い。
尖っているほうは危ない。隣のマスが悪いということは、その値から少しずれただけで成績が変わるということだ。相場は同じ形を繰り返さないので、実際に動かせばどこかで少しはずれる。選ぶのは頂点ではなく、なだらかな場所の真ん中。頂点より数字は低く見えるが、外したときの落ち方が違う。
毎回動くパラメータは、効いていない
もう一つ、手間のかからない見分け方がある。期間をずらして最適化をやり直すだけだ。開始を三か月ずらす、対象を一年分だけ後ろにずらす。それで十分で、やり直すたびに最適値が大きく飛ぶパラメータは、効いていない疑いがある。
効いている値なら、期間を変えても近い場所に落ちてくる。十四が十三や十五になるのは構わない。十四が六十になり、次は八になるなら、それは相場の形ではなく、その期間のノイズを拾っている。飛ぶ幅がどのくらいなら許せるかは、そのパラメータの単位で決めるしかない。
そういうパラメータは、思い切って固定するか、外してしまう。減らせば当然、過去の成績は下がる。それでも、下がったあとの数字のほうが実力に近い。パラメータの本数は、そのまま怪しさの量だと思っておくといい。
「もう少しで、もっと良くなる気がする」——この感覚が出てきたときには、たいてい止め時を過ぎている。
試した回数を数える
見落とされやすいのが、試した回数だ。百通り試して選んだ一位と、百万通り試して選んだ一位は、同じ一位でも意味がまるで違う。後者のほうが、偶然の当たりを引いている可能性が高い。回数が増えるほど過去に合いやすくなるのだから、回数そのものも成績の一部だと考えたほうがいい。
だから、回した記録を残しておく。何通り試したのか、どの範囲を動かしたのか、そのとき何を固定していたのか。残っていない条件は、後から誰も確かめられない。三日前の自分が何をしていたかも、たいてい思い出せない。
記録があると、次に回すときの範囲を狭められる。同じ場所を探し直さずに済むので、回す回数そのものが減っていく。回数を減らすことが、そのまま過去に合わせすぎない方向にも効いてくる。記録は誰かに見せるためではなく、来月の自分のために残しておくものだ。
再最適化を頼むときに、何を渡すか
他人に最適化や改修を頼むなら、渡す情報は四つでいい。対象(銘柄と時間足)、期間、動かしてよいパラメータとその範囲、固定する値。この四つが書いてあれば、受け取った側は同じ条件を再現できるし、返ってきた結果を自分の手元でも確かめられる。
特に効くのは後ろの二つだ。「いい感じにお願いします」だと、作り手は全部のパラメータを全部の範囲で回すしかない。回数が増えるほど過去に合いやすくなるので、丸投げは結果として、いちばん当たりを引きやすい頼み方になる。動かしてほしくない値があるなら、理由と一緒に書いておくといい。
あわせて、確かめる用に取っておく期間も先に指定しておきたい。「直近の一年は最適化に使わず、最後に一度だけ通す」と決めて渡す。そこで崩れたら、値ではなくルールのほうを見直す。この一往復を先に決めておくだけで、返ってくるものの性質が変わる。なお、ここに書いたのは検証の手順であって、成績を約束するものではない。当方が作るのはソフトウェアで、投資助言や運用の代行は行っていない。
当方は元金融系のシステムエンジニアで、ココナラでMT5のEAを、いただいた売買ルールから開発している。手元のEAが過去のデータにだけ合っている気がする、パラメータが増えすぎて何が効いているのか分からない、という段階でも構わない。テスターのレポートと今お使いの設定値を添えて、ココナラのメッセージからご相談ください。なお、お渡しするのはソフトウェアであって、投資助言や運用の代行ではありません。