はじめに
この記事は「AI半導体は買いか売りか」を当てる記事ではありません。
やりたかったのは、日本AI半導体相場の価格モメンタムが強い一方で、内部ファクターの同期が崩れ始めているのかを、Hilbert変換やDTWで診断できるかを検証することです。
結論から言うと、きれいには成功せず株の大先生レベルの人の分析限界を感じました
月次29点のHilbert PLVは不安定で、min-max正規化したDTW sync scoreも危うい指標でした。
最終的には、週次化し、DTWを正規化せず D(t) 生値で見る形に落ち着きました。
先に結論
現時点で言えるのは、次の程度です。
日本AI半導体相場は、価格モメンタム自体は非常に強い。
ただし、内部ファクター同期をHilbert PLVやDTWで測ると、一枚岩の初動相場と断定できるほど安定した同期は確認できない。
週次DTWのD(t)生値では、長めの窓で内部ファクター波形の分散が強まっている可能性がある。
ただし、これは予測モデルではなく、探索的なレジーム診断である。
言えないことも明確です。
- これから崩壊する
- 天井が近い
- AI半導体バブルが終わる
- DTWが売りシグナルを出している
- Hilbert PLVで明確にレジーム転換を検出した
本稿の結論は、予測ではなく診断です。
発想: 表面価格と水面下の回転
最初の発想は、相場をトロコイド波のように見ることでした。
表面価格は前に進んでいる。
しかし水面下では、複数ファクターがそれぞれ回転している。
その回転がそろっていれば、相場は一枚岩の上昇波に見える。
逆に、水面下の回転がズレ始めると、表面価格はまだ上がっていても、内部構造は分散し始めているかもしれない。
もちろん、これは厳密な物理モデルではありません。
金融市場が海洋波の方程式に従うと言いたいわけではありません。
あくまで、「価格の表面」と「内部ファクターの同期」を分けて考えるための比喩です。
見たかったもの
今回見たかったのは、価格そのものではなく、複数ファクターの足並みです。
対象にしたファクターは以下です。
| ファクター | 内容 |
|---|---|
| 中核AI半導体 | SoftBank Group, 東京エレクトロン, アドバンテスト, キオクシア |
| 半導体装置 | 東京エレクトロン, アドバンテスト, レーザーテック, ディスコ, ルネサス, SCREEN |
| グローバル半導体 | SOX |
| 円 | USDJPY |
| AIインフラ | フジクラ, 古河電工, 住友電工, 三菱重工, 日立, NEC |
| 日経/TOPIX | 日経平均のTOPIXに対する相対 |
| breadth | テーマ銘柄の市場参加幅 |
見たい問いは単純です。
価格は強いとして、その中身はまだ同期しているのか?
失敗1: 月次29点でHilbert PLVを見る
まず、Hilbert変換で各ファクターの瞬時位相を取り、位相同期度 R(t) を計算しました。
R(t) = | mean(exp(i * theta_j(t))) |
R(t) が1に近いほど位相がそろい、0に近いほどばらけている、という見方です。
月次データで見ると、直近の R(t) は以下でした。
R(t) = 0.4869
同方向率 = 0.7500
表面的には、これは面白い結果です。
同方向率は高い。
つまり、多くのファクターはまだ同じ方向を向いている。
一方で、位相同期度はそこまで高くない。
つまり、方向は同じでも、タイミングはズレ始めているかもしれない。
しかし、ここで問題が出ました。
月次29点しかありません。
ブートストラップで見ると、直近 R(t) の不確実性はかなり大きい。
結果は以下です。
全期間R(t)平均: 0.8023
95%CI: [0.7481, 0.8536]
直近R(t): 0.4869
95%CI: [0.1290, 0.9295]
直近値のCIが広すぎます。
さらにHilbert変換は、系列全体の形を使う双方向フィルタ的な性質があります。
そのため、全期間を一括でHilbert変換した位相は、厳密にはリアルタイムのバックテスト信号ではありません。
これはかなり重要な制約です。
失敗2: Hilbertの窓長感度を見る
次に、52週ではなく月次の窓長感度を見る前段として、月次データで窓長を変えてみました。
結果はこうでした。
12カ月窓: 0.419
18カ月窓: 0.718
24カ月窓: 0.913
29カ月窓: 0.487
これはロバストとは言いにくいです。
窓長によって、同期が低いとも高いとも言えてしまう。
この時点で、月次Hilbert PLVだけで「成熟上昇」や「崩壊前兆」と言い切るのは無理だと判断しました。
失敗3: DTW sync scoreを作ったら正規化で壊れた
Hilbertの代替として、DTWを試しました。
DTWは、2つの時系列の波形がどれくらい似ているかを見る距離です。
そこで、全ファクターペアのDTW距離を平均し、分散度 D(t) を作りました。
D(t) = mean(pairwise DTW distance)
解釈はこうです。
D(t)が小さい = ファクター波形が近い = 同期が強い
D(t)が大きい = ファクター波形が乖離 = 分散が強い
最初は、Hilbert PLVと比較しやすいように、DTW距離を0-1正規化して sync score を作りました。
dtw_sync_score = 1 - minmax_normalized(D(t))
しかし、これがよくありませんでした。
月次DTWの直近値は以下でした。
12カ月窓: D(t)=0.1130, sync=1.0000
18カ月窓: D(t)=0.1060, sync=0.6350
24カ月窓: D(t)=0.0919, sync=0.3355
一見すると、sync scoreが大きくブレています。
しかし、D(t) 生値のレンジはわずかです。
D(t)レンジ = 0.0211
sync scoreレンジ = 0.6645
つまり、小さな距離差をmin-max正規化で過大に増幅していました。
これは指標設計ミスです。
この時点で、DTWは sync score に変換せず、生値 D(t) で見るべきだと判断しました。
修正1: 週次データに切り替える
月次29点という制約が大きすぎたので、日次価格から週次データを再構築しました。
月次から週次への置き換えは以下です。
| 月次 | 週次 |
|---|---|
| 6カ月リターン | 26週リターン |
| 12カ月リターン | 52週リターン |
| 6カ月MA breadth | 26週MA breadth |
| 36カ月z-score窓 | 156週z-score窓 |
| 18カ月最小期間 | 78週最小期間 |
キオクシアのような途中参加銘柄もあるため、バスケット作成も修正しました。
月次版では、単純に指数化価格を平均していました。
しかし、途中参加銘柄があると、単純平均では参加時点でバスケット水準が歪む可能性があります。
そこで週次版では、利用可能銘柄の等ウェイト週次リターンをチェーンリンクしました。
各週:
その時点で価格とリターンが取れる銘柄だけ使う
利用可能銘柄の週次リターンを平均
バスケット指数 = 前週バスケット指数 × (1 + 平均リターン)
重要なのは、bfill() を使わないことです。
キオクシアは、過去に価格を埋めるのではなく、参加可能になった後のリターンだけをバスケットに反映します。
週次化しても、HilbertとDTW sync scoreはまだ不安定
週次化後の結果は以下です。
週次数: 177
n_stocks: 14
directional_alignment: 0.8750
phase_energy: 0.7951
nikkei_52w_return: 0.7045
価格モメンタムは非常に強いです。
一方で、Hilbert PLVは窓長でかなり変わりました。
52週: 0.3322
78週: 0.6977
104週: 0.9009
PLV range: 0.5687
DTW sync scoreも同様です。
52週: D=0.2017, sync=0.7519
78週: D=0.2204, sync=0.3798
104週: D=0.2234, sync=0.0000
sync range: 0.7519
週次化しても、Hilbert/DTW sync scoreは窓長依存が強い。
したがって、これらをそのままレジーム分類のシグナルにするのは危ないです。
修正2: DTWを正規化せずD(t)生値で見る
最終的に、DTWは正規化せず、D(t) 生値で見ることにしました。
D(t) = mean(pairwise DTW distance)
週次DTWの直近値は以下です。
52週: D(t)=0.2017
78週: D(t)=0.2204
104週: D(t)=0.2234
D(t)レンジ: 0.0217
sync scoreでは大きく壊れて見えましたが、生値のレンジは小さいです。
ただし、全期間分布内の位置を見ると、少しニュアンスが出ます。
52週: 30.7 percentile
78週: 89.8 percentile
104週: 100.0 percentile
52週では中位寄りですが、78週・104週では高分散側です。
つまり、短めの窓ではそこまで異常ではないが、長めの窓では内部ファクター波形の分散が強まっている可能性があります。
52週D(t)のブートストラップ95%CIは以下です。
D(t)=0.2017
95%CI [0.1786, 0.2272]
ただし、このブートストラップは時系列順序を保持しません。
正式な時系列推論ではなく、直近D(t)の不確実性を見る目安です。
最終的な解釈
この分析から、強く言えることは多くありません。
しかし、何も言えないわけでもありません。
現時点での慎重な解釈は以下です。
日本AI半導体相場は、崩壊前夜と断定する局面ではない。
価格モメンタムは非常に強く、同方向率も高い。
ただし、内部ファクター同期は一枚岩とまでは言い切れない。
週次DTWの長めの窓では、内部ファクター波形の分散が高位にある。
したがって、「高い価格モメンタムを保ったまま、内部同期にズレを抱え始めた成熟局面」と見るのが最も慎重な解釈である。
重要なのは、これは天井当てではないということです。
買いでも売りでもなく、
価格は強いが、内部同期を一枚岩とは言い切れない成熟局面。
これが今回の結論です。
失敗から得た教訓
今回いちばん重要だったのは、きれいな図ではなく、指標が壊れる過程でした。
教訓は次の通りです。
- 月次29点でHilbert PLVをやると、端点効果と窓長依存がきつい
- min-max正規化は、小さな差を大きなシグナルに見せることがある
- DTWも窓長依存からは逃げられない
- 途中参加銘柄を含むバスケットでは、単純平均ではなくチェーンリンクが必要
- 予測モデルとレジーム診断は分けるべき
免責
本稿は投資助言ではありません。
Hilbert変換、DTW、ブートストラップは、いずれも相場内部構造を見るための探索的な診断ツールとして使っています。
売買判断には、価格、業績、金利、為替、需給、ポジショニング、リスク許容度を別途考慮する必要があります。






