どうもこんにちは。戦術トレードラボのラボ長です。
EAをバックテストして、プラスの結果が出た。
うれしいのと同時に、こんな不安がわいてきませんか。
「これ、たまたま勝っただけじゃないの?」
私はこの不安を、長いあいだ「なんとなく」で片づけていました。
あるとき、トレード回数が少ないのが気になって、AIに「統計的な観点から見て、優位なのか見てくれんかい?トレード件数少なすぎやせんかと」と聞いてみました。
そこで教えてもらったのがt値です。
この記事では、数学が苦手な私でも使えている範囲で、t値の意味と計算のしかた、そしてt値が高くても安心してはいけない場面をまとめます。
なぜ「たまたま」を疑う必要があるのか
FXの値動きには、大きなランダム要素があります。
コインを投げて売り買いを決めるだけのEAでも、期間や通貨ペアを選べば、プラスの成績が出ることは普通にあります。
つまり、バックテストのプラスには2種類あります。
- 手法に本当に優位性があって出たプラス
- ただの運で出たプラス
見た目の成績だけでは、この2つを区別できません。
そこで、「この成績が、運だけで出る可能性はどれくらいか」を数字にしてくれるのが、t値です。
t値とは(ざっくり版)
EAのトレードに当てはめると、t値はこういう数字です。
t値 = 1回あたりの平均損益 ÷(損益のバラつき ÷ √トレード回数)
むずかしく見えますが、言っていることは3つだけです。
- 平均がプラスに大きいほど、t値は大きくなる
- 1回ごとの損益のバラつきが大きいほど、t値は小さくなる(運の影響が大きいから)
- トレード回数が多いほど、t値は大きくなる(回数が増えると運が平均化されるから)
目安は次のとおりです。
| t値 | ざっくりした意味 |
|---|---|
| 1未満 | 運と区別できない |
| 1〜2 | プラスっぽいが、偶然でも十分ありえる |
| 2以上 | 「偶然とは言いにくい」とされる一般的なライン(偶然なら約5%以下) |
| 3以上 | かなり強い。たくさん試したあとなら、このくらいを求める考え方もある |
マイナスの値も同じように読みます。t値が−2以下なら「偶然とは言いにくいほど負けている」という意味です。
エクセルでの計算手順
むずかしい統計ソフトはいりません。エクセルやGoogleスプレッドシートで十分です。
- 1トレードごとの損益を1列に並べる
MT4のストラテジーテスターなら、レポートを保存してエクセルで開くと、トレードごとの損益が取り出せます。 - 単位をそろえる
金額でもpipsでもかまいませんが、ロットが途中で変わるなら、金額ではなく「1回の損失を1とした倍率(R)」やpipsで並べます。複利で後半のロットが大きいと、後半のトレードだけが重く数えられてしまうからです。 - この式を入れる(損益がA2〜A561に入っている場合)
=AVERAGE(A2:A561)/(STDEV.S(A2:A561)/SQRT(COUNT(A2:A561)))
これで出た数字がt値です。
AIにEAを作ってもらっている方なら、「バックテストの結果に、毎回t値も出して」と頼んでおくのが一番ラクです。私はそうしています。
例:同じ平均でも回数で変わる
たとえば、1回あたりの平均が+0.1R、1回ごとのバラつき(標準偏差)が1Rのトレードがあったとします。(説明用の例です)
| トレード回数 | t値 |
|---|---|
| 100回 | 1.0 |
| 400回 | 2.0 |
| 900回 | 3.0 |
同じ実力でも、100回では「運と区別できない」、400回でやっと「偶然とは言いにくい」になります。
トレード回数が少ないEAの成績を信じにくいのは、こういう理由です。
必要なトレード回数の目安
式を逆にすると、「t値2を出すには何回くらい必要か」も見積もれます。
必要な回数 ≒(2 × バラつき ÷ 1回あたりの平均)の2乗
1回あたりの利益が薄いEAほど、必要な回数は一気に増えます。
平均がバラつきの10分の1なら400回、20分の1なら1,600回です。
私の実例:数字で答えてもらった回
冒頭の「件数少なすぎやせんか」という質問に、AIが返してきた答えはこうでした。(すべてバックテスト、過去データの結果です)
- 6年分のバックテストで、t値は4.8
- 念のため、EAを作るときに見ていた年を除いても3.7
- 必要なトレード回数の見積もりは222回に対して、実際は560回
そして、こう言われました。
「件数不足は、統計の問題ではなく、月ごとのブレの問題です」
つまり、6年を通して見れば偶然とは言いにくい。
でも1回あたりの利益が薄いので、ひと月単位で見ると、マイナスの月は普通に来る。
これは、実際に運用するときの心構えとして、とても役に立ちました。
t値が高くても疑うべき3つの落とし穴
ここからが、私が実際に痛い目を見たところです。
t値は「たまたま」を疑う道具であって、「勝てる」を保証する道具ではありません。
落とし穴1:たくさん試すと、どれかは必ず当たる
t値2の基準は「偶然なら約5%」でした。
裏を返すと、優位性のないアイデアを20個試せば、1個くらいは偶然でt値2を超えます。
私は一時期、思いついたエントリー案を次々にAIと検証していて、連敗記録が19まで伸びたことがあります。
もしその中に1個だけt値2のものがあっても、それを「本物」と信じるのは危険です。
- 何個試したかを記録しておく
- たくさん試したあとなら、t値3くらいを求める
- 最後は作るときに見ていない期間や通貨ペアで確かめる
落とし穴2:データそのものが間違っていることがある
AIが調べてくれた「朝の決まった時間にドル円が上がる」という傾向は、t値5.9という強い数字が出ました。(バックテスト)
ところが、ほかの通貨ペアを並べてみると、12通貨ペアすべての売値が、同じ時間に同時に上がっていました。
正体は、早朝にスプレッドが大きく開いて、売値の側だけが押し下げられ、その後に戻る動き。値動きではなく、データの幻でした。
t値は、入れた数字が正しい前提で計算されます。
「ありえないほど強い」数字が出たら、まずデータを疑う。これは本当に大事です。
落とし穴3:時代が変わると、優位性も変わる
先ほどの「t値4.8」のEAも、その後、もっと前の時代の過去データでも試してみました。
結果は、ほぼゼロ。t値が高かった6年間の成績は、その前の時代には存在しなかったのです。(バックテスト)
t値は、テストした期間の中で偶然かどうかを教えてくれるだけです。
相場の性格が変われば、同じEAが同じように勝つとは限りません。
だからこそ、バックテストのあとにデモ口座でのフォワードテストが必要になります。
おまけ:マイナスのt値を「裏返せば勝てる」とは限らない
大きなヒゲの足で逆張りする案を試したら、t値−4.7の、はっきりした負けでした。
「なら逆に順張りすれば勝つのでは?」と、見ていない通貨ペアで試すと、そっちもt値−6.2の負け。(バックテスト)
大きなヒゲのあとの値動きは、上にも下にも往復していて、どちらに入っても損切りを刈られていました。
強く負ける=裏返すと勝てる、ではありません。
t値チェックリスト
| チェック | ひとこと |
|---|---|
| 損益を1トレードずつ並べたか | 合計ではなく1回ずつ |
| 単位をそろえたか | 複利やロット変更があるならRかpipsで |
| スプレッド込みの損益か | コストを引く前のt値は意味が薄い |
| t値は2以上か | 1〜2は「まだ分からない」 |
| 何個試した中の1つか | たくさん試したなら3以上を目安に |
| 作るときに見た期間を除いても残るか | 除いたt値も出してもらう |
| 強すぎる数字のとき、データを疑ったか | ほかの通貨ペアで同時に起きていないか |
| 別の時代・見ていない通貨でも崩れないか | 最後はフォワードテストで |
よくある質問
Q. t値2を超えたら、そのEAは勝てますか?
A. 分かりません。t値は「テストした期間の成績が偶然とは言いにくい」ことを示すだけで、将来の利益を保証するものではありません。私のEAも、t値が高かった期間の前の時代では、ほぼゼロでした。
Q. トレードが100回もないEAは、どうすればいいですか?
A. t値を出しても、ほとんどの場合「まだ分からない」になります。期間や通貨ペアを増やして回数を集めるか、デモでのフォワードテストで回数が増えるのを待つのが現実的です。
Q. PFやドローダウンとの関係は?
A. PFや最大ドローダウンは「どれくらい稼げて、どれくらいへこむか」、t値は「それが偶然ではないか」を見る数字です。役割が違うので、セットで見るのがおすすめです。成績の見方はEAの成績の見方にまとめています。
Q. トレード同士が関係していても使えますか?
A. 注意が必要です。t値は、1回1回のトレードがおたがいに関係しない前提の計算です。同じタイミングで複数のポジションを持つEAや、1回目と2回目が同じ値動きに賭けているEAでは、実際より高く出やすくなります。ざっくりの目安として使い、過信しないのが安全です。
まとめ
- バックテストのプラスには、実力と運の2種類がある
- t値は「運だけで出たか」を疑うための数字。2以上がひとつの目安
- エクセルなら
平均 ÷(標準偏差 ÷ √回数)で出せる - 回数が少ないと、同じ実力でもt値は低く出る
- たくさん試したあと・強すぎる数字・時代の変化には、t値が高くても注意
私がバックテストに騙された話は、連載の第4話に、
騙されないための確認項目はバックテストで騙されないためのチェックリストにまとめています。
AIとの検証で「同じ指摘が続いたら道具を疑う」ことになった話は、第5話からどうぞ。
関連: バックテストと検証 / はじめてのEA開発
連載: 第1話 / 第2話 / 第3話 / 第4話 / 第5話
※本ブログの内容は私個人の経験にもとづくもので、将来の利益を保証するものではありません。バックテストの結果は過去のデータによるものです。投資は自己責任でお願いします。


コメント