【Python】Yahoo Financeから株式・財務情報を取得する

【Python】Yahoo Financeから株式・財務情報を取得する プログラミング

「Yahoo Financeから市場・財務情報を取得したい」
「海外企業の株価情報を自動的に取得したい」

このような場合には、yfinanceがオススメです。
この記事では、yfinanceについて解説しています。

本記事の内容

  • yfinanceとは?
  • yfinanceのシステム要件
  • yfinanceのインストール
  • yfinanceの動作確認

それでは、上記に沿って解説していきます。

yfinanceとは?

Yahoo! finance
https://finance.yahoo.com/

yfinanceは、Yahoo! financeから情報を取得するためのツールです。
Pythonのライブラリとして、オープンソースの形で公開されています。

yfinanceを利用すれば、スクレイピングでデータを取得する必要はありません。
Yahoo! financeから市場・財務情報を取得したい場合、手間を省くことができますね。

スクレイピングができてしまうと、強引にスクレイピングをしてしまいがちです。
yfinanceのような便利なライブラリがあるなら、是非とも利用しましょう。

以上、yfinanceについて説明しました。
次は、yfinanceのシステム要件を説明します。

yfinanceのシステム要件

現時点(2022年7月)でのyfinanceの最新バージョンは、0.1.74となります。
この最新バージョンは、2022年7月12日にリリースされています。

随時メンテナンスが実施されています。
そのときの最新版をインストールするようにしましょう。

サポートOSに関しては、以下を含むクロスプラットフォーム対応です。

  • Windows
  • macOS
  • Linux

サポート対象となるPythonのバージョンは、以下となっています。

  • Python 2.7
  • Python 3.4
  • Python 3.5
  • Python 3.7
  • Python 3.8
  • Python 3.9

よくわからないサポート状況です。
しかし、実際にsetup.pyにはこのように記述されています。

Python 3.6なんか、意図的にコメントで消しています。
とにかく、不思議な状態のサポート状況です。

この記事では、以下のPython公式開発サイクルに準拠したバージョンを推奨しておきます。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月

つまり、Python 3.7以降となります。
なお、yfinanceはPython 3.10でも普通に動きます。

以上、yfinanceのシステム要件を説明しました。
次は、yfinanceのインストールを説明します。

yfinanceのインストール

検証は、次のバージョンのPythonで行います。

$ python -V
Python 3.10.2

まずは、現状のインストール済みパッケージを確認しておきます。

$ pip list
Package    Version
---------- -------
pip        22.1.2
setuptools 63.2.0
wheel      0.36.2

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

pip install yfinance

yfinanceのインストールは、少しだけ時間がかかります。
終了したら、どんなパッケージがインストールされたのかを確認します。

$ pip list
Package            Version
------------------ ---------
certifi            2022.6.15
charset-normalizer 2.1.0
idna               3.3
lxml               4.9.1
multitasking       0.0.11
numpy              1.23.1
pandas             1.4.3
pip                22.1.2
python-dateutil    2.8.2
pytz               2022.1
requests           2.28.1
setuptools         63.2.0
six                1.16.0
urllib3            1.26.10
wheel              0.36.2
yfinance           0.1.74

yfinanceは、そこそこ多くのパッケージに依存しています。
もしインストールでトラブルを起こしたくないなら、Python仮想環境を利用しましょう。

Python仮想環境は、簡単に利用できます。

以上、yfinanceのインストールを説明しました。
次は、yfinanceの動作確認を説明します。

yfinanceの動作確認

yfinanceの動作確認を行います。
指定した企業の情報を取得します。
最もシンプルな動作と言えます。

その際に、ティッカーシンボルで企業を指定します。
ティッカーシンボルとは、日本で言う銘柄コードのことです。

Yahoo!Financeから、Googleの情報を取得してみましょう。
その際に用いるコードは、以下。

import yfinance as yf

ticker = yf.Ticker("GOOG")
print(ticker.info)

上記を実行した結果は、以下となります。
多くの情報を取得できています。

