私たち Tiltnote でも、売買の決まりを過去の値動きで測ることがあります。その中には、費用を引く前はプラスに見えたのに、引いたら何も残らなかった例や、1分足で測ると良く見えたのに、もっと細かい値動き(ティック。値段が1回動くごとの記録)で測り直すと消えた例がありました。どれも、決まりそのものより測り方が「勝ち」を作っていました。ここでは、そうした落とし穴を順に見ていきます。
1. 費用を引き忘れると、勝ちに見える
スプレッド・手数料・スワップを引かずに計算すると、1回あたりわずかにプラスの決まりは、回数を重ねるほどきれいな右肩上がりに見えます。ところが、1回あたりの差が小さい決まりほど、費用で損益の向きが変わります。
研究でも、費用の大きさが結論を変えることが示されています。ダウ平均の1897〜2011年の日々の値段で、テクニカルの売買の決まりを調べ直した論文では、決まりを選んだ期間の中でさえ、低い取引費用を入れるだけで成績が完全に打ち消されたと報告されています。[1] 米国の株価指数での研究で、FX や他の国の市場で同じ数字になるとは限りません。ただ、取引のたびに費用がかかる点は FX でも変わらないので、自分の決まりでも費用を引いて確かめる価値があります。
費用を引く時は、次の点にも気をつけます。
- まず道具の設定を確かめる: 使っている道具(MT5・TradingView・業者のツールなど)で、スプレッドと手数料が結果から引かれる設定になっているかを、まず確かめる。MT5 のストラテジーテスターの場合、ティックの作り方のモードと手数料の設定の場所は、公式ヘルプ(英語)に書かれています[6]
- 平均のスプレッドで引かない: スプレッドは、経済指標の発表の前後や週明け、日をまたぐ時間などに広がります。決まりが「特定の瞬間」に入る形なら、その時刻のスプレッドで引かないと、費用を小さく見積もります
- 入りと出の両方: 費用は入る時と出る時の両方にかかります。手数料は、業者によって片道(入るか出るかの1回分)で書かれていることも、往復(入りと出の合計)で書かれていることもあります。片道の額なら、1回の取引で2回分を引きます
- スワップは分けて見る: 何日も持つ決まりでは、損益を「値動きの分」と「スワップの分」に分けると、利益がどちらから来ているかが分かります。スワップのない口座(宗教上の理由などで使う人もいます)では、この項目は当てはまりません
1か月分の費用の数え方は、取引の費用を1か月分数えるにまとめています。
2. 足の中の順番が分からないと、見せかけの勝ちが出る
ローソク足が持っているのは、始値・高値・安値・終値の4つの値段だけです。1本の足の中で、利確の値段と損切りの値段の両方に届いていた時、どちらに先に届いたのかは、足からは分かりません。
たとえば MT5 のストラテジーテスター(MT5 に付いている、過去の値動きで自動売買を試す機能)には、1分足から値動きを作るモードがあります。「1分足OHLC」(OHLC は始値・高値・安値・終値の頭文字)のモードでは、足の中のティックの数が4より多ければ、始値・高値・安値・終値の4つの値段だけが作られます。ヘルプでは、ブローカーの実際のティックを使うモードが、もっとも実際の条件に近いと説明されています。[2]
実力のない決まりでも、「両方に届いた足では利確が先」と数えるだけで、勝てそうな数字が出ます。利確や損切りの幅が足の値動きに比べて狭いほど、この差は大きくなります。
順番が分からない足を外すと、かえって偏ることがある
「順番が分からない足が出た取引は、数えずに外す」のは公平に見えます。ただ、外れやすさが、勝つ取引と負ける取引で違うと、残った取引が偏ります。たとえば利益を伸ばしながら決済の値段を動かす決まりでは、勝つ取引ほど長く持って多くの足を通るので、順番の分からない足に当たりやすくなります。すると、勝ちのほうが外されやすくなります。決まりの形によっては、逆に負けのほうが外されやすくなることもあります。私たちの検証でも、外す方法で数えたせいで、おかしな結果が出たことがありました。(上の図のような、利確と損切りが同じ幅の単純な例では、外しても偏りはほとんど出ませんでした。偏るかどうかは決まりの形によります。)
外す代わりに、次のように測ると安全です。
- 両方の仮定で最後まで計算する: 「いつも有利な方が先」と「いつも不利な方が先」の2通りで全部の取引を数え、結果を幅で示す。不利な方の仮定でも残るかを見る
- 幅が狭い決まりは、細かい値動きで測り直す: 利確・損切り・注文の幅がスプレッドの数倍くらいまでしかない決まりは、足での結果を結論にしない
3. たくさん試して一番良い物を選ぶと、偶然の当たりを選びやすい
設定や決まりを何通りも試して、一番成績の良い物を選ぶ。よくあるやり方ですが、試す数が増えるほど、実力がなくても一番の成績は良くなります。
研究で示されていることを3つ挙げます。
- 10通りでも: どの決まりにも実力がない前提で、1年分のデータで10通り試すと、一番良く見える決まりのシャープレシオ(年率。成績をぶれの大きさで割った目安)は、選んだ期間では平均1.57になります。選ぶのに使っていない期間では、平均0のままです。[3] 詳しくはバックテストが良くても本番で崩れる理由で紹介しています
- 約8,000通りの決まりを100年分で: ダウ平均の1897〜1996年の日々の値段に、7,846通りのテクニカルの決まりを当てはめた研究では、試した数を考えに入れても、1897〜1986年の約90年には一部の決まりが基準を上回りました。けれど、その後の1987〜1996年の10年では、一番良かった決まりでも、基準を上回ったと言える証拠はほとんどありませんでした。[4] この研究も[1]と同じく米国の株価指数での研究で、FX や他の国の市場で同じ数字になるとは限りません。
- 割り引いて見る習慣: バックテストのシャープレシオを50%割り引いて見ることがよく行われてきました。理由は、研究する人が多くを試す(データを掘り返す)からです。ある論文は、一律の50%は大まかな目安にすぎないとして、試した数に合わせて割り引く方法を示しました。ぎりぎりの成績ほど大きく、目立って高い成績ほど小さく割り引かれます。[5]
対処は、次の3つです。
- 試した数を数える: 捨てた設定も含めて、全部。同じ値動きに設定を少し変えて当てた物どうしは、よく似た結果になるので、「独立に何回試したか」は数より少なく見ます
- 事前に基準を書く: 結果を見る前に、「何がどれだけ良ければ合格か」を書いておく。結果を見てから基準を決めると、通った物に合わせた基準になりがちです
- 使っていない期間で確かめる: データを前半と後半に分け、前半で選び、後半で1回だけ確かめる。後半の結果を見て直し、また後半で確かめると、後半にも合わせ込んでいきます
4. 後から条件を足すほど、過去にだけ合う形になる
負けた取引を見返して、「この時間は外そう」「この曜日は休もう」「この値の時だけ入ろう」と条件を足していくと、過去の成績はどんどん良くなります。けれど、それぞれの条件は過去の負けを見てから決めた物なので、過去の成績が良くなるのは、ある意味で当然です。
- 条件1つが、試す数を増やす: バックテストの過剰な当てはめ(過去のデータにたまたま出た形にまで、設定を合わせ込んでしまうこと)を調べた論文は、2つの値を取る設定が1つなら2通りだが、設定を4つ足して5つにすると 2の5乗 = 32通りになり、過剰な当てはめの起きやすさが大きく増える、という例を挙げています。また、何通り試したかを書かないバックテストでは、過剰な当てはめの危険を見積もれない、としています。[3]
- 取引の数が減る: 条件を足すほど取引の数は減り、少ない回数の成績は偶然で大きくぶれます
- 理由が後付けになる: 「なぜその条件で良くなるのか」を、結果を見てから考えると、どんな条件にも説明が付いてしまいます
条件を足す時は、足した前と後の取引の数を並べ、足した条件も「1回試した」と数えます。理由は、結果を見る前に書いておきます。たとえば「この時間はスプレッドが広がるから外す」なら、その時間のスプレッドを実際に測って確かめられます。
5. 自分で測る時のチェックリスト
手法が悪いという話ではなく、測り方をそろえれば、自分の手法の本当の姿が見える、という話です。どの手法を使うかは、ご自身で決めることです。ここでは、バックテストの結果を見る時に確かめたいことを短くまとめます。
- 費用: スプレッド・手数料・スワップを、入りと出の両方で引いたか。狙う時刻のスプレッドで引いたか
- 足の中の順番: 利確と損切りの両方に届いた足を、どう数えたか。有利・不利の両方で計算したか
- 試した数: 捨てた物も含めて何通り試したか、書いてあるか
- 基準: 合格の基準を、結果を見る前に書いたか
- 使っていない期間: 選ぶのに使わなかった期間の結果も並べたか。そこを何回見たか
- 後から足した条件: 条件ごとに、足す前と後の取引の数と、結果を見る前に書いた理由があるか
- 取引の数: 少なすぎないか。利益の大半が少数の取引から来ていないか
- 強すぎる結果: 費用の何倍もの利益が楽に出ている時は、まず自分の集計の仕方を疑ったか
本番を始めたら、本番の結果も同じ物差し(費用を引いた後の損益)で並べます。損益の一覧は取引履歴の統計で、勝率・平均の損益・最長の連敗にまとめられます。バックテストと本番の数字がずれた時、上のどの項目でずれたのかを探す手がかりになります。
参考文献
- Bajgrowicz, P., & Scaillet, O. (2012). Technical trading revisited: False discoveries, persistence tests, and transaction costs. Journal of Financial Economics, 106(3), 473–491. https://doi.org/10.1016/j.jfineco.2012.06.001
- MetaQuotes. Real and Generated Ticks(MetaTrader 5 ヘルプ). https://www.metatrader5.com/en/terminal/help/algotrading/tick_generation
- Bailey, D. H., Borwein, J. M., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458. https://doi.org/10.1090/noti1105(著者の公開版: https://www.davidhbailey.com/dhbpapers/backtest-pseudo.pdf)
- Sullivan, R., Timmermann, A., & White, H. (1999). Data-Snooping, Technical Trading Rule Performance, and the Bootstrap. The Journal of Finance, 54(5), 1647–1691. https://doi.org/10.1111/0022-1082.00163(論文の前の版: https://www.fmg.ac.uk/sites/default/files/2020-11/dp303.pdf)
- Harvey, C. R., & Liu, Y. (2015). Backtesting. The Journal of Portfolio Management, 42(1), 13–28. https://doi.org/10.3905/jpm.2015.42.1.013(著者の公開版: https://people.duke.edu/~charvey/Research/Published_Papers/P120_Backtesting.PDF)
- MetaQuotes. Strategy Testing(MetaTrader 5 ヘルプ). https://www.metatrader5.com/en/terminal/help/algotrading/testing