見出し画像

Pythonで保有株13銘柄のデータを一括取得する方法|yfinanceで30行

こんにちは、CrafTechLifeのたくみです。

前回、保有株13銘柄の損益を全公開しました。

今回はそのデータをPythonで自動取得する方法を紹介します。使うのはyfinanceという無料ライブラリで、コード約30行で株価からセクター情報まで一通り取れます。



なぜPythonで取得するのか

証券口座にログインすれば保有株の情報は見られます。ただし問題が2つあります。

  1. 比較しにくい: 銘柄ごとにページを開く必要があり、13銘柄を横並びで比較できない

  2. 分析できない: シャープレシオやセクター構成比のような独自の計算ができない

Pythonなら13銘柄のデータを一括で取得して、DataFrameに並べて自由に分析できます。


実際のコード(簡略版)

import yfinance as yf
import pandas as pd

# 保有株のティッカーシンボル
tickers = {
    "三井住友FG": "8316.T", "オリックス": "8591.T",
    "第一生命": "8750.T", "東鉄工": "1835.T",
    "NTT": "9432.T", "CDS": "2169.T",
    "武田薬品": "4502.T", "HDV": "HDV",
    "QQQ": "QQQ", "SPYD": "SPYD",
}

# 過去1年の株価を一括取得
close = yf.download(
    list(tickers.values()), period="1y", auto_adjust=True
)["Close"]

# 年率リターンとシャープレシオを計算
returns = close.pct_change().dropna()
annual_ret = returns.mean() * 252
annual_vol = returns.std() * (252 ** 0.5)
sharpe = annual_ret / annual_vol

# セクター・PER・配当利回りを取得
for name, symbol in tickers.items():
    info = yf.Ticker(symbol).info
    print(f"{name}: セクター={info.get('sector', '-')}, "
          f"PER={info.get('trailingPE', '-')}, "
          f"配当利回り={info.get('dividendYield', '-')}")

日本株は証券コードの後ろに`.T`をつけるのがポイントです。米国ETFはそのままティッカーシンボルを入れます。`yf.download()`で株価の一括取得、`yf.Ticker().info`で個別銘柄の基本情報(セクター・PER・配当利回り)を取得する、という2段階の構成です。


取得できたデータの一部

実際に実行した結果がこちらです。シャープレシオ(リスクあたりのリターン効率)の上位5銘柄を並べます。

1位 オリックス(金融)
年率リターン +65.2% / ボラティリティ 27.4% / シャープレシオ 2.37

2位 武田薬品(ヘルスケア)
年率リターン +36.6% / ボラティリティ 21.7% / シャープレシオ 1.69

3位 HDV(米国高配当ETF)
年率リターン +22.2% / ボラティリティ 13.6% / シャープレシオ 1.63

4位 東鉄工(産業)
年率リターン +41.0% / ボラティリティ 25.7% / シャープレシオ 1.59

5位 三井住友FG(金融)
年率リターン +48.1% / ボラティリティ 35.7% / シャープレシオ 1.35

シャープレシオが1.0を超えていれば優秀とされます。オリックスの2.37は、リスクに対して非常に高いリターンを出していることがわかります。

一方、Sイノベーションはシャープレシオが -1.60 。リスクを取った分だけ損をしているという状態です。


yfinanceの注意点

便利なyfinanceですが、2つ注意点があります。

  1. 配当データが欠損することがある: 特に日本株で配当利回りが取得できないケースがあります。その場合はJ-Quants APIなど別のソースで補完が必要です

  2. リアルタイムデータではない: 20分程度の遅延があります。売買判断のリアルタイムシグナルには向きません


次にやること

今回取得したセクター情報を使って、ポートフォリオのセクター構成比を可視化します。前回の記事で「米国ETFに92%集中」という偏りが見つかりましたが、セクター別に見るとどうなるか。金融セクターへの偏りが気になるところです。


最後まで読んでいただきありがとうございます。
次回はセクター構成比をグラフで可視化した結果を公開します。


※本記事は情報提供を目的としており、特定銘柄の売買を推奨するものではありません。投資判断は自己責任でお願いいたします。


📚 この記事に関連する書籍

Python × 金融分析の定番書です。yfinanceの使い方からポートフォリオ最適化まで、これ1冊で基礎が身につきます。


いいなと思ったら応援しよう!

この記事は noteマネー にピックアップされました

noteマネーのバナー