バックテストで PF 1.8 が出た。30取引。これは実力でしょうか、それとも偶然でしょうか。 答えを出すために、実力が確実にゼロの売買(ランダムな時刻に、ランダムな方向で建てる売買)を 実際の為替データで18万件つくり、取引数ごとに PF がどこまでばらつくかを測りました。 コストを引いた後でも、30件なら PF 1.5 以上が 11% の確率で出ます。 100本試して一番良いものを選べば、50件で PF 2.30 です。 取引数別の目安表と、私たちの研究で実際に起きた「PFの崩壊」の記録をあわせて公開します。
プロフィットファクター(PF)は、総利益を総損失で割った数字です。1を超えれば利益が損失を上回っています。 定義はこれだけで、基本の読み方は別の記事にまとめました。
この記事で扱うのは、その先の問題です。PF は取引数が少ないほど大きく振れます。 10回コインを投げて7回表が出ても、そのコインが歪んでいるとは言えません。PF も同じで、 30件の取引で出た PF 1.8 は、実力がゼロでも一定の確率で出ます。問題は「その確率がいくらなのか」を、 ほとんどの人が知らないまま判断していることです。
そこで、確率を実際に測りました。理屈で近似するのではなく、実際の為替の値動きの上で、 実力がゼロであることが確実な売買を大量に作って、そのPFがどう散らばるかを数えています。
通貨ペアは USDJPY・EURUSD・GBPJPY、各ペア×各ルールで6万件、合わせて18万件の取引を作りました。 コストを引く前の平均損益は、どのルールでもほぼ0pip(−0.10〜+0.05pip)で、狙いどおり「何もない」売買になっています。
実力ゼロの売買に往復1.5pipのコストを乗せると、母集団としての真のPFは 0.76〜0.85 です(60分保有で0.76)。 勝率75%になる「利確10・損切り30」でも PF は 0.81。勝率が高いことと、PFが1を超えることは別の話です。
真のPFが0.76しかない売買でも、取引数が少なければ大きな数字が出ます。
| 取引数 | PF≥1.3 | PF≥1.5 | PF≥2.0 | PF≥1.5(利確20/損切り20) |
|---|---|---|---|---|
| 10件 | 28.0% | 23.7% | 16.1% | 17.7% |
| 20件 | 21.8% | 16.2% | 8.2% | 12.4% |
| 30件 | 16.7% | 11.3% | 4.4% | 5.7% |
| 50件 | 11.1% | 6.3% | 1.6% | 2.8% |
| 100件 | 4.2% | 1.7% | 0.1% | 0.3% |
| 200件 | 0.8% | 0.1% | 0.0% | 0.0% |
| 300件 | 0.2% | 0.0% | 0.0% | 0.0% |
読み方の例です。「30件で PF 1.5」という結果を10本持ってきたら、そのうち1本は中身が空でも不思議ではありません。 逆に、200件を超えるとコストを乗せた実力ゼロの売買が PF 1.3 を超えることはほぼ無くなります。 表の数字は決済ルールによって変わり、利益と損失が上下対称なルール(利確20・損切り20)のほうが偶然の振れは小さく出ました。
表1は「1本だけ試した場合」の確率です。実際のバックテストでは、パラメータを変えて何十通り、何百通りと試し、 一番良いものを選びます。この「選ぶ」という操作が、偶然をさらに大きく見せます。
| 取引数 | 10本から最良 | 100本から最良 | 1000本から最良 |
|---|---|---|---|
| 30件 | 1.77 | 3.21 | 5.13 |
| 50件 | 1.47 | 2.30 | 3.25 |
| 100件 | 1.21 | 1.65 | 2.11 |
| 200件 | 1.06 | 1.32 | 1.56 |
| 300件 | 0.99 | 1.19 | 1.37 |
| 1000件 | 0.88 | 0.97 | 1.05 |
「100通り試して、一番良かったのが PF 1.6」という結果は、100件の取引なら実力ゼロで出る数字とほぼ同じです(表2の1.65)。 ここで大事なのは、試した回数を正直に数えることです。私たちが全試行を台帳(Trial Ledger)に記録しているのはこのためで、 試行回数が分からなければ、出てきた PF を何と比べればよいかが決まりません。
ここまでは「偽物が本物に見える」話でした。同じ理屈で、本物が偽物に見えることも起きます。 全取引に一定のpipを足して、母集団としての真のPFを 1.2 と 1.5 にした売買を作り、同じように測りました。
フォワードテストを3か月回して PF が 0.9 だった。そういうとき、それだけで「戦略が壊れた」とは言えません。 取引数が100件なら、PF 1.2 の本物でもその程度の数字は4回に1回以上出ます。 止めるかどうかは PF の一時的な値ではなく、事前に決めた取引数と基準で判断するべきです。
この測定の数字は、机上の話ではありません。当研究所の棄却記録には、良く見えた PF が後で崩れた例がいくつも残っています。
上の3件は、コストの計上漏れや約定の再現性が主因でした。下の2件は、探索で良く見えた数字が確認期間で縮んだ例で、 まさに表2の「選んだ幸運」が剥がれた形です。
3つ目は見落とされやすい点です。MT5テスターが週明けのスプレッドを約6分の1しか計上していなかった事例では、 テスターの PF がPythonより高く出ていました。コストが軽いほど、実力ゼロの売買でも PF は1に近づき、偶然で1を超えやすくなります。
無作為な時刻に建てた取引は、互いにほぼ独立です。実際の戦略は同じ相場の局面に取引が固まり、 取引どうしが似た結果になりやすいため、同じ件数でも偶然の振れは本記事の数字より大きくなります。 つまり本記事の表は、偶然の大きさを控えめに見積もった下限と読んでください。
また、コストは定数で控除しており、時間帯や約定の瞬間のスプレッド拡大は含めていません。 通貨ペアは3つ、期間は2020〜2025年です。決済ルールによって数字が変わることは表1のとおりで、 自分の戦略に当てはめるときは、同じ決済ルールの行を見るのが確実です。
取引数・試行回数・コストの計上という、検証で最初に疑うべきことを、自分のロジックを棄却してきた手順として9つの規律にまとめた巻です。
Kindleで読む →測定条件: 価格=USDJPY・EURUSD・GBPJPY の1分足(BID・UTC換算)2020-01〜2025-12/建て時刻=月〜木の 00:00–20:59 UTC から一様無作為、方向は50%ずつ(乱数シード固定)/ 出口規則=60分保有、利確20・損切り20pip、利確10・損切り30pip、利確30・損切り10pip(利確・損切り型は最長24時間。同じ1分で両方に触れたら損切り優先)/ コスト=往復 0・1.5・3.0pip の定数控除(感度の確認用。時刻別の実測コスト模型ではない)/各取引数につき20,000本を復元抽出。 掲載した数値はすべて過去データに対する集計であり、フォワードテスト・実口座運用の結果ではありません。
免責: 本ページは検証プロセスの開示を目的とした研究ノートです。投資助言ではありません。特定の金融商品・取引業者の利用を推奨するものではありません。 バックテスト・過去データの集計は将来の利益を保証するものではありません。FX取引には元本割れのリスクがあります。 図表はすべて実測データからPythonで描画したものであり、生成AIによる作画は含みません。