Python

【Pythonコード解説】yahoo_finance_api2で日本株の株価データを取得する

【Pythonコード解説】yahoo_finance_api2で日本株の株価データを取得する

こんにちは。TATです。

今日のテーマは「yahoo_finance_api2で日本株の株価データを取得する」です。

 

以前にPythonで株価を取得する方法についてご紹介しました。

こちらの記事ではスクレイピングやライブラリーを使った株価の取得方法について解説しています。

関連記事
【コード解説】Pythonで株価データを取得する!【3つの方法を解説】

続きを見る

 

今回はこれの進化版です。

Yahooファイナンスから株価を取得できるライブラリーを発見したのでご紹介します。

 

結論から言いますと、過去記事でご紹介した方法は全て不要になりますw

この記事で紹介する方法1つを理解しておけばOKです。

圧倒的に短いコードで簡単に株価データが取得できます。

日本株にも対応しているので無敵です。

 

なんで今まで気づかなかったのか、めちゃくちゃ後悔しています。。。

この記事ではyahoo_finance_api2を使って株価データを取得する方法について解説していきます。

 

【Pythonコード解説】yahoo_finance_api2で日本株の株価データを取得する

【Pythonコード解説】yahoo_finance_api2で日本株の株価データを取得する

yahoo_finance_api2の基本的な使い方

まずはyahoo_finance_api2の基本的な使い方を見ていきます。

ライブラリーページへ行くと、基本的な使い方を確認できます。(英語ページ)

pipにも対応しているので、"pip install yahoo_finance_api2"で簡単にインストールできます。

 

とりあえず走らせてみる

とりあえずライブラリーページにあるデータをそのまま走らせてみます。

ちなみにMSFTはマイクロソフトです。

 

 

上記のコードを走らせるとこうなります。

 

返り値は辞書型になっています。

それぞれの値はリストになっていますね。

そして時間はタイムスタンプになっているので、このままだと不便です。

ゆえに少し整形します。

 

DataFrameに変換してtimestampを整形する

まずはこの辞書型のデータをDataFrameに変換します。

 

1行で完了です。

実行結果がこちら。

 

次にtimestampを変換します。

pandasにはtimestampを変換してくれるto_datetimeという関数があるので、これを利用すれば1行で完了します。

変換したデータをDatetimeというカラムに格納します。

 

実行結果がこちらです。

 

timestampがきちんと変換されていることが確認できました。

ここまできたらデータ分析に問題なく使えます。

 

コードまとめ

基本の使い方はこれで完了です。

流れとしては次の通りです。

  1. yahoo_finance_api2でデータを取得する
  2. DataFrameに変換する
  3. timestampを変換する

 

ここまでのコードをまとめるとこうなります。

 

こちらのコードはご自由にコピペしちゃってください。

 

60分足・日足・週足・月足なども指定可能

次に設定周りを見ていきます。

 

まずは頻度の設定です。

先ほどのコードでいうところのshare.FREQUENCY_TYPE_MINUTE, 5が該当します。

これでは5分おきのデータを取得しています。

 

FREQUENCYは次のような設定が可能です。

  • 分足:share.FREQUENCY_TYPE_MINUTE
  • 時間足:share.FREQUENCY_TYPE_HOUR
  • 日足:share.FREQUENCY_TYPE_DAY
  • 週足:share.FREQUENCY_TYPE_WEEK
  • 月足:share.FREQUENCY_TYPE_MONTH

 

4時間足の場合はshare.FREQUENCY_TYPE_HOUR, 4となります。

使うことはないと思いますが、2日足とか3週間足なども設定できます。

 

日足にする場合はこんな感じ。

 

引数を設定するだけで完了するのでとても使い勝手がいいですね。

みた感じ、日足以上ならVolume(出来高)も取得できるようです。

 

取得するデータの期間もある程度なら指定可能

次に期間の設定です。

先ほどのコードでいうところのshare.PERIOD_TYPE_DAY, 10になります。

これは10日間という意味になります。

 

設定できる期間は次の通りです。

  • 日で指定:share.PERIOD_TYPE_DAY
  • 週で指定:share.PERIOD_TYPE_WEEK
  • 月で指定:share.PERIOD_TYPE_MONTH
  • 年で指定:share.PERIOD_TYPE_YEAR

 

例えば、日足で過去30日分のデータを取得する場合にはこうなります。

 

期間を指定する際の注意点

ここで一点だけ注意すべきことがあります。

期間を指定する際には、それぞれ上限があります。

正直なところ、正確な上限はわかりません。

しかし僕なりに見た感じだと、例えば日で100日分指定しても42日分しか取得できません。

この場合は週や月で指定する必要があります。

 

よって、指定する期間が大きい場合には気をつけてください。

過去1000週間と指定しても無理です。

こういった場合はさらに大きい単位(月や年)で指定するようにすれば大丈夫です

 

ちなみにマクロソフトで過去100年分の日足データを取得したら、一番古いデータで1986年3月13日でした。

 

ここまでで、yahoo_finance_api2でできることは一通り網羅できたかなと思います。

 

【朗報】日本株も取得できます

次にお待ちかねの日本株についてみていきます。

大変ありがたいことにyahoo_finance_api2では日本株の株価データも取得可能です。

このライブラリーを作ってくれた方、データを提供してくれているYahoo様にこの場を借りて御礼申し上げます。

ありがとうございます。

 

証券コード4桁+.Tで日本株を指定できます

日本株のデータを取得する際には、証券コードの後に.TをつければOKです。

 

