52
51

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[解説] 上編:yfinanceの凄さを伝えたい(株価データ, 財務データ, 企業関連ニュースの取得)

Last updated at Posted at 2024-02-09

自己紹介

慶應義塾大学 経済学部 3年生(2024/2/2時点)のアギラーです。
現在は「金融 x データ分析」を中心に学習中
ゼミの研究での学習を備忘録としてまとめていきたいと思います。

この記事を読むと…

  • yfinanceを体系的に学べる
  • 株価分析における株価データの取得を簡略化できる(下編に移行)

目次

0. そもそもyfinanceとは

pythonを用いて株価分析をしようと思った方は必ずや聞いたことであろうライブラリ「yfinance」とはなんでしょうか?

実際に株価を取得できるライブラリおよびAPIはたくさんありますが、"とりあえず"yfinanceが選ばれている印象が強いです。

1. yfinanceのインストール

pip環境ではいつものように下記コードでインストールできます。

terminal
pip install yfinance

しかしconda環境では下記のコードを走らせるだけではエラーが出てしまいます。

terminal
conda install yfinance

したがってconda-forgeのバージョンをインストールしましょう。
詳しいパッケージの情報はANACONDA公式を参照

terminal
conda install conda-forge::yfinance

これで準備は整いました。

2. データの取得と確認

では深く理解していきましょう。今回はApple(ticker: 'APPL')のデータを元に解説していきます。

2.1. データの取得

データを取得していきます。

ipynb
import yfinance as yf

appl = yf.Ticker("AAPL") 

# 取得したデータを確認します。
appl
output
yfinance.Ticker object <AAPL>

出力にある yfinance.Ticker object は、yfinance ライブラリが AAPL についての株式情報を含む Ticker オブジェクトを生成したことを意味します。
この Ticker オブジェクトを使って、株価の履歴、財務諸表、配当情報など、さまざまな株式関連データにアクセスして取得していくようなプロセスになります。

2.2. 取得データの確認

取得したデータを .info で確認しましょう

ipynb
# get all stock info
appl.info
output
{'address1': 'One Apple Park Way',
 'city': 'Cupertino',
 'state': 'CA',
 'zip': '95014',
 'country': 'United States',
 'phone': '408 996 1010',
 'website': 'https://www.apple.com',
 'industry': 'Consumer Electronics',
 'industryKey': 'consumer-electronics',
 'industryDisp': 'Consumer Electronics',
 'sector': 'Technology',
 'sectorKey': 'technology',
 'sectorDisp': 'Technology',
 'longBusinessSummary': 'Apple Inc. designs, manufactures, and markets smartphones, personal computers, tablets, wearables, and accessories worldwide. The company offers iPhone, a line of smartphones; Mac, a line of personal computers; iPad, a line of multi-purpose tablets; and wearables, home, and accessories comprising AirPods, Apple TV, Apple Watch, Beats products, and HomePod. It also provides AppleCare support and cloud services; and operates various platforms, including the App Store that allow customers to discover and download applications and digital content, such as books, music, video, games, and podcasts. In addition, the company offers various services, such as Apple Arcade, a game subscription service; Apple Fitness+, a personalized fitness service; Apple Music, which offers users a curated listening experience with on-demand radio stations; Apple News+, a subscription news and magazine service; Apple TV+, which offers exclusive original content; Apple Card, a co-branded credit card; and Apple Pay, a cashless payment service, as well as licenses its intellectual property. The company serves consumers, and small and mid-sized businesses; and the education, enterprise, and government markets. It distributes third-party applications for its products through the App Store. The company also sells its products through its retail and online stores, and direct sales force; and third-party cellular network carriers, wholesalers, retailers, and resellers. Apple Inc. was founded in 1976 and is headquartered in Cupertino, California.',
 'fullTimeEmployees': 161000,
 'companyOfficers': [{'maxAge': 1,
   'name': 'Mr. Timothy D. Cook',
   'age': 62,
   'title': 'CEO & Director',
   'yearBorn': 1961,
   'fiscalYear': 2023,
   'totalPay': 16239562,
   'exercisedValue': 0,
   'unexercisedValue': 0},
  {'maxAge': 1,
   'name': 'Mr. Luca  Maestri',
   'age': 60,
   'title': 'CFO & Senior VP',
   'yearBorn': 1963,
   'fiscalYear': 2023,
   'totalPay': 4612242,
   'exercisedValue': 0,
   'unexercisedValue': 0}],
 'auditRisk': 4,
 'boardRisk': 1,
 'compensationRisk': 6,
 'shareHolderRightsRisk': 1,
 'overallRisk': 1,
 'governanceEpochDate': 1706745600,
 'compensationAsOfEpochDate': 1703980800,
 'maxAge': 86400,
 'priceHint': 2,
 'previousClose': 189.41,
 'open': 189.385,
 'dayLow': 187.35,
 'dayHigh': 189.535,
 'regularMarketPreviousClose': 189.41,
 'regularMarketOpen': 189.385,
 'regularMarketDayLow': 187.35,
 'regularMarketDayHigh': 189.535,
 
 # ......などなどです。

こんな感じで株価以外の財務データなども大量に取得することができます。
他にも役員情報や事業内容、業界、時価総額…など豊富なデータにアクセスできます。

2.2. 個別にデータを取得する

appl というバリアブルに格納されているのは分かったので個別に取得してみます。

ipynb
appl.info['financialCurrency']
output
'USD'

こんな感じで色々個別データを取得できます。
ただし、辞書形式の入れ子構造から取得する場合、例えばapplの「companyOfficers」の項目などはget()関数などを使用する必要があります。
今回は割愛

3. 株式に関する情報の取得と確認

株式に関する情報を取得してみます。

ipynb
appl.actions # アクション(配当、分割)を表示
appl.dividends # 配当
appl.splits # 分割
appl.capital_gains

4. 財務データの取得と確認

財務データ(財務3表)を取得していきましょう

4.1. ①損益計算書

はじめに損益計算書を取得していきます。

ipunb
appl.income_stmt #年単位
appl.quarterly_income_stmt #4ヶ月単位

appl.quarterly_income_stmtの方のデータを表示してみます

スクリーンショット 2024-02-10 0.22.57.png

こんな感じで取得できるので財務分析もできちゃいますね👍

4.2. ②バランスシート

次にバランスシートを取得していきます

ipynb
# - balance sheet
appl.balance_sheet
appl.quarterly_balance_sheet

では同様に appl.quarterly_balance_sheet の方を表示してみます。

スクリーンショット 2024-02-10 0.24.10.png

取得できました。

4.3. ③キャッシュフロー

最後にCFを取得してみましょう

ipynb
appl.cashflow #年単位
appl.quarterly_cashflow #4半期単位

では表示してみます。

スクリーンショット 2024-02-10 0.25.02.png

以上で財務3表の取得ができました

5. 株主情報の取得と確認

株主情報の取得は下記のコードで実行できます。

ipynb
# show holders
appl.major_holders # 大株主
appl.institutional_holders
appl.mutualfund_holders
appl.insider_transactions
appl.insider_purchases
appl.insider_roster_holders

ではinsider_roster_holdersを表示してみます

スクリーンショット 2024-02-10 0.27.08.png

insiter_roster_holder はいわゆる社内の機密情報にアクセスできる人のことでしょうか…🤔

6. 評価と推奨データの取得と確認

このときのrecommendationsとはかAPPLの株に対する各証券会社の評価とその後のアクションを指します。

ちなみにこの時に使われている「reit」は「reiterate」(再確認)という意味です

ipynb
appl.recommendations
appl.recommendations_summary
appl.upgrades_downgrades

では確認していきましょう

スクリーンショット 2024-02-10 0.27.38.png

こんな感じで各社のAPPLに対する評価がわかります。
(Outperformが多いのはVision Proを出したからかな?)

7. その他データの取得と確認

その他のデータについてはこの章でまとめます。

7.1. EPSの取得

株主が気にしがちなEPSを取得します

ipynb
appl.earnings_dates

では確認します

スクリーンショット 2024-02-10 0.28.22.png

7.2 銘柄関連ニュース

なんと最新のニュース情報まで取得できます。

ipynb
appl.news

確認します

ipynb
[{'uuid': '00085c3f-724a-39ca-aa21-d383d5c5ef58',
  'title': 'Here are my favorite Vision Pro apps (so far)',
  'publisher': 'TechCrunch',
  'link': 'https://finance.yahoo.com/m/00085c3f-724a-39ca-aa21-d383d5c5ef58/here-are-my-favorite-vision.html',
  'providerPublishTime': 1707436280,
  'type': 'STORY',
  'thumbnail': {'resolutions': [{'url': 'https://s.yimg.com/uu/api/res/1.2/jvOMriS3vWCqZxjZJlY.EA--~B/aD0xMzUwO3c9MjQwMDthcHBpZD15dGFjaHlvbg--/https://media.zenfs.com/en/techcrunch_for_finance_733/fd373aec835359acf5c935e81122a73a',
     'width': 2400,
     'height': 1350,
     'tag': 'original'},
    {'url': 'https://s.yimg.com/uu/api/res/1.2/V3a18BNf0FCGTZBB3apaYA--~B/Zmk9ZmlsbDtoPTE0MDtweW9mZj0wO3c9MTQwO2FwcGlkPXl0YWNoeW9u/https://media.zenfs.com/en/techcrunch_for_finance_733/fd373aec835359acf5c935e81122a73a',
     'width': 140,
     'height': 140,
     'tag': '140x140'}]},
  'relatedTickers': ['AAPL']},
 {'uuid': '0c2b9bd6-ab6a-3af7-8d2f-2ce2dce0abe4',
  'title': '30 Largest Companies in the World by Revenue',
  'publisher': 'Insider Monkey',
  'link': 'https://finance.yahoo.com/news/30-largest-companies-world-revenue-230959905.html',
  'providerPublishTime': 1707433799,
  'type': 'STORY',
  'thumbnail': {'resolutions': [{'url': 'https://s.yimg.com/uu/api/res/1.2/bugMxaCL2C1BTh19SMyHBA--~B/aD04MTY7dz0xNDU2O2FwcGlkPXl0YWNoeW9u/https://media.zenfs.com/en/insidermonkey.com/a60d9d9ecc45e68859f24af1edf78365',
     'width': 1456,
     'height': 816,
     'tag': 'original'},
    {'url': 'https://s.yimg.com/uu/api/res/1.2/IM2.nhx7Xky.c8VdxFjZCg--~B/Zmk9ZmlsbDtoPTE0MDtweW9mZj0wO3c9MTQwO2FwcGlkPXl0YWNoeW9u/https://media.zenfs.com/en/insidermonkey.com/a60d9d9ecc45e68859f24af1edf78365',
     'width': 140,
     'height': 140,
     'tag': '140x140'}]},
  'relatedTickers': ['AAPL', '^GSPC', 'WMT', 'AMZN', 'CVX', 'STLAM.MI', 'MCK', 'CI', 'CAH', 'BP', 'MSFT', 'GOOG', 'TM', 'SSNLF', 'XOM', 'COST']},

このように最新ニュースのURLやタイトルだけでなく、そのニュースに関連する企業のtickerやニュースの出版元企業なども取得できます。

8. まとめ

このようにyfinance のライブラリを用いてyahoo finance APIにアクセスすることでさまざまなデータを取得することが可能です。
予想以上に記事が長くなってしまったので当記事は上編と下編に分けたいと思います。下編ではyfinanceを使った株価データの取得と実際に使っているコードを紹介します。

最後に

最後まで読んでいただきありがとうございます🙇
ハートやストックはモチベーションにつながるので是非ともよろしくお願いします。

もしご興味あれば他の記事もぜひご参照ください。

参考文献

52
51
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
52
51

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?