{'52WeekChange': -0.13971883,
 'SandP52WeekChange': -0.09332156,
 'address1': '1600 Amphitheatre Parkway',
 'algorithm': None,
 'annualHoldingsTurnover': None,
 'annualReportExpenseRatio': None,
 'ask': 0,
 'askSize': 1200,
 'averageDailyVolume10Day': 30971130,
 'averageVolume': 33010742,
 'averageVolume10days': 30971130,
 'beta': 1.099616,
 'beta3Year': None,
 'bid': 0,
 'bidSize': 800,
 'bookValue': 19.279,
 'category': None,
 'circulatingSupply': None,
 'city': 'Mountain View',
 'coinMarketCapLink': None,
 'companyOfficers': [],
 'country': 'United States',
 'currency': 'USD',
 'currentPrice': 114.7,
 'currentRatio': 2.871,
 'dateShortInterest': 1656547200,
 'dayHigh': 116.32,
 'dayLow': 113.26,
 'debtToEquity': 11.26,
 'dividendRate': None,
 'dividendYield': None,
 'earningsGrowth': -0.063,
 'earningsQuarterlyGrowth': -0.083,
 'ebitda': 95841001472,
 'ebitdaMargins': 0.35452998,
 'enterpriseToEbitda': 14.651,
 'enterpriseToRevenue': 5.194,
 'enterpriseValue': 1404177088512,
 'exDividendDate': None,
 'exchange': 'NMS',
 'exchangeTimezoneName': 'America/New_York',
 'exchangeTimezoneShortName': 'EDT',
 'expireDate': None,
 'fiftyDayAverage': 112.9561,
 'fiftyTwoWeekHigh': 152.1,
 'fiftyTwoWeekLow': 102.208,
 'financialCurrency': 'USD',
 'fiveYearAverageReturn': None,
 'fiveYearAvgDividendYield': None,
 'floatShares': 12249019612,
 'forwardEps': 6.47,
 'forwardPE': 17.727976,
 'freeCashflow': 52881248256,
 'fromCurrency': None,
 'fullTimeEmployees': 163906,
 'fundFamily': None,
 'fundInceptionDate': None,
 'gmtOffSetMilliseconds': '-14400000',
 'grossMargins': 0.56929,
 'grossProfits': 146698000000,
 'heldPercentInsiders': 0.00037999998,
 'heldPercentInstitutions': 0.65259004,
 'impliedSharesOutstanding': 0,
 'industry': 'Internet Content & Information',
 'isEsgPopulated': False,
 'lastCapGain': None,
 'lastDividendDate': None,
 'lastDividendValue': None,
 'lastFiscalYearEnd': 1640908800,
 'lastMarket': None,
 'lastSplitDate': 1658102400,
 'lastSplitFactor': '20:1',
 'legalType': None,
 'logo_url': 'https://logo.clearbit.com/abc.xyz',
 'longBusinessSummary': 'Alphabet Inc. provides various products and platforms '
                        'in the United States, Europe, the Middle East, '
                        'Africa, the Asia-Pacific, Canada, and Latin America. '
                        'It operates through Google Services, Google Cloud, '
                        'and Other Bets segments. The Google Services segment '
                        'offers products and services, including ads, Android, '
                        'Chrome, hardware, Gmail, Google Drive, Google Maps, '
                        'Google Photos, Google Play, Search, and YouTube. It '
                        'is also involved in the sale of apps and in-app '
                        'purchases and digital content in the Google Play '
                        'store; and Fitbit wearable devices, Google Nest home '
                        'products, Pixel phones, and other devices, as well as '
                        'in the provision of YouTube non-advertising services. '
                        'The Google Cloud segment offers infrastructure, '
                        'platform, and other services; Google Workspace that '
                        'include cloud-based collaboration tools for '
                        'enterprises, such as Gmail, Docs, Drive, Calendar, '
                        'and Meet; and other services for enterprise '
                        'customers. The Other Bets segment sells health '
                        'technology and internet services. The company was '
                        'founded in 1998 and is headquartered in Mountain '
                        'View, California.',
 'longName': 'Alphabet Inc.',
 'market': 'us_market',
 'marketCap': 1505001603072,
 'maxAge': 1,
 'maxSupply': None,
 'messageBoardId': 'finmb_29096',
 'morningStarOverallRating': None,
 'morningStarRiskRating': None,
 'mostRecentQuarter': 1648684800,
 'navPrice': None,
 'netIncomeToCommon': 74538999808,
 'nextFiscalYearEnd': 1703980800,
 'numberOfAnalystOpinions': 10,
 'open': 114.06,
 'openInterest': None,
 'operatingCashflow': 97468997632,
 'operatingMargins': 0.3047,
 'payoutRatio': 0,
 'pegRatio': 1.45,
 'phone': '650 253 0000',
 'preMarketPrice': 114.35,
 'previousClose': 114.62,
 'priceHint': 2,
 'priceToBook': 5.9494786,
 'priceToSalesTrailing12Months': 5.567193,
 'profitMargins': 0.27573,
 'quickRatio': 2.738,
 'quoteType': 'EQUITY',
 'recommendationKey': 'strong_buy',
 'recommendationMean': 1.5,
 'regularMarketDayHigh': 116.32,
 'regularMarketDayLow': 113.26,
 'regularMarketOpen': 114.06,
 'regularMarketPreviousClose': 114.62,
 'regularMarketPrice': 114.7,
 'regularMarketVolume': 26780088,
 'returnOnAssets': 0.15049,
 'returnOnEquity': 0.308,
 'revenueGrowth': 0.23,
 'revenuePerShare': 20.345,
 'revenueQuarterlyGrowth': None,
 'sector': 'Communication Services',
 'sharesOutstanding': 6267530240,
 'sharesPercentSharesOut': 0.0028,
 'sharesShort': 35082340,
 'sharesShortPreviousMonthDate': 1653955200,
 'sharesShortPriorMonth': 43008400,
 'shortName': 'Alphabet Inc.',
 'shortPercentOfFloat': None,
 'shortRatio': 1.14,
 'startDate': None,
 'state': 'CA',
 'strikePrice': None,
 'symbol': 'GOOG',
 'targetHighPrice': 164.5,
 'targetLowPrice': 133,
 'targetMeanPrice': 152.4,
 'targetMedianPrice': 157.5,
 'threeYearAverageReturn': None,
 'toCurrency': None,
 'totalAssets': None,
 'totalCash': 133970001920,
 'totalCashPerShare': 10.172,
 'totalDebt': 28601999360,
 'totalRevenue': 270334001152,
 'tradeable': False,
 'trailingAnnualDividendRate': 0,
 'trailingAnnualDividendYield': 0,
 'trailingEps': 112.35,
 'trailingPE': 1.0209168,
 'trailingPegRatio': 0.7986,
 'twoHundredDayAverage': 131.76352,
 'volume': 26780088,
 'volume24Hr': None,
 'volumeAllCurrencies': None,
 'website': 'https://www.abc.xyz',
 'yield': None,
 'ytdReturn': None,
 'zip': '94043'}

ティッカーを変更して、各自で試してみてください。
例えば、マイクロソフトのティッカーは「MSFT」です。

他の関数などは、次の記事に詳細な説明があります。
https://aroussi.com/post/python-yahoo-finance

以上、yfinanceの動作確認を説明しました。

タイトルとURLをコピーしました