python学習しながら株価予測AI作ってみる第6回 データ収集実装1

株価予測AI

筆者について

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

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

前回までのあらすじ

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

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

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

データ収集のプログラムについて

プログラムの概要
  • 日経平均株価に含まれる会社を対象とする
    • 会社数が多すぎない(225社)
    • 多くの人が株を売買する大企業ばかりなので、予測しやすそう
  • 用いるデータは株価、財務諸表、市場平均
作成するデータのざっくりイメージ

株価を取得する前に、どのような形式でデータを作ればよいか考える。
かなりざっくりだか下記のイメージをした。

  • すべてのデータをpolars(高速処理可能なpandasみたいなもの)でもたせる
  • 日付ごとにレコードを生成する
  • 会社情報、株価、財務諸表など予測に持ちいるすべてのパラメータを組み込む
  • 予測結果の列を作成し、AIが予測した結果を格納する
日付 会社の情報 株価のいろんな情報 財務諸表 予測結果
2025/04/22 aaa mmm xxx 111
2025/04/23 bbb nnn yyy 222
2025/04/24 ccc ooo zzz 333
大まかな流れ
  1. 日経平均株価に含まれる会社のtickerリストを作成
  2. YahooFinanceAPIで過去の株価を取得
  3. YahooFinanceAPIで過去のファンダメンタル情報を取得
  4. 株価に影響しそうな様々な指数を取得(未確定、インデックス指数以外も、ドル円や金利など)

初版の想定なのでここからどんどん変わる可能性あるが、いったんこれで。

1. 日経平均株価に含まれる会社のtickerリストを作成

ChatGPTに簡単に作ってもらおうと思ったが、リストの個数があわなかったり、存在しない番号が含まれていたりでうまくいかなかった。何度もやる作業ではないので気合で作った。

エラーなく全社分ダウンロードできることを確認。

 

2.YahooFinanceAPIで過去の株価を取得

過去の株価を取得する

ChatGPTに聞きながら作成してみた。

data_frames = []
end_date = datetime.today()
start_date= end_date – timedelta(days=2*365-1)
for ticker in nikkei225list:
  data = yf.download(ticker,start=start_date,end=end_date)
  df=pl.DataFrame({
    “Date”:data.index,
    “Ticker”:ticker,
    “Open”:data[“Open”].values,
    “High”:data[“High”].values,
    “Low”:data[“Low”].values,
    “Close”:data[“Close”].values,
    “Volume”:data[“Volume”].values,
  })
  data_frames.append(df)
  time.sleep(1)
combined_df = pl.concat(data_frames)

※適宜必要なライブラリはインポートした。
下記は取得したデータ。想定通りに取得できた。

まとめ

今回はpython学習しながら株価予測AI作ってみる第6回として、
データ収集プログラムの実装を開始し、過去の株価を取得しました!

次回は会社のファンダメンタル情報取得します!

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