バックテストが答える問い
バックテストは、決めておいた売買ルールを過去の価格にそのまま当てはめてみることです。答える問いは「このルールに当時そのまま従っていたらどうだったか」であって、「これからもそうなるか」ではありません。そのため結果表の数字1つより、その数字がどれだけ偶然に近いかを先に確かめる必要があります。このサイトの暗号資産バックテスターは、バイナンスの実際の過去の足で6つのルールを動かし、結果をただ持ち続けた場合と並べて見せます。人がバックテストを過信する理由は単純です。なめらかに上がる曲線は説得力が大きく、その曲線を作った人はたいていうまくいった設定だけを残しているからです。読む順序を決めておけば、この落とし穴を減らせます。ルールが言葉で正確に書かれているか、約定のタイミングとコストがどう入っているか、買い持ちと比べてどうか、取引回数は十分か、区間を分けても保たれるかを順に見ます。「ほどよく押したら買う」のようにルールがあいまいなら、検証そのものが成り立ちません。
結果表の数字
総リターンは期間が長いほど大きくなるので、期間の違う結果どうしは年率リターン(CAGR)で比べます。勝率が高くても、負けた取引1回が大きければ損失になり、勝率が低くても、勝った取引が大きければ利益になります。そのため勝率は損益比と一緒に見てはじめて意味を持ちます。保有時間の割合(市場エクスポージャー)は、全期間のうちポジションを持っていた時間がどれだけかを示します。保有時間の割合が30%のルールは残りの70%の間は現金でいたので、リターンやドローダウンを買い持ちと比べるときは、この違いもあわせて見る必要があります。損切りは遅く、利益確定は早いルールは、勝率が上がる代わりに損益比が悪くなりますが、勝率だけを見るとこの性質が長所のように見えます。プロフィットファクターが1より小さければコストを入れる前から損失という意味で、1を少し超える程度ならコストとスリッページで簡単にひっくり返ります。保有時間の割合が低いルールのドローダウンが小さいのは当然なので、それだけでルールが優れているとは言えません。
- CAGR =(最終資産 ÷ 初期資産)^(1 ÷ 年数)− 1
- MDD:それまでの最高値から最も深く下がった割合
- 勝率:勝った取引 ÷ 決済した取引
- 損益比(ペイオフレシオ):平均利益 ÷ 平均損失
- プロフィットファクター:勝った取引の利益の合計 ÷ 負けた取引の損失の合計
- 保有時間の割合:ポジションを持っていた足 ÷ 全体の足
- 平均保有期間:1つのポジションを持っていた平均の足の本数
買い持ちと比べ、コストを入れる
ルールの結果は、同じ期間に買って持っていただけの場合(買い持ち)と比べてはじめて意味を持ちます。暗号資産が大きく上がった期間なら、たいていの買いルールは利益を出します。コストも入れなければなりません。バイナンス現物の基本手数料は約定ごとに0.1%で、注文が想定より不利な価格で約定するスリッページがそこに加わります。毎回全額で売買するなら、約定200回で、0.1%ずつなら資産の約18%が、0.15%ずつなら約26%がコストで削られます。図は約定が49回しかない例ですが、コストを引く前の最終資産は168で買い持ち(165)より高かったのに、約定ごとに0.15%を引くと157になり、買い持ちより低くなりました。分けて積み立てた場合との比較は、暗号資産の積立シミュレーターで試せます。コストの計算は単純です。0.999を200回掛けると約0.819、0.9985を200回掛けると約0.741です。短く売買するルールほど約定回数が増えてこの効果が大きくなり、取引の少ない銘柄や急変する区間では、スリッページが0.05%よりはるかに大きくなることがあります。買い持ちと比べるときは、同じ期間、同じ初期資産、同じコストの仮定にそろえます。
例: ランダムに作った価格240本(いくつも作って選んだもの)に、「終値が5本移動平均の上に出たら次の足の始値で買い、下に出たら売る」というルールを当てはめた資産曲線(開始100)です。約定49回で毎回0.15%(手数料0.1%+スリッページ0.05%)を引くと、買い持ちより高かった最終資産が買い持ちより低くなります。
最大ドローダウン(MDD)を先に見る
最大ドローダウンは、資産がそれまでの最高値から最も深く下がった割合です。最終リターンが同じでも、途中で35%下がった曲線と10%下がった曲線は、まったく違う経験です。損失と回復は非対称で、20%失えば25%、35%失えば約54%、50%失えば100%上がらないと元に戻りません。最高値を再び超えるまでにかかった期間もあわせて見ます。図の例では、買い持ち曲線の MDD は35%、同じ期間にコストを入れたルール曲線の MDD は11%でした。ドローダウンをリターンより先に見るのは、その曲線に実際について行けるかどうかがドローダウンで決まるからです。ドローダウンのさなかでは、ルールが壊れたのか一時的に休んでいるのか区別できず、多くの人がまさにその地点でルールを捨てます。バックテストの MDD は過去の1つの経路から出た値なので、これからのドローダウンはそれより深くなりうると見るほうが安全です。
例: 上の図の「買い持ち」曲線。それまでの最高値から最も深く下がった割合が最大ドローダウン(MDD)で、ここでは -35% です。最高値を再び超えるまでにかかった期間もあわせて見ます。
未来参照:当時は知らなかった情報
未来参照(ルックアヘッド)は、その時点では知りえなかった情報を判断に使う誤りです。最もよくある形は、足の終値でシグナルを判定し、同じ終値で約定したことにするものです。終値は足が終わってはじめて分かるので、確定した足の終値で判定したなら、約定は次の足の始値にするのが正しいやり方です。このサイトのバックテスターもそうしています。1日の高値・安値をその日が始まった時点で知っていると仮定すること、右側の足が確定してはじめて決まるスイング高値をその足の位置で使うことも同じ種類の誤りです。よくある錯覚は、良すぎる結果を実力と読むことです。勝率が異常に高かったり、負けた取引がほとんどなかったりしたら、まず未来参照を疑います。指標の計算にその足より後の値が混じっていないか(全期間の高値・安値に合わせた値など)、シグナルの足と約定の足が同じでないか、データの足の時刻が始まりの時刻か終わりの時刻かを順に確かめます。
過剰最適化:試すほど偶然が選ばれる
期間や倍率のような設定を数十通りに変えてみれば、そのうち1つは偶然よい結果を出します。その設定を選んだ瞬間、結果表はルールの実力ではなく、選び方の結果になります。上の図もそうやって作りました。ランダムな価格をいくつも作って説明しやすいものを選んだところ、売買のタイミングを選ぶルールが通用する理由のないランダムな価格なのに、コストを引く前は買い持ちよりよく見える曲線が出ました。確かめる方法は、選んだ設定の近くの値も同じようによいか、別の期間や別の銘柄でも結果が保たれるかを見ることです。条件を1つ足すたびに、過去にはよりよく合うようになります。条件の一つひとつが、過去の特定の損失区間を避けるように調整されるからです。そのため、設定を選ぶ区間と検証する区間を分ける方法が使われます。前の区間で設定を決めたあと、手をつけていない後の区間で一度だけ動かします。後の区間の結果を見て設定を直せば、その区間ももう検証用ではありません。
生存者バイアスと相場局面への依存
いま取引されている銘柄だけを選んで過去を試すと、その間に消えたり上場廃止になったりした銘柄は抜け落ち、生き残った銘柄だけの標本は結果をよく見せます。「いまの時価総額上位の銘柄」で対象を選ぶのも、その間に大きく上がった銘柄をあらかじめ知って選ぶのと同じなので、同じ問題があります。この講座の実測統計も、いま残っている大型銘柄10個で測ったものなので、同じ限界があります。局面も見る必要があります。その10銘柄の日足(各銘柄の上場日〜2026年9月)のすべての足29,746本で、足の終値から20本後の終値までのリターンを測ると、平均は +4.62% でしたが、中央値は +0.15%、上がった割合は50.4%でした。少数の大きな上昇が平均を押し上げたということで、その数回が検証期間に入るかどうかで結果が大きく変わりえます。結果が一度きりの上昇相場に頼っていないか、区間を分けて確かめます。区間を分けるときは、上がる区間、下がる区間、横ばいの区間を別々に見て、ルールがどこで稼ぎ、どこで失ったかを書き留めておきます。
取引回数が少ないと数字が揺れる
決済した取引が10回前後なら、勝率やプロフィットファクターは数回の偶然で大きく揺れます。この講座の実測では、バイナンスの BTC 日足のゴールデンクロス(SMA50 が SMA200 を上に抜ける)は2017年8月から2026年9月までにわずか9回で、5本後に上がっていた割合は9回中1回(11.1%)、20本後では8回中6回(75.0%)でした。すべての足での割合は、それぞれ53.1%、53.7%です。同じシグナルでも、測る時点を変えるだけで正反対に見えます。標本の少ない結果は、よくても悪くても結論を保留し、期間や銘柄を増やして取引回数を増やしてみるのが順序です。10回中7回勝った結果と、100回中70回勝った結果は、勝率が同じでも重みが違います。硬貨を10回投げて表が7回以上出る確率は約17%で、珍しいことではないからです。
よいバックテストが言っていないこと
落とし穴をすべて避けたバックテストも、過去の1つの経路を見せるだけです。相場の性格が変われば、よく合っていたルールがしばらく合わなくなることもあり、実際の売買では、損失が続くときにルールをそのまま守るのは思ったより難しいものです。バックテストは、ルールの性格、つまりどれくらい頻繁に売買するかと、どれくらい深く下がるかを前もって見せてくれる道具と見るほうが正確です。自分の目測を試してみたいなら、チャート予想クイズで正解率を当てずっぽうの基準線と比べてみることができます。ですから結果表を見たあとにすべきことは、いくら稼げるかを計算することではなく、そのドローダウンと連敗に実際に耐えられるか、コストの仮定が自分の取引環境に合っているかを確かめることです。同じルールを数か月実際に見守った記録とバックテストを並べてみると、コスト・約定・心理から生じる差がどこから来るのかが見えてきます。
暗号資産と株式で違って見える点
同じルールでも、市場によって結果表の仮定が崩れる形が違います。暗号資産は24時間取引されるので日足の間にすき間がほとんどありませんが、株式は立会時間が終わったあとに出たニュースが翌日の始値にまとめて織り込まれ、窓(ギャップ)ができます。「次の足の始値で約定」という仮定は同じでも、株式ではその始値が前日の終値と大きく違うことがあり、損切りも損切り価格ではなく窓を開けた始値で約定することがよくあります。韓国株には1日の値幅制限(±30%)があり、ストップ高・ストップ安に張り付くと望む価格で売買できない日が生じますが、バックテストはたいていその日も約定したものとして扱います。米国株には銘柄ごとの1日の値幅制限がない代わりに、急変時に取引を一時止める仕組みがあります。コストも違います。韓国株は売るときに取引税がかかるので、手数料だけを払う暗号資産とは往復コストの計算が変わります。生存バイアスの形も違います。いまの指数構成銘柄や米国の大型ハイテク株で過去を試すと、その間に外れた銘柄が消え、サムスン電子やSKハイニックスのように長く生き残った大型株だけを選ぶと結果がよく見えがちです。株価データが株式分割・配当を反映した調整後の価格かどうかも確かめます。
実践の確認手順
結果表を受け取ったら、下の順に見ると見落としが減ります。リアルタイムのチャートで同じルールを見守るときは、もう1つ確かめます。バックテストは確定した足だけを使いますが、画面の最後の足はまだ進行中なので、終値・移動平均・RSI が更新のたびに変わります。取引時間中に点いたシグナルが足の確定とともに消えることはよくあるので、バックテストと同じ条件で比べるなら、足が確定したあとのシグナルだけを数えます。バックテスターの結果は過去の足がすべて確定した状態で計算されるので、いま画面で見たシグナルと結果表のシグナルの数が違って見えることがあります。進行中の足をシグナルとして数えると、実際には約定できなかったシグナルまで入ってしまいます。下のリストは結果表を読む順序でもあります。
- ルールが言葉で正確に書かれているか(エントリー・決済・損切りの条件)
- シグナルの足と約定の足が別か(終値で判定し、次の足の始値で約定)
- 手数料とスリッページが約定ごとに入っているか
- 同じ期間の買い持ちと比べ、保有時間の割合の違いを考えに入れたか
- MDD と回復までの期間に実際に耐えられるか
- 決済した取引は十分か、区間を分けても結果が保たれるか
- 選んだ設定の近くの値や、別の銘柄でも似た結果か
- リアルタイムの比較は確定した足のシグナルだけで行ったか
🌍 検索エンジンでさらに調べる
ボタンを押すと、そのエンジンでこのキーワードを検索します