Pythonで株価分析応用|Googleトレンドと相関・スコア・人気比較

前回の記事「Pythonでできる!Googleトレンド×株価分析入門【初心者向け】」では、Googleトレンドと株価を組み合わせて、基本的なグラフ表示や相関の調べ方を紹介しました。

今回はそれを一歩進め、以下の3つの分析を行っていきます:

  1. 相関スコア+ピーク検出
  2. 変化率スコアの自動算出(スコアリング)
  3. 他銘柄のトレンド比較

すべてPythonだけで実装可能。コードも簡潔なので、初心者の方でも試せます!


目次

1. 相関分析+トレンドのピーク検出で“山場”を見つけよう

1.1. 目的

  • Googleトレンドと株価の相関係数を出す
  • トレンドデータのピーク(山)の日付と株価の動きを照らし合わせる

どのタイミングで注目が集まり、それが株価にどう影響しているのかを、グラフで直感的に把握できます。

1.2. 実装コード

from pytrends.request import TrendReq
import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt
from scipy.signal import find_peaks

# データ収集
pytrends = TrendReq(hl='en-US', tz=360)
pytrends.build_payload(["Apple stock"], timeframe='2024-04-01 2024-04-25')
trend_series = pytrends.interest_over_time()["Apple stock"].squeeze()  # ← ここ修正

# 株価取得
price_series = yf.download("AAPL", start="2024-04-01", end="2024-04-25")["Close"].squeeze()

# 日付で揃える & データ結合
df = pd.DataFrame({
    "Trend": trend_series,
    "Price": price_series
}).dropna()

# 相関係数
correlation = df["Trend"].corr(df["Price"])
print(f"📊 相関係数: {correlation:.3f}")

# ピーク検出
peaks, _ = find_peaks(df["Trend"])
print("📍 トレンドのピーク日:")
for peak in peaks:
    date = df.index[peak].strftime('%Y-%m-%d')
    print(f" - {date}: トレンド={df['Trend'].iloc[peak]}, 株価={df['Price'].iloc[peak]}")

# グラフ
plt.figure(figsize=(14, 6))
plt.plot(df.index, df["Price"], label="AAPL Price", linewidth=2)
plt.plot(df.index, df["Trend"], label="Google Trend", linestyle="--", color="orange")
plt.scatter(df.index[peaks], df["Trend"].iloc[peaks], color='red', label='Trend Peaks')
plt.title("AAPL Stock vs Google Trend ('Apple stock')")
plt.legend()
plt.grid()
plt.tight_layout()
plt.show()

1.3. グラフ出力例

  • AAPL株価Googleトレンドの推移(折れ線グラフ)
  • 赤点(●)で示されるのがトレンドのピーク
📊 相関係数: 0.684
📍 トレンドのピーク日:
 - 2024-04-03: トレンド=88, 株価=168.85269165039062
 - 2024-04-12: トレンド=100, 株価=175.72027587890625
 - 2024-04-19: トレンド=88, 株価=164.2245635986328

赤い点(●)は検索トレンドのピークで、株価の変動と重なっている日もあります。特に4月11日前後では、両方が一緒に上昇しています。
たとえば4月11日前後では、Googleトレンドと株価が同時に上昇しており、注目の高まりが価格にも影響している可能性があります。

1.4. 読み取りポイント

  • 赤丸が検索トレンドの(ピーク)
  • ピークの直前や直後に株価が動いていれば、「注目度の高まり」が市場に影響を与えているかもしれません

2. 変化率スコアで“注目銘柄”を自動検出!

2.1. 目的

  • Googleトレンド、株価、出来高それぞれの変化率を組み合わせて
  • 簡易的な「注目度スコア」を算出

一時的な検索トレンドの上昇でも、株価や出来高の動きが重なれば、その銘柄が「注目されている」と判断できます。

2.2. 実装コード

from pytrends.request import TrendReq
import yfinance as yf
import pandas as pd

# データ取得
pytrends = TrendReq()
pytrends.build_payload(["Apple stock"], timeframe='2024-04-01 2024-04-25')
trend = pytrends.interest_over_time()["Apple stock"].squeeze()

