python学習しながら株価予測AI作ってみる第5回 データ収集方法検討

株価予測AI

筆者について

  • python初心者(使ったことはある)、AIは知識0、どちらも勉強してみたい
  • あわよくば儲けたい(これが勉強のモチベにもなる気がする)
  • 普段はS&P500やオルカンに長期投資しているが、短期的な儲けにも少額で挑戦してみたい

このブログは試行錯誤しながら勉強する過程を残していきます。
最短で最強のAIを作る方法ではないのでご了承ください!

前回までのあらすじ

第1回:おおまかな投資方針と、AIの構築指針を決定
第2回:AI構築環境の選定、Google Colabの登録
第3回:Google Colab使ってみる
第4回:教師あり学習を実装することに。実装の流れを決定

実装の流れ(再掲、今回は赤字部分)

  1. データ収集
    • 過去の株価データを収集
    • その他インプットデータを収集(ファンダメンタル、ニュース、市場平均など)
  2. データの前処理
    • データをクリーニングし、欠損値や異常値を処理
    • 日付データなどを適切なフォーマットに変換し、必要な特徴量を抽出
  3. 特徴量エンジニアリング
    • 株価からテクニカル指標を計算
    • 他インプットデータを統合(ニュースは感情分析した結果を統合)
  4. データの分割
    • データを訓練データとテストデータに分割(通常8割訓練データ、2割テストデータ)
  5. モデルの訓練
    • 選定したモデルを使って訓練データを学習させる
  6. モデルの評価
    • テストデータを使ってモデルを評価
  7. (評価が良かったら)株価予測の実行、売買開始

データ取得方法調査

ChatGPT曰く、pythonでAPIをたたくことで過去の株価を取得可能なAPIは主に下記があげられるそう。

データ取得方法一覧
データ取得方法 費用 アクセス回数の制限
Yahoo Finance API(yfinance) 無料 無制限(ただし過剰なアクセスNG)
Alpha Vantage API 無料プランあり 無料プランは1日25回まで
J-Quants API 無料プランあり(取得可能な項目に制限) アクセス回数の制限はあるが非公表

上記の中で、まずはYahoo Finance API(yfinace)を選定した。
先人たちのブログでは、Yahoo Finance APIは不安定な挙動なことがあるとのことだったが、まずは使ってみて自分で判断することにした。

Yahoo Finance APIから株価を取得してみる

Google Colabにアクセスし、ChatGPTに作成してもらったyahoo finance apiを使用するサンプルコードを実行してみた。

import yfinance as yf
import pandas as pd
#トヨタ自動車のティッカーシンボルを設定
ticker_symbol = “7203.T”
#yfinanceのTickerオブジェクトを作成
ticker = yf.Ticker(ticker_symbol)
#過去一週間の株価データを取得
stock_data = ticker.history(period=”1wk”)
#stock_dataを表示
stock_data

ライブラリインストールやAPIの利用登録などなしに株価取得できた。簡単かつ便利すぎる。

Yahoo Finance APIからファンダメンタル情報を取得してみる

株価取得時のコードを流用して簡単にファンダメンタル情報も取得できた。

ticker.info

上記スクショは途中で途切れているが、かなり詳細な情報まで幅広く取得できている。

Yahoo Finance APIからニュース情報を取得してみる

ticker.news
上記を使えばニュースも取得できた。
しかし、あくまで現在のニュースしか取得できず、過去分のニュースを取得することは難しそう。
今回は教師あり学習をするので、過去分のニュースを取得できなければニュース情報を学習させることはできない
ほかのAPIも利用制限が厳しく、学習させるための大量のニュース取得が難しそうだった。
→ニュース情報を学習させるのは一旦あきらめることにする(一回AIを形にすることを優先する)

まとめ

今回はpython学習しながら株価予測AI作ってみる第5回として、
データ収集方法検討、YahooFinanceAPIを用いたデータ収集を試しました!
ニュース情報は断念しましたが、株価やファンダメンタル情報は簡単に取得できることがわかりました

次回はデータ収集部分のpythonを実装していきます!

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