以前、投資におけるルールの理解を深めるという観点から、バックテストに関する記事を書きました。
その記事の中で yfinance
という Python
のライブラリを使ったのですが、プログラミングや金融にあまり慣れていない人にとっては、「そもそもyfinanceって何?」となったかもしれません。
そこで、yfinance とは何か整理しようかと思ったのですが、せっかくなので、生成AIを使って調べてみることにしました。yfinance に限らず、今は基本的なライブラリの使い方を調べたり、サンプルコードを組み立てたりするのに生成AIを活用することができます。そこで、今回はこの記事を「プログラミング支援ツールとしての生成AIの活用例」としても位置づけたいと考えました。
この記事では、yfinance について整理するとともに、yfinance を例に、プログラミングの情報を整理する際に生成AIを使う過程について書いてみようと思います。
まず「yfinance とは何か?」を聞いてみる
まず最初に、yfinance とは何かを知りたい場合を考えます。素直に、以下のようなプロンプトを Gemini に投げてみます。なお、この記事では Google が提供している Gemini を使うこととします。
yfinance とはなんですか?
以下のような答えが返ってきました(⚠️後ほど触れますが、一部不正確な部分があります)。
yfinance(ワイファイナンス)は、PythonでYahoo! Financeから株価情報などを取得するためのオープンソースライブラリです。
主な特徴とできることは以下の通りです。
株価データの取得: 特定の銘柄の過去の株価データ(始値、終値、高値、安値、出来高など)を指定した期間や間隔で取得できます。
財務情報の取得: 企業の財務三表(損益計算書、貸借対照表、キャッシュフロー計算書)や配当金情報などを取得できます。
為替情報や各種指標の取得: 株価だけでなく、為替レートや主要な株式指数などの情報も取得可能です。
Pandasとの親和性: 取得したデータはPandasデータフレーム形式で出力されるため、Pythonでのデータ分析や機械学習プロジェクトに活用しやすいです。
グラフ化: 取得した株価データを使って、簡単にチャートを作成することも可能です。
注意点:
yfinanceはYahoo! Financeの非公式APIを利用しているため、データの精度や更新頻度はYahoo! Financeのデータソースに依存します。
リアルタイム性が求められる場合は、証券会社の公式データサービスを利用することが推奨されます。
個人利用を目的としたツールであり、商用利用や大規模なデータ取得には制限がある場合があります。
手軽に株価データなどを取得して分析したい場合に非常に便利なライブラリです。
十分にわかりやすく説明されていると感じます。また、パッとみてほぼ間違いもなさそうです。
ただし、注意すべきことは、生成AIは間違うこともあるということです。実際、上の出力の中には一点注意すべき点があります。"Yahoo! Finance" という表現です。Yahoo Finance の公式サイトの https://finance.yahoo.com/about/ を見ると "Yahoo Finance" という表現があります。つまり、正しくは "Yahoo Finance" ということです。また、Yahoo Finance は日本の Yahoo! ファイナンス (https://finance.yahoo.co.jp/) とは別物です。 "!" があることで Yahoo! ファイナンスと誤解してしまう可能性もありますが、yfinance は Yahoo Finance のデータを取得しています。
なお、実際に情報が正しいかを確認する際は、一次情報にあたることをおすすめします。一次情報とは、自身が直接体験して得た、または調査や実験によって得られた、オリジナルの情報のことです。プログラミングにおいては、開発者が直接作成したソースコードや、公式ドキュメントなどが一次情報に該当します。
とはいえ、上記の出力には先に指摘した箇所を除けば誤った記述はなさそうでした(もしあればご指摘お願いいたします)。「生成AIは間違いうる」という視点を持っていれば、yfinance のようなライブラリについて概要を生成AIに聞くのは十分に有効だと改めて感じました。
ちなみに、皆さんが同じプロンプトを投げても、私がもう一度同じプロンプトを投げても、先ほどの答えとは違う答えが返ってくるはずです。ぜひ試してみてください。
「yfinance の使い方」について聞いてみる
次に、yfinance の使い方について調べてみます。以下のようなプロンプトを投げてみます。
yfinance の使い方について教えてください
以下のような答えが返ってきました。
答えが長いので冒頭の一部のみ示しましたが、今度はコマンドやプログラムなども含めて詳細な結果が返ってきました。「2. 株価データの取得(基本的な使い方)」の後には「3. 日本ガブデータを取得する」「4. 特定の間隔(interval)でデータを取得する」などと続きます。
出力されたプログラムを実際に動かしてみましょう。自分のコンピュータ上で動かす場合、Python をインストールする必要がありますが、今回は Google Colaboratory を使用して手軽に実行してみましょう。Google のアカウントが必要ですが、https://colab.google/ にアクセスして、「New Notebook」をクリックすると新しい Notebook が作成され、実行環境にアクセスできます。
アクセスすると、以下のような Notebook が作成されます。
次に、先ほど生成されたプログラムのうちの一つ(以下参照)をセルに貼り付け、▷のボタンをクリックすると、プログラムが実行されます。
import yfinance as yf
import pandas as pd
# 銘柄の指定(ティッカーシンボル)
# 例: Apple (AAPL)
ticker_symbol = "AAPL"
# 取得期間の指定
start_date = "2023-01-01"
end_date = "2024-01-01"
# 株価データの取得
# download()関数を使用すると、指定した銘柄の株価データを直接取得できます。
data = yf.download(ticker_symbol, start=start_date, end=end_date)
# 取得したデータの表示
print(data.head())
print(data.tail())
# 取得したデータの型を確認(Pandas DataFrameになっている)
print(type(data))
このようにプログラムを実際に実行してみることで、yfinance を実際に使ってみて体感するとともに、生成AIの出力が正しいかの確認もできます。
「yfinance のチュートリアル」を作成してもらう
yfinance の使い方も生成AIを使って理解することができました。では、使い方について別の方法を見ていきましょう。プログラミング言語やライブラリ等は公式でチュートリアルを提供していることがあり、それらを見て言語やライブラリ等の学習をすることが多いです。実際yfinance の公式ドキュメントにも "Quick start" としてチュートリアルのようなものがあります。
そこで、ここでは生成AIに yfinance のチュートリアルを作ってもらうことにしてみます。今回は Google Colaboratory 上で Gemini を使ってみます。Google Colaboratory の右上の "Gemini" の部分をクリックするとプロンプトを入力する欄が表示されます。
プロンプトは以下の通りです。
yfinance のチュートリアルを作成してください
実行してみたところ、以下のように Notebook が編集されます(実際に生成された Notebook はこちら)。
Notebook を生成してくれるため、そのまま Notebook を実行することができます。
生成AIを補助ツールとして使うということ
今回、yfinanceについて「何か気になる点があるかな」と思いながら、基本的な使い方やチュートリアルの生成をAIに依頼してみました。
ライブラリの基本操作であれば、生成AIは非常に安定して答えてくれます。使い方を聞けば、適切なコード例とともに、要点を押さえた説明を返してくれますし、チュートリアルもそれなりに整った内容が出てきます。
おそらく、「公式ドキュメントやブログ記事を何本か読んで、自分でまとめる」のとほぼ同じ水準の情報が、短時間で、しかも会話形式で得られるというのが最大の強みです。
ただし、以下の2点には注意が必要です。
生成AIは誤った出力をする可能性がある
生成AIは間違うことがあります。情報が少ないようなマイナーな言語やライブラリについては特に注意が必要です。ネット上に情報が少ないようなものについては、必然的に学習データが少なくなり、生成AIが十分に学習できていない場合があります。
また、情報が豊富なメジャー言語やライブラリに関しても、常に正しい答えが返ってくるとは限りません。実際、今回も生成AIの出力には不正確な箇所がありました。正確な情報を得るためには一次情報となる公式ドキュメントなどにあたることが大切です。
生成AIの出力は最適とは限らない
仮に生成AIのいうことが間違っていないとしても、生成AIのいうことよりも良い方法がある場合があります。プログラミングにおいても、以下のように感じることはよくあります。
- そのプログラムの書き方でやりたいことはできるけど、それだと計算効率が下がる
- その書き方でもプログラムは動くけど、こっちの書き方の方がスマート
生成AIの出力を鵜呑みにするのではなく、出力が正しいか・最適か、などの視点は常にもちながら生成AIを使うことが大切です。
まとめ
今回は、バックテスト記事を書く準備として、yfinanceの基本的な使い方を生成AIを使って整理してみたというプロセスをご紹介しました。
実際にやってみて感じたのは、yfinanceのような一般的なライブラリの基本情報については、生成AIでほぼ十分に把握できるということです。
使い方の解説も、実行可能なコード付きでかなり丁寧に提示してくれるため、手元で試すところまでスムーズに進められます。
また、プログラミング経験者の視点から見ると、生成AIは「調べて整理する」こと自体の効率をかなり高めてくれるツールだとあらためて実感しました。
ライブラリの概要や使い方を素早く把握したり、他人に説明する際の土台を作ったりと、補助的な役割としては非常に優秀です。
もちろん、出力される情報が正しいか・最適か、などについては最終的に自分で判断する必要がありますが、生成AIをプログラミングの補助に使うことで効率が上がることは間違いありません。
この記事が、「生成AIをプログラミングの補助にどう活用できるか?」を考えるヒントになれば幸いです。


