Pythonで保有株13銘柄のデータを一括取得する方法|yfinanceで30行
こんにちは、CrafTechLifeのたくみです。
前回、保有株13銘柄の損益を全公開しました。
今回はそのデータをPythonで自動取得する方法を紹介します。使うのはyfinanceという無料ライブラリで、コード約30行で株価からセクター情報まで一通り取れます。
なぜPythonで取得するのか
証券口座にログインすれば保有株の情報は見られます。ただし問題が2つあります。
比較しにくい: 銘柄ごとにページを開く必要があり、13銘柄を横並びで比較できない
分析できない: シャープレシオやセクター構成比のような独自の計算ができない
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つ注意点があります。
配当データが欠損することがある: 特に日本株で配当利回りが取得できないケースがあります。その場合はJ-Quants APIなど別のソースで補完が必要です
リアルタイムデータではない: 20分程度の遅延があります。売買判断のリアルタイムシグナルには向きません
次にやること
今回取得したセクター情報を使って、ポートフォリオのセクター構成比を可視化します。前回の記事で「米国ETFに92%集中」という偏りが見つかりましたが、セクター別に見るとどうなるか。金融セクターへの偏りが気になるところです。
最後まで読んでいただきありがとうございます。
次回はセクター構成比をグラフで可視化した結果を公開します。
※本記事は情報提供を目的としており、特定銘柄の売買を推奨するものではありません。投資判断は自己責任でお願いいたします。
📚 この記事に関連する書籍
Python × 金融分析の定番書です。yfinanceの使い方からポートフォリオ最適化まで、これ1冊で基礎が身につきます。