stock = yf.download("AAPL", start="2024-04-01", end="2024-04-25")
price = stock["Close"].squeeze()
volume = stock["Volume"].squeeze()

# 統合
df = pd.DataFrame({
    "Trend": trend,
    "Price": price,
    "Volume": volume
}).dropna()

# 変化率
df["Trend_chg"] = df["Trend"].pct_change()
df["Price_chg"] = df["Price"].pct_change()
df["Volume_chg"] = df["Volume"].pct_change()

# スコア計算
df["Score"] = (
    df["Trend_chg"] * 0.5 +
    df["Price_chg"] * 0.3 +
    df["Volume_chg"] * 0.2
)

# 閾値超えの注目日
THRESHOLD = 0.03
signal_days = df[df["Score"] > THRESHOLD]

print("🚨 注目シグナル日:")
print(signal_days[["Trend", "Price", "Volume", "Score"]])

2.3. 出力される情報

日付トレンド株価出来高スコア
2024-04-1077166.9949,709,3000.037
2024-04-1196174.2291,070,3000.303
2024-04-12100175.72101,593,3000.047
2024-04-1988164.2267,772,1000.182

表を見ると、4月11日に非常に高いスコア(0.30以上)が記録されており、検索トレンド・株価・出来高すべてが急上昇しています。
こうした日を検出しておけば、決算や報道など重要なイベントを見逃さずに済みます。

2.4. 読み取りポイント

  • 4月11日は、トレンド・株価・出来高すべてが急上昇しており、特に注目すべき日
  • スコアを使えば、注目が集まったタイミングを手軽に拾えるので、売買の判断材料としても使えます

3. 他銘柄とトレンド比較して“人気株”を見極めよう

3.1. 目的

  • 同時期に注目された複数銘柄(例:Apple vs Tesla)を可視化
  • 「どちらの注目度が高かったか」を一目で比較可能に

Googleトレンドは、世の中の関心度をざっくり把握するツールとしても使えます。
銘柄ごとの比較にもぴったりです。

3.2. 実装コード

from pytrends.request import TrendReq
import matplotlib.pyplot as plt

pytrends = TrendReq(hl='en-US', tz=360)
kw_list = ["Apple stock", "Tesla stock"]
pytrends.build_payload(kw_list, timeframe='2024-04-01 2024-04-25')

df = pytrends.interest_over_time()

# グラフ
plt.figure(figsize=(14, 6))
for col in kw_list:
    plt.plot(df.index, df[col], label=col)

plt.title("Google Trend: Apple stock vs Tesla stock")
plt.legend()
plt.grid()
plt.tight_layout()
plt.show()

3.3. グラフ出力例

この比較グラフでは、Apple stockとTesla stockがそれぞれ注目を集めたタイミングが視覚的に把握できます。
たとえば4月中旬はAppleへの注目が高く、ニュースやイベントが影響していた可能性も考えられます。

3.4. 読み取りポイント

  • 決算・新製品・事件報道など、銘柄ごとの注目イベントの強弱を読み解ける
  • どちらの銘柄がどのタイミングで話題になったかを、グラフから比較できます

4. まとめ:3つの分析の違いと活用ポイント

分析手法内容主な用途
相関+ピーク検出トレンドの山と株価を照らす材料発生の振り返り、因果の検証
変化率スコアリングトレンド×価格×出来高の合成異常検知、短期注目銘柄の発見
他銘柄比較トレンドで人気株比較銘柄選定、セクター動向の把握

ぜひこの記事をヒントに、あなたなりの「注目株の見つけ方」を試してみてください。

分析を通じて、新たな気づきや発見につながれば幸いです。


よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Python・投資・業務効率化をテーマにしたブログを運営しています。
本業では社内ツール・アプリの運営・開発をしており、趣味はキャンプや食べ歩きです。

このブログでは、実体験や実務で役立った知識をベースに、
初心者でも再現できる情報発信を心がけています。

コメント

コメント一覧 (1件)

コメントする

目次