筆者について
- python初心者(使ったことはある)、AIは知識0、どちらも勉強してみたい
- あわよくば儲けたい(これが勉強のモチベにもなる気がする)
- 普段はS&P500やオルカンに長期投資しているが、短期的な儲けにも少額で挑戦してみたい
このブログは試行錯誤しながら勉強する過程を残していきます。
最短で最強のAIを作る方法ではないのでご了承ください!
前回までのあらすじ
第1回:おおまかな投資方針と、AIの構築指針を決定
第2回:AI構築環境の選定、Google Colabの登録
第3回:Google Colab使ってみる
第4回:教師あり学習を実装することに。実装の流れを決定
第5回:データ収集方法検討。Yahoo Finance API使ってみる
実装の流れ(再掲、今回は赤字部分)
- データ収集
- 過去の株価データを収集
- その他インプットデータを収集(ファンダメンタル、ニュース、市場平均など)
- データの前処理
- データをクリーニングし、欠損値や異常値を処理
- 日付データなどを適切なフォーマットに変換し、必要な特徴量を抽出
- 特徴量エンジニアリング
- 株価からテクニカル指標を計算
- 他インプットデータを統合(ニュースは感情分析した結果を統合)
- データの分割
- データを訓練データとテストデータに分割(通常8割訓練データ、2割テストデータ)
- モデルの訓練
- 選定したモデルを使って訓練データを学習させる
- モデルの評価
- テストデータを使ってモデルを評価
- (評価が良かったら)株価予測の実行、売買開始
データ収集のプログラムについて
プログラムの概要
- 日経平均株価に含まれる会社を対象とする
- 会社数が多すぎない(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 |
大まかな流れ
- 日経平均株価に含まれる会社のtickerリストを作成
- YahooFinanceAPIで過去の株価を取得
- YahooFinanceAPIで過去のファンダメンタル情報を取得
- 株価に影響しそうな様々な指数を取得(未確定、インデックス指数以外も、ドル円や金利など)
初版の想定なのでここからどんどん変わる可能性あるが、いったんこれで。
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回として、
データ収集プログラムの実装を開始し、過去の株価を取得しました!
次回は会社のファンダメンタル情報取得します!