「月足で反発を見る手法には優位性がある」——よく語られる見方です。反発の定義を7つ用意し、期間2つ・系統2つの計28通りで測りました。結果は、どの定義でも当サイトの判定基準を満たしませんでした。
定義は測る前に固定しました。件数が検定に足りるかを数えるための下調べで、予備的な平均値を先に見てしまっています。その事実をここに開示したうえで定義を凍結し、以後変更していません。隠すと「結果を見てから定義を選んだのではないか」という疑いを残すためです。
判定は2つの方法の両方で |t| ≥ 2 を要求しました。片方だけで越えるものは、分析の選び方に依存しているとみなして採りません。超過は全期間平均との差で測ります(指数を指数で測る以上、指数ベンチマークの超過リターンは意味を持たないため)。
28検定を回しています。|t| ≥ 2 は偶然でも1〜2件は出る本数です。だから全定義・全期間の結果を下に並記します。
そのうえで、この設計で「見える下限」も出しました。標準ヘッダの最小検出可能効果がそれで、指数なら 月次リターンで ±1.41〜4.23pt、個別なら ±0.56〜1.68pt です。これより小さい効果は、実在しても今回のデータ量では見えません。たとえば「反発の翌月は平均0.5pt高い」という程度の効果が指数に本当にあったとしても、この検証はそれを検出できません。したがって本記事の結論は「効果はゼロだった」ではなく、「この大きさより上の効果は無かった」です。下限は定義ごとに違い、発火が少ない定義ほど大きくなります(前月−10%超は2年に1回程度しか起きないので ±4.18pt まで見えません)。
指数は生存バイアスを受けません。結論を担うのはこちらです。全期間平均は翌月 +0.42% / 3ヶ月後 +1.25%。
| 定義 | 期間 | 発火 | エピソード | ep平均 | ep t | 非重複平均 | 非重複 t | 判定 |
|---|---|---|---|---|---|---|---|---|
| ① 2本連続陰線後の陽転 | 1ヶ月 | 53 | 53 | -0.19% | -0.68 | -0.19% | -0.68 | 差は出なかった |
| ① 2本連続陰線後の陽転 | 3ヶ月 | 53 | 53 | +1.20% | -0.04 | +1.20% | -0.04 | 差は出なかった |
| ① 3本連続陰線後の陽転 | 1ヶ月 | 24 | 24 | -1.62% | -1.35 | -1.62% | -1.35 | 差は出なかった |
| ① 3本連続陰線後の陽転 | 3ヶ月 | 24 | 24 | +0.99% | -0.15 | +0.99% | -0.15 | 差は出なかった |
| ② 長下ヒゲ(下ヒゲ÷実体 ≧ 2.0・陽線) | 1ヶ月 | 42 | 38 | +0.23% | -0.22 | +0.38% | -0.06 | 差は出なかった |
| ② 長下ヒゲ(下ヒゲ÷実体 ≧ 2.0・陽線) | 3ヶ月 | 42 | 38 | +2.20% | +0.59 | +2.46% | +0.76 | 差は出なかった |
| ③ 前月 −5%超の下落からの当月 | 1ヶ月 | 80 | 62 | +0.48% | +0.09 | +0.77% | +0.46 | 差は出なかった |
| ③ 前月 −5%超の下落からの当月 | 3ヶ月 | 80 | 62 | +0.63% | -0.49 | +1.36% | +0.07 | 差は出なかった |
| ③ 前月 −10%超の下落からの当月 | 1ヶ月 | 20 | 18 | +2.03% | +0.83 | +2.14% | +0.83 | 差は出なかった |
| ③ 前月 −10%超の下落からの当月 | 3ヶ月 | 20 | 18 | +2.06% | +0.43 | +2.61% | +0.66 | 差は出なかった |
| ④ 12ヶ月移動平均にタッチして陽線 | 1ヶ月 | 69 | 48 | -0.06% | -0.67 | +0.46% | +0.07 | 差は出なかった |
| ④ 12ヶ月移動平均にタッチして陽線 | 3ヶ月 | 69 | 48 | +0.46% | -0.62 | +1.67% | +0.34 | 差は出なかった |
| ④ 24ヶ月移動平均にタッチして陽線 | 1ヶ月 | 37 | 31 | -0.81% | -1.38 | -0.37% | -0.93 | 差は出なかった |
| ④ 24ヶ月移動平均にタッチして陽線 | 3ヶ月 | 37 | 31 | -0.37% | -0.88 | +0.25% | -0.47 | 差は出なかった |
14検定すべてで差は出ませんでした。|t| の最大は 1.38(判定基準の 2 に遠く及びません)。下調べで目立って見えた「前月 −10%超」も、翌月 +2.03%(全期間平均 +0.42%)に対して t = +0.83 です。点推定の大きさは結論になりません。
| 定義 | 期間 | エピソード | 暦月 | ep平均 | ep t | 月平均 | 月 t | 判定 |
|---|---|---|---|---|---|---|---|---|
| ① 2本連続陰線後の陽転 | 1ヶ月 | 13,700 | 296 | +1.13% | -0.28 | +1.12% | -0.10 | 差は出なかった |
| ① 2本連続陰線後の陽転 | 3ヶ月 | 13,597 | 294 | +3.59% | +0.18 | +3.56% | +0.00 | 差は出なかった |
| ① 3本連続陰線後の陽転 | 1ヶ月 | 6,483 | 288 | +1.34% | +1.44 | +1.28% | +0.30 | 差は出なかった |
| ① 3本連続陰線後の陽転 | 3ヶ月 | 6,434 | 286 | +3.52% | -0.12 | +3.50% | -0.08 | 差は出なかった |
| ② 長下ヒゲ(下ヒゲ÷実体 ≧ 2.0・陽線) | 1ヶ月 | 10,738 | 293 | +0.93% | -2.30 | +0.96% | -0.63 | 差は出なかった |
| ② 長下ヒゲ(下ヒゲ÷実体 ≧ 2.0・陽線) | 3ヶ月 | 10,660 | 291 | +2.95% | -3.28 | +2.90% | -1.09 | 差は出なかった |
| ③ 前月 −5%超の下落からの当月 | 1ヶ月 | 20,797 | 300 | +1.23% | +1.08 | +1.28% | +0.36 | 差は出なかった |
| ③ 前月 −5%超の下落からの当月 | 3ヶ月 | 20,599 | 298 | +3.85% | +1.87 | +3.85% | +0.43 | 差は出なかった |
| ③ 前月 −10%超の下落からの当月 | 1ヶ月 | 10,427 | 296 | +1.19% | +0.25 | +1.48% | +0.63 | 差は出なかった |
| ③ 前月 −10%超の下落からの当月 | 3ヶ月 | 10,297 | 294 | +3.64% | +0.34 | +3.87% | +0.37 | 差は出なかった |
| ④ 12ヶ月移動平均にタッチして陽線 | 1ヶ月 | 14,972 | 297 | +0.38% | -10.38 | +0.88% | -0.99 | 差は出なかった |
| ④ 12ヶ月移動平均にタッチして陽線 | 3ヶ月 | 14,806 | 295 | +2.78% | -4.96 | +3.13% | -0.73 | 差は出なかった |
| ④ 24ヶ月移動平均にタッチして陽線 | 1ヶ月 | 10,073 | 297 | +0.11% | -11.47 | +0.76% | -1.30 | 差は出なかった |
| ④ 24ヶ月移動平均にタッチして陽線 | 3ヶ月 | 9,972 | 295 | +2.07% | -7.77 | +2.57% | -1.66 | 差は出なかった |
こちらも14検定すべてで差は出ませんでした。反発側に有利な追い風がある集団で測ってなお届かないので、規則どおりより強い否定として結論に使います。
エピソード単位の t 値だけを見ると −11.47 のような大きな値が出ますが、これは読んではいけない数字です。銘柄は同じ月に一緒に動くので、14,972 件のエピソードを独立した標本として扱うと標準誤差が小さく出すぎます。暦月でまとめ直すと同じ項目が −0.99 になります。この差そのものが、クラスタ補正を併走させる理由です。
個別の月足には壊れた記録が混じっていました。たとえば 8303 の 2023年8月は、始値 2824・安値 2791 に対して高値と終値が 553億という値でした(上場廃止の直前)。これを1件含めるだけで、全体の平均月次リターンが +14,972% になります。
そこで「同一バーの中で 高値÷安値 が 10 以上なら壊れた記録」とみなし、その月以前を切り捨てました(リターンが不連続をまたがないようにするため)。実測 144,258 本の分布は中央 1.136・p99.9 が 2.35・p99.99 が 5.32 で、10以上は9本(0.006%)しかありません。これは「大きなリターン」ではなくバー内の不整合なので、落としても方向に偏りません。本番では 6銘柄・673ヶ月が該当しました。
指数は /api/monthly-backtest、個別は /api/monthly-backtest?stocks=1 がそのまま同じ数値を返します(どちらも noindex の管理用)。月足の取得には range=50y を使っています —— Yahoo の range=max は月足で168本しか返さず、開始日が同じに見えるため「これが全部だ」と誤認します。
本記事は事前に定義を固定した検証です。これとは別に、反発の定義とレジーム条件を掛け合わせた探索も行いました。目的は結論を出すことではなく、今後どの仮説を本検定するかを決めることです。結果は 月足の反発 × レジーム条件(探索) に分けてあります。あちらで見つかったものは結論ではありません。