基本的な原理
FANG+銘柄(META、AMZN、AAPL、NFLX、GOOGLなど)の相関指数と株価の関係を分析し、視覚的に理解できるようにグラフ化・可視化する。この分析により、市場の動きがどのように相関関係に影響を受けるのかを把握できます。その結果、株価の暴落・上昇を予測する。
この分析は、株価爆上げ(あるいは爆下げ)時はすべての銘柄の株価が上昇(あるいは暴落):つまり株価の相関係数は大きくなり平均相関係数が大きくなり、逆に平時は描く銘柄の株価はバラバラにうごくため、相関係数が小さくなる。Indexがボックス的に動く場合、これらが交互に現れることにある。
株価と平均相関指数
データの取得
まず、株価データを取得します。yfinance ライブラリを使って、2024年1月から2025年6月までのFANG+銘柄の株価を収集します。
import yfinance as yf
# FANG+のティッカー
tickers = ["META", "AMZN", "AAPL", "NFLX", "GOOGL", "MSFT", "TSLA", "NVDA", "PYPL", "BABA"]
# 株価データの取得
data = yf.download(tickers, start="2024-01-01", end="2025-06-07")["Close"]
2. 相関指数の計算
次に、株価のリターンを計算し、7日間の移動相関指数を求めます。これにより、直近1週間の市場の相関関係がどのように変化するかを分析できます。
import pandas as pd
# 日次リターンの計算
returns = data.pct_change().dropna()
# 7日間(1週間)の移動相関指数を計算
rolling_correlation = returns.rolling(7).corr().groupby(level=0).mean()
3. 相関指数と株価を同時に描画
相関指数と株価の変動を一つのグラフで描画し、市場の動きと相関関係の変化を直感的に把握できるようにします。twinx() を使い、相関指数を 左軸(青)、株価平均を 右軸(赤) に設定します。
import numpy as np
import matplotlib.pyplot as plt
# 週ごとの移動相関を計算(全銘柄の平均値を算出)
weekly_correlation = returns.rolling(7).corr().groupby(level=0).mean().mean(axis=1)
# グラフの描画
fig, ax1 = plt.subplots(figsize=(12, 6))
# 相関指数(左軸)
ax1.plot(weekly_correlation.index, weekly_correlation, label="Weekly Rolling Correlation Index", color="blue")
ax1.set_xlabel("Date")
ax1.set_ylabel("Correlation Index", color="blue")
ax1.tick_params(axis='y', labelcolor="blue")
ax1.legend(loc="upper left")
ax1.grid()
# 株価(右軸)
ax2 = ax1.twinx()
ax2.plot(data.index, data.mean(axis=1), label="FANG+ Stock Price Avg", color="red")
ax2.set_ylabel("Stock Price (Avg)", color="red")
ax2.tick_params(axis='y', labelcolor="red")
ax2.legend(loc="upper right")
# X 軸のフォーマット修正
plt.xticks(rotation=45)
# タイトルの追加
plt.title("FANG+ Weekly Rolling Correlation Index vs. Stock Prices")
# 表示
plt.show()
出力例
ここまでのまとめ
この可視化によって、FANG+銘柄の 株価変動と市場の相関指数の関係 をより明確に把握出来ました。
✅ 市場が安定しているときは相関指数が小さくなる傾向
✅ 市場の変動が大きいと、銘柄間の相関が大きくなる
✅ 市場の急落・急騰の際、相関指数にどのような変化があるかを分析可能
急落・急騰時の相関指数ふるまい分析
はじめに
市場の動きは 暴落→安定→上昇 というサイクルで進むことが多く、この変動はFANG+銘柄の株価にも反映されます。ここでは、相関指数と株価を同時に可視化 し、このサイクルがどのように影響しているかを分析します。
1. 分析の目的
市場のボラティリティが変化する際に、銘柄間の相関がどのように変わるか を確認し、相関の変化が株価のトレンドと関連しているかを検証します。特に 暴落期の相関上昇、安定期の相関低下、上昇期の相関変化 に注目します。
2. データの取得
分析には 過去の上げ下げの一サイクル期間 を使用します。yfinance を利用し、2025年1月から2025年5月のデータを取得します。
期間以外、上記と同一のため省略
3. 相関指数の計算
各銘柄の 日次リターン を算出し、過去7日間の相関指数の変化 を分析します。
上記と同一のため省略
4. 相関指数と株価を同時に描画
株価の変化と相関指数の変動を 一本のグラフ にプロットし、暴落→安定→上昇のサイクルでどのような変化が起きているかを確認します。
import numpy as np
import matplotlib.pyplot as plt
# 株価の平均を算出
avg_stock_price = data.mean(axis=1)
# 散布図の描画(X軸:株価、Y軸:相関指数)
plt.figure(figsize=(8, 6))
plt.plot(avg_stock_price.loc[weekly_correlation.index], weekly_correlation, "-o", color="blue", alpha=0.5)
# 各ポイントに日付ラベルを付ける
for x, y, date in zip(avg_stock_price.loc[weekly_correlation.index], weekly_correlation, weekly_correlation.index):
plt.text(x, y, date.strftime('%m-%d'), fontsize=10, ha='right', va='bottom', color="black")
plt.xlabel("Average Stock Price (FANG+)")
plt.ylabel("Weekly Rolling Correlation Index")
plt.title("Stock Price vs. Correlation Index")
plt.grid()
plt.show()
出力
2020.3コロナ暴落時
data = yf.download(tickers, start="2020-02-01", end="2020-04-01")["Close"]
2024.8暴落時
data = yf.download(tickers, start="2024-06-01", end="2024-09-01")["Close"]
2025.4暴落時
data = yf.download(tickers, start="2025-02-01", end="2025-05-01")["Close"]
現在の様子
data = yf.download(tickers, start="2025-03-15", end="2025-06-07")["Close"]
5. 結果と考察
🔹 暴落期
- 株価が急落すると、銘柄間の相関が急上昇する傾向がある。
- 市場が不安定になると、大手銘柄同士の動きが似てくる。
🔹 安定期 - 株価の変動が落ち着くと、相関指数も低下する傾向がある。
- 市場の参加者が様子見をするため、個別銘柄の動きが分散する。
🔹 上昇期 - 市場が回復して株価が上昇すると、相関指数は一定の範囲内で推移する。
- テクノロジー企業への資金流入が増えると、相関が上昇することも。
結論
🔹 暴落は、グラフの右下領域から始まり、グラフの左上領域で終了する
🔹 FANG+にとって、今まさに暴落前の高値圏の可能性が高い
注意
あくまで解析からの結論であり、手法は確立したものではありません。
投資は自己責任で実施してください。著者は一切の責任を負いません。