0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

日経平均を爆上がりさせるAI・半導体関連株

Posted at

結論

日経平均を押し上げているのは、AI・半導体関連株
具体的には、ソフトバンク、アドバンテスト、東京エレクトロンの3社
image.png

1.日経平均とは

日経平均株価 (225銘柄)は、東証プライム上場銘柄の中から、市場の流動性や業種のバランスを考慮して選ばれた225銘柄で構成されています。

銘柄数が少ないため、その動向は選ばれた企業の業績や市場の勢い(モメンタム)を強く反映します。

同じく、代表的な株価指数であるTOPIXとの違いは以下の通り。

image.png

2.日経平均が上昇したのは、どの会社の株価が上昇したから?

ニュースで日経平均の上昇が聞かれる今日この頃ですが、値嵩株の影響を受けます。ということで、年初からの、値嵩株TOP10の内、どこの株が爆上がりして、日経平均を押し上げたのか、分析してみました。

分析結果は、以下の通り。
image.png

参考までにコードも載せておきます。

import yfinance as yf
import pandas as pd
from datetime import date

# --- ステップ 1: 銘柄リストの準備 ---
# 構成比率上位10銘柄のティッカーリスト
TICKERS = [
    '9983.T',  # ファーストリテイリング
    '8035.T',  # 東京エレクトロン
    '6857.T',  # アドバンテスト
    '9984.T',  # ソフトバンクグループ
    '6098.T',  # リクルートホールディングス
    '9433.T',  # KDDI
    '6762.T',  # TDK
    '4063.T',  # 信越化学工業
    '4543.T',  # テルモ
    '6954.T',  # ファナック
]

# 銘柄名マッピング(結果表示用)
ticker_map = {
    '9983.T': 'ファーストリテイリング', '8035.T': '東京エレクトロン',
    '6857.T': 'アドバンテスト', '9984.T': 'ソフトバンクグループ',
    '6098.T': 'リクルートHD', '9433.T': 'KDDI', '6762.T': 'TDK',
    '4063.T': '信越化学工業', '4543.T': 'テルモ', '6954.T': 'ファナック'
}

# 分析期間の設定
START_DATE = '2025-01-01'
END_DATE = date.today().strftime('%Y-%m-%d')

print(f"分析期間: {START_DATE} から {END_DATE}")
print(f"対象銘柄数: {len(TICKERS)}")

# --- ステップ 2: 株価データの取得 ---
try:
    # 'Close'列を取得 (auto_adjust=Trueにより調整済み終値)
    data = yf.download(TICKERS, start=START_DATE, end=END_DATE)['Close']

    if data.empty:
        raise ValueError("データが取得できませんでした。日付またはティッカーを確認してください。")

    print(f"✅ データ取得完了。取得した営業日数: {len(data)}")

except Exception as e:
    print(f"データの取得中にエラーが発生しました: {e}")
    exit()

# --- ステップ 3: 寄与度(変動額)の計算とランキング ---

# 1. 年初と最新日の株価を取得
initial_prices = data.iloc[0]
final_prices = data.iloc[-1]

# 2. 株価の変動額(貢献度の代理指標)を計算
contribution = final_prices - initial_prices

# 3. 結果をDataFrameにまとめてランキングを作成
temp_df = pd.DataFrame({
    '年初株価': initial_prices,
    '最新日株価': final_prices,
    '株価変動額 (円)': contribution
})

# 4. ティッカーを列に変換し、列名を確実に設定する
ranking_df = temp_df.sort_values(by='株価変動額 (円)', ascending=False).reset_index()

# reset_index()後の最初の列が必ずティッカーとなるため、iloc[0]で取得して設定する
ranking_df.columns.values[0] = 'ティッカー'

# 5. 銘柄名列を追加
ranking_df['銘柄名'] = ranking_df['ティッカー'].map(ticker_map)

# 最終的な表示列の順序を定義
display_columns = ['銘柄名', 'ティッカー', '年初株価', '最新日株価', '株価変動額 (円)']

# 最終結果の表示
print("\n--- 📈 日経平均株価への貢献度 (2025年1月以降) ランキング Top 10 ---")
print("※ 変動額が大きい銘柄ほど、日経平均を強く押し上げています。")

# to_markdownで整形して出力
print(ranking_df[display_columns].head(10).to_markdown(index=False, floatfmt=",.2f"))

ついでに、可視化してみると
image.png

コードは以下の通りです。

import pandas as pd
import matplotlib.pyplot as plt
import japanize_matplotlib # 日本語表示のためのライブラリ

# --- ステップ 1: 画像のデータからDataFrameを作成 ---
# 画像の表から読み取ったデータ(手動で入力)
data = {
    '銘柄名': ['ソフトバンクグループ', 'アドバンテスト', '東京エレクトロン', 'ファーストリテイリング',
               'ファナック', 'TDK', 'KDDI', 'テルモ', '信越化学工業', 'リクルートHD'],
    'ティッカー': ['9984.T', '6857.T', '8035.T', '9983.T', '6954.T', '6762.T',
                 '9433.T', '4543.T', '4063.T', '6098.T'],
    '年初株価': [9197.93, 9257.58, 23763.92, 51000.90, 3992.79, 1964.50,
               2369.90, 2967.94, 5096.00, 10743.10],
    '最新日株価': [22695.00, 19875.00, 34190.00, 58630.00, 5180.00, 2448.50,
                2650.00, 2518.50, 4566.00, 8282.00],
    '株価変動額 (円)': [13497.07, 10617.42, 10426.08, 7629.10, 1187.21, 484.00,
                     280.10, -449.44, -530.00, -2461.10]
}
ranking_df = pd.DataFrame(data)

