バックテストが答えるのは、ひとつの限られた問いです。このルールを、このデータで、この前提のもとで動かしたら、正確に何が起きていたか? 次に何が起きるかは教えてくれません。レポートを上手に読むとは、どの数値が重く、どの数値が見栄えよく作りやすいかを知ることです。
リターンではなく前提から見る
結果を見る前に、テストがどう行われたかを確認しましょう。Backte.st では、すべてのレポートの データと前提 に次の内容が記載されています。
- シグナルは確定した足を使います。 ルールが足に反応できるのは、その足が確定した後だけです。
- 注文は次の始値で約定します。 シグナルを出した終値で約定することはありません。
- すべてのエントリーとエグジットにコストがかかります。 手数料とスリッページを、片道あたりのベーシスポイントで指定します。
- ポジションは常にひとつ。 レバレッジ、ストップ、利益目標はありません。
よそで見かけたレポートに約定ルールやコストが書かれていなければ、そのリターンはせいぜい上限値と考えましょう。
純リターンとバイ・アンド・ホールド
純リターンは、コスト控除後の口座価値の変化です。多くの市場にはトレンドがあるため、それだけではあまり意味がありません。そこで各レポートには 同じ配分でのバイ・アンド・ホールド も表示されます。戦略が1回の取引で資金の20%を投じるなら、比較対象も期間中ずっと資金の20%を市場に置いた場合です。
バイ・アンド・ホールドに勝つ戦略でも、はるかに多くの取引(コストや税金が増える)や、より深いドローダウンを伴うなら、実際にはむしろ不利なこともあります。
最大ドローダウン:実際に体感する数値
最大ドローダウンは、口座価値がピークから底まで最も大きく下落した幅です。実際の人がその戦略を続けられるかどうかを決めるのは、たいていこの数値です。同じリターンの2つの戦略でも、途中で口座が半分になったかどうかでまったく違って見えます。
バックテストのドローダウンは、その特定の取引の並び での最悪の下落にすぎないことを忘れないでください。取引順シャッフル を使うと、どこまで悪くなりえたかがわかります。
取引数:証拠は十分か
取引が少なければ、運だけでほとんどどんなリターンでも出せます。Backte.st は判断するふりをせず、チェックを 取引数不足 と表示します。決済済み取引が少ないときは、結論を出す前に履歴を長くする、足を短くする、市場を増やすなどを試してください。
頑健性チェック
主要な結果は、ひとつの前提で一度だけ実行したものです。チェックは同じルールを、より厳しい条件で再実行します。
- 未使用期間:履歴の最後の30%を単独で評価します。アウトオブサンプル・テスト を参照。
- コスト2倍:手数料とスリッページを2倍にします。取引コスト を参照。
- 近傍パラメータ:すべての指標期間を±10%と±20%ずらします。パラメータの頑健性 を参照。
- 遅延エントリー:すべての注文を1本遅れて約定させます。先読みバイアスと約定タイミング を参照。
- ベストトレード除外:最も利益の大きい5件の取引を除きます。過剰最適化 を参照。
- 取引順シャッフル:取引の順番を200回並べ替えます。モンテカルロ を参照。
その条件でも戦略のリターンがプラスなら、チェックは 耐えた と判定されます。判定には決済済み取引が10件以上(シャッフルは20件以上)必要です。弱点 はアイデアに価値がないという意味ではありません。結果がどこで脆い要素に頼っているかを示しています。すべてに 耐えた のは良いスタートですが、優位性の証明ではありません。
レポートが教えてくれないこと
- 未来は見えません。市場の局面は変わります。
- テストしたのは自分で選んだ市場だけです。上がったから選んだのなら、生存者バイアス を読んでください。
- 未使用期間が「未使用」なのは一度きりです。それを見てからルールを調整するたびに、その期間は学習データの一部になります。
バックテストは、アイデアを素早く安く ふるい落とす ために使いましょう。そのときこそ、バックテストは最も正直です。