例としてトヨタ自動車の株価データを取得してみます。

トヨタ自動車の証券コードは7203なので、yahoo_finance_api2で指定する場合には7203.Tとなります。

日足で過去30日分のデータを取得します。

 

ちなみに過去100年分を指定してみたところ、一番古いデータで1999年5月6日でした。

 

日本株も取得が可能ということで、もはや過去記事で紹介したPythonによる株価を取得する方法は不要になりそうです。

頑張ってまとめたのに・・・(涙)

関連記事
【コード解説】Pythonで株価データを取得する!【3つの方法を解説】

続きを見る

 

(念のため)注意点

最後に注意点です。

正直なところ、ここでお伝えする注意点については一部確信はないです。

  • アクセス制限があるのか謎
  • DatetimeはUTCなので日本時間への変換が必要
  • データの遅延がどれくらいあるのか謎

 

順番に簡単に解説します。

アクセス制限があるのか謎

まず、アクセス制限が謎です。

ライブラリーページには制限の記述はありません。

yahoo_finance_apiでは1時間に2000アクセスまでみたいな制限がありました。(うる覚えですがw)

しかし、yahoo_finance_api2にはそういった制限に関する記述がないんです。

もしかしたら使いまくっていたら制限が出てくるかもしれないので、利用する際には少し意識しておいたほうがいいかもです。

 

DatetimeはUTCなので日本時間への変換が必要

2つ目は、DatetimeはUTCであるという点です。

ゆえに日本時間で利用するには変換が必要です。

9時間足せば完了です。

 

参考がてらコードの一例をご紹介しておきます。

トヨタの株価データを60分足で過去30日分のデータを取得しています。

 

追加したのは最後の1行だけです。

結果はこうなります。

 

きちんと日本時間に変換されていることがわかります。

 

ただここでも追加で注意点があります。

時間をよく見ると、9時からスタートして最後は14時になっています。

日本の株式市場は9時から15時に取引可能です。

となると15時のデータが足りないように見えますが、これは見方が少し違います。

例えば、9時のデータは9:00~9:59までのデータを示しています。

14時のデータは14:00~14:59のデータです。

ゆえに15時のデータは存在しません。

ここの解釈だけ理解しておけば問題ないかと思います。

 

データの遅延がどれくらいあるのか謎

3つ目として、データの遅延がどれくらいあるのか謎です。

もともとYahooファイナンスで表示されている株価データは20分の遅延があります。

yahoo_finance_api2はこれと同じ遅延なのか、あるいはこれよりもさらに遅延があるのかについては正直なところわかりません。

わかる方いたら教えてください。

 

よって、リアルタイムトレードとかに利用するのは厳しいかと思います。

とはいっても、僕がチェックした感じでは、18時の時点で当日の株価データは取得できたので、日足でデータを収集するには十分利用可能と思います。

 

まとめ

いかがでしたでしょうか。

ここではyahoo_finance_api2を利用した株価データの取得方法について解説しました。

日本株のデータも取得可能なので、かなり万能な感じがします。

短いコードで実装できて、取得データも自由にカスタマイズできるので使い勝手も抜群です。

過去記事で紹介したPythonで株価データを取得する方法については不要になりそうです。

ただし、使う際には、使いまくってたら制限などをかけられる可能性はゼロではないということだけは頭に入れておいてください。(現状、制限に関する記述はないです)

 

yahoo_finance_api2で取得したデータを使えば、移動平均線やMACDの計算も可能ですし、テクニカル分析と掛け合わせてローソク足チャートを描くこともできます。

関連記事
【コード解説】Pythonで株式投資に必要なテクニカル分析を計算する

続きを見る

関連記事
【コード解説】Pythonで株価チャートを描く【mpl_finance編】

続きを見る

 

ここまで読んでくださってありがとうございました。


Pythonは世界中で人気急上昇中の言語です


需要が上昇しています


ここ最近、Pythoの需要が上昇しています。

特にAIやデータ分析を得意としているので、データサイエンス分野では需要が爆発しています。

【いますぐ始められます】データ分析をするならPythonが最適です。【学習方法もご紹介します!】

【人気上昇中】今人気のプログラミング言語「Python」は何ができるのか?できることまとめます【転職でも有利です】

【目的別】Pythonが学べるUdemyのおすすめコースを紹介します【随時更新】


初心者にも学びやすい


さらにPythonは初心者にも学びやすいのが特徴です。

僕自身も社会人になってからPythonを独学しました。

【目的別】Pythonが学べるUdemyのおすすめコースを紹介します【随時更新】

プログラミングの独学にUdemyをおすすめする理由!【僕はUdemyでPythonを独学しました!】


転職の武器になる!


Pythonは転職する際の武器にもなります。

僕はPythonを独学して転職に成功しました。

おかげさまで年収も大きく上がりました。

【副業は神です】2度の転職において副業が内定の決め手になったお話。

【実体験】ゼロからのPython独学を決意してから転職を掴み取るまでのお話。
【実体験】ゼロからのPython独学を決意してから転職を掴み取るまでのお話。


おすすめのプログラミング学習方法


Udemy


圧倒的な安さ(セール時)で上質な動画学習素材が手に入る!



Udemyで講座を探す

 

TECH::CAMP


いつでも講師に質問できるチャットシステムが最強です!



TECH::CAMPで無料体験講座を受けてみる

 

CodeCamp


講師とのマンツーマンレッスンで挫折しない!



CodeCampで無料体験講座を受けてみる

 

-Python
-, , , ,

© 2021 気ままなブログ