ダブルボトム:二番底の形から上昇への転換を捉える
- 機械的に定義すると、19年でダブルボトムは146件。ネックラインを抜けたのは72件(49.3%)で、半分は失敗に終わった
- 突破の終値で買い20日保有すると、年率3.5%・最大下落率−20.1%・PF2.21。ただし取引は19年で54回と少ない
- 保有日数を16日・24日に変えると年率は2.0%・2.1%に下がる。20日という設定が「たまたま良い山」にある可能性がある
ダブルボトムは「2回目の底」と「ネックライン」
ダブルボトムは、株価がほぼ同じ水準で2回底を付け、W字のような形になる値動きです。2つの谷の間にできた山の高値を通る水平線をネックラインと呼びます。一般に、終値がネックラインを上抜けた時点で「パターンの完成」とされ、底打ちのサインと考えられています。
今回は、あいまいさを残さないよう、次のように決めました。谷(スイングロー)は「その日の安値が、前後5営業日を含む11日間でいちばん低い」日です。ただし後ろの5日がそろうまで谷かどうかはわからないので、谷が確定するのは5営業日後とします。
W字 = 谷の間隔10〜60日、安値の差3%以内
(間の安値は低い方の谷を下回らない)
ネックライン = 2つの谷の間の最高値
「完成」を待つかどうか
2つ目の谷が確定した日の終値は、ネックラインより平均2.72%下にありました。ここで先回りして買うか、ネックライン突破を待つかで結果は変わります。突破を待てば高く買うことになりますが、失敗したWを避けられます。
「2回目の底を付けたら、もう下がらない」わけではありません。今回見つかった146件のうち39件は、ネックラインを抜ける前に終値が谷を割り込みました。W字は、完成するまではただの「下げの途中」かもしれません。
実際の日経平均で見てみる
2026年3月9日(安値51,408円)と3月31日(50,559円)に谷ができ、その間の最高値55,745円がネックラインになりました。谷2は4月7日に確定し、翌4月8日に終値56,308円で突破。20営業日後には+11.43%でした。
うまくいかない例もあります。2024年12月19日の谷2から12月27日に突破(40,281円)しましたが、20日後は−1.76%。直近500日に見つかったWは14件で、突破は6件。残る8件は期限切れ(5件)か安値割れ(3件)でした。直近では8月25日(64,609円)と9月14日(62,726円)の谷から、10月1日に終値68,956円でネックライン66,955円を突破し、10月2日(68,309円)時点で保有中です。
検証:ネックライン突破で買い、20日保有
ルール:上の定義でダブルボトムを探し、谷2の確定日から谷2の20営業日後までに終値がネックラインを上回った最初の日の終値で買い、20営業日後に売る。保有中に次の突破が来たら保有を延長します。結果を見る前に決めた主ルールで、感度は保有16日・24日です。比較として「突破を待たず谷2の確定日に買う」版と、事前に決めた別案「目標=ネックライン+谷の深さ、損切り=谷の安値割れ、最長60日」も試しました。条件は共通の検証ルールのとおりです。
| 戦略 | 最終資産 | 年率 | 最大下落率 | 取引 | 勝率 | PF | 保有率 |
|---|---|---|---|---|---|---|---|
| 買い持ち | 3.93倍 | 7.3% | −61.4% | — | — | — | 100% |
| 突破→20日保有 | 1.97倍 | 3.5% | −20.1% | 54 | 54% | 2.21 | 25% |
| 突破→16日保有 | 1.47倍 | 2.0% | −21.9% | 55 | 58% | 1.60 | 20% |
| 突破→24日保有 | 1.49倍 | 2.1% | −33.4% | 53 | 55% | 1.49 | 29% |
| 谷2の確定日に買い→20日保有 | 1.48倍 | 2.1% | −49.5% | 72 | 60% | 1.33 | 50% |
| 突破→目標/損切り | 0.97倍 | −0.1% | −35.8% | 46 | 63% | 1.06 | 28% |
突破は72件ありましたが、別々のWが同じ日に突破する例や、保有中の突破があるため、取引は54回になりました。1回あたりの平均は+1.40%、中央値は+0.60%。最大の勝ちは+13.89%、最大の負けは−8.60%です。前半(〜2016年9月)の年率3.4%に対し後半は3.6%と、成績は安定していました。
目標と損切りを置く別案は、23回が目標に届いたものの、損切り14回の損が大きく、PF1.06にとどまりました。谷2の確定日に先回りする版は前半が年率−2.70%で、最大下落率も−49.5%と大きくなります。
突破日のその後は、ばらつきが大きい
20日後の上昇率は57.8%で、すべての日の58.0%と変わりません。平均を押し上げているのは、2012年11月(+11.13%)や2023年5月(+11.16%)のような、少数の大きな上昇です。
読み解き
- ネックライン突破を待つ意味はあった。谷2の確定日に先回りすると最大下落率−49.5%、突破を待つと−20.1%。146件中39件が安値割れ、35件が期限切れで、待つことで失敗したWの多くを避けられた。
- ただし回数が少なく、数字は不安定。19年で取引54回。保有を16日・24日に変えると年率は2.0%・2.1%に下がり、20日の3.5%だけが目立つ。突破日の20日後の上昇率も57.8%で全日並みだった。
- 形の定義を変えても、プラスは保った。谷の幅±4・6日、安値の差2〜4%、間隔などを変えた8通り(参考)は年率2.5〜4.4%。#033 包み足(PF2.07、45回)と同じく、パターン系は「質は悪くないが数が足りない」。
成績のまとめ(ネックライン突破で買い20日保有)
取引は54回と少ない。PF2.21、最大下落率−20.1%は良好だが、年率3.5%は買い持ち7.3%の半分ほどで、保有率は25%。保有日数を±20%変えると年率が2.0%前後まで落ちる点も気になる。ダブルボトムは「単独で売買するには機会が少ない」パターンといえる。
自分で試す(TradingView)
//@version=6
indicator("ダブルボトム(機械的定義)", overlay = true, max_bars_back = 200)
k = input.int(5, "谷の判定幅(前後N日)")
tol = input.float(3.0, "安値の差(%)")
gmin = input.int(10, "最短間隔")
gmax = input.int(60, "最長間隔")
win = input.int(20, "谷2から突破を待つ日数")
var float pL = na // 直前の谷の安値
var int pB = na // 直前の谷のバー
var float neck = na
var float lo = na
var int t2 = na
pl = ta.pivotlow(low, k, k) // k本後に確定(先読みなし)
if not na(pl)
b = bar_index - k
if not na(pB)
g = b - pB
if g >= gmin and g <= gmax and math.abs(pl / pL - 1) <= tol / 100
float hh = high[k + 1]
float ll = low[k + 1]
for i = k + 1 to k + g - 1
hh := math.max(hh, high[i])
ll := math.min(ll, low[i])
if ll >= math.min(pl, pL)
neck := hh
lo := math.min(pl, pL)
t2 := b
pL := pl
pB := b
buy = false
if not na(neck)
if close < lo
neck := na
else if close > neck
buy := true
neck := na
else if bar_index - t2 >= win
neck := na
plot(neck, "ネックライン", color.orange, 2, plot.style_linebr)
plotshape(buy, "突破で買い", shape.triangleup, location.belowbar, color.green, size = size.small)
// 検証では、買いから20営業日後に売り。簡易版のため、谷は直前の谷とだけ比べる