# 貢献度(変動額)で昇順に並べ替える (横棒グラフで貢献度の高い順に上に来るようにするため)
# 昇順に並べ替えると、plt.barh()では貢献度の低いものが下から順に描画される
ranking_df = ranking_df.sort_values(by='株価変動額 (円)', ascending=True).reset_index(drop=True)

# --- ステップ 2: グラフの作成 ---

# グラフのサイズを設定
plt.figure(figsize=(10, 7))

# 貢献度(株価変動額)に応じて色分け
# 正の値(押し上げ)は緑系 #2ca02c、負の値(押し下げ)はオレンジ系 #ff7f0e
colors = ['#ff7f0e' if x < 0 else '#2ca02c' for x in ranking_df['株価変動額 (円)']]

# 横棒グラフの作成
bars = plt.barh(
    ranking_df['銘柄名'],                # y軸(銘柄名)
    ranking_df['株価変動額 (円)'],        # x軸(変動額)
    color=colors
)

# グラフタイトルとラベルの設定
plt.title(
    '日経平均株価への貢献度ランキング (2025年1月以降)',
    fontsize=16,
    fontweight='bold'
)
plt.xlabel('株価変動額 (円) - 日経平均株価への寄与度(貢献度)の代理指標', fontsize=12)
plt.ylabel('銘柄名', fontsize=12)

# x軸に垂直な補助線(0円ライン)を追加
plt.axvline(0, color='gray', linestyle='--')

# グラフの値(変動額)を棒の横に表示
# bars.patchesのインデックス(i)を使ってy座標を指定
for i, bar in enumerate(bars.patches):
    value = bar.get_width() # 棒の長さ = 株価変動額
    y_position = bar.get_y() + bar.get_height() / 2 # 棒の中央のy座標

    # 数値をカンマ区切りにし、小数点以下を丸める
    text = f'{value:,.0f}'

    # 棒が正の値の場合(右側)
    if value >= 0:
        # 棒の右端から少し右にテキストを配置
        plt.text(value + 100, y_position, text, va='center', ha='left', fontsize=10)
    # 棒が負の値の場合(左側)
    else:
        # 棒の左端から少し左にテキストを配置
        plt.text(value - 100, y_position, text, va='center', ha='right', fontsize=10)

# レイアウト調整
plt.tight_layout()

# グラフを表示
plt.show()

3.AI・半導体関連株が、日経平均をリードする!

ご覧の通り、ソフトバンク、アドバンテスト、東京エレクトロンといったAI・半導体関連の有名銘柄がトップ3を占めています。

ちなみに、年初の株価を100とした場合の上記3社の株価推移は以下の通り。

image.png

3社とも、4月のトランプ関税では、日経平均を下回る下げを記録したもの、その後の上げが見事ですね。

コードは以下の通りです。

import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

# --- 1. データのダウンロード (再掲) ---
# エラー回避のため、ダウンロードコードを再度含めます。
tickers = ['9984.T', '8035.T', '6857.T', '^N225']
start_date = '2025-01-01'

# auto_adjust=False を明示し、Adj Close 列を取得
data = yf.download(tickers, start=start_date, auto_adjust=False)['Adj Close']

# 列名を分かりやすく変更 (yfinanceのティッカー並び順: 6857.T, 8035.T, 9984.T, ^N225)
data.columns = ['Advantest', 'TokyoElectron', 'SoftbankG', 'Nikkei225']


# --- 2. データの正規化(インデックス化) ---
# 基準日(2025年1月1日)の価格を100として、全ての価格をインデックス化
# Normalized Price = (Current Price / Price on Start Date) * 100
normalized_data = data / data.iloc[0] * 100

print("--- 正規化データ確認(最初の5行) ---")
print(normalized_data.head())


# --- 3. グラフによる可視化 ---
plt.figure(figsize=(12, 6))

# 日経平均は比較対象として目立たせる
plt.plot(normalized_data.index, normalized_data['Nikkei225'],
         label='Nikkei 225 (^N225)', linewidth=3, color='black', linestyle='--')

# 3社の銘柄を描画
plt.plot(normalized_data.index, normalized_data['SoftbankG'],
         label='Softbank G (9984.T)', linewidth=1.5)
plt.plot(normalized_data.index, normalized_data['Advantest'],
         label='Advantest (6857.T)', linewidth=1.5)
plt.plot(normalized_data.index, normalized_data['TokyoElectron'],
         label='Tokyo Electron (8035.T)', linewidth=1.5)

plt.title(f'Price Synchronization Analysis: Nikkei 225 vs. AI-related Stocks (Since {start_date})')
plt.xlabel('Date')
plt.ylabel(f'Price Index (Start Date = 100)')
plt.legend(loc='upper left')
plt.grid(True, linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()

4.最後に

やはり、時代はAI・半導体ですね(笑)
トヨタやソニーは時価総額が大きいため、日経平均というよりは、TOPIXが活躍の場ですね。

何か、気になることがあったら、コメントくださいね!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?