【投資初心者×AI】毎日チャートを確認するのが面倒すぎて、PythonとGeminiで「完全自動の株価分析システム」を作ってみた

こんにちは!当ブログ「gemini-study-lab.com」では、日々AIツールの実践的な活用法を検証・発信しています。

普段は化学研究者としてデータと向き合い、最近はFP3級に向けて金融や税金の勉強もしている私ですが、こと「株式投資」に関しては、これから本格的に始めたいと考えている完全な初心者です。

投資を始める第一歩として、まずはAI(Gemini)を壁打ち相手にして、スクリーニング条件や日足チャートの読み取りを手伝ってもらい、自分なりの「監視リスト30銘柄」を作成しました。

しかし、いざ日々の運用を始めようとした矢先、ある致命的な問題に直面したのです。

ことの発端:「毎日のチャートチェック、面倒くさすぎない?」

監視リストを作ったはいいものの、毎日大引け後に30銘柄すべてのチャートを開き、1枚ずつ画像を保存してGeminiに貼り付け、「今日の動きはどう?」と聞く作業……。

ハッキリ言って、とにかく面倒くさい。
数日で心が折れそうになりました。

そこで、研究者としての血が騒ぎました。「手順が決まっているなら、これ全部Pythonで自動化できるんじゃないか?」と。

作ったもの:全自動「AI株式監視システム」

構想から約2日間。AIと相談しながら、毎日大引け後にターミナルで1行のコマンドを叩くだけで、監視銘柄すべての分析レポートを自動生成してくれるPythonスクリプトをゼロから構築しました。

コマンドはこれだけです。
python analyze.py

これを実行すると、全銘柄のデータ取得からAI分析までが全自動で行われ、約5分後には美しいMarkdown形式のレポートがフォルダに出力されます。

以下実際のレポート。

システムの仕組み

裏側では、以下のような処理が全自動で走っています。

  1. データ取得: yfinanceで各銘柄の最新の日足データを取得
  2. チャート生成: mplfinanceでローソク足チャートを画像として保存
  3. テクニカル計算: Pythonで独自の指標(MA5/25/75、RSI、ボリンジャーバンド、出来高トレンド)を自動計算
  4. AI分析: 計算したデータを「Gemini 2.5 Flash」のAPIに送信して分析
  5. レポート化: 全銘柄の分析結果を1つのMarkdownファイル(report.md)に集約

【出力されるAIレポートの内容(1銘柄あたり)】

  • トレンド判定(上昇・下降・横ばい)とその根拠
  • 移動平均線との位置関係が示す意味
  • RSIとボリンジャーバンドからの読み取り
  • ファンダメンタルズ(PER・PBR・ROE・配当利回り)の簡易判定
  • エントリーを検討できる具体的な価格帯
  • 損切りの目安となる価格
  • AI独自の注目度(★1〜5)

我ながら、初心者には十分すぎるほど豪華な専属アナリストが誕生しました。しかし、ここに至るまでには3つの大きな壁がありました。

開発でぶつかった3つの壁と、その解決策

詰まったこと①:Gemini APIのクォータ問題(エラー429)

最初に直面したのが、APIを叩いた瞬間に返ってきた「429 RESOURCE_EXHAUSTED」というエラーです。
エラーメッセージに limit: 0 と出ており、「えっ、まだ何も使ってないのに使いすぎ?」と混乱しました。

Google AI Studioのレート制限画面を詳しく確認して、ようやく真因が判明。実は、最初に指定していたモデル(Gemini 2.0 Flash)は、私のアカウントでは無料枠がゼロだったのです。

  • Gemini 2.0 Flash: 0 RPD(無料枠なし)
  • Gemini 2.5 Flash: 20 RPD(無料枠あり)

モデルの指定を gemini-2.5-flash に変更したところ、あっさりと解決しました。

詰まったこと②:画像送信によるトークン枯渇問題

当初は「チャートの画像をそのままGeminiに送って、視覚的に読み取ってもらう」というマルチモーダル方式で組んでいました。

しかし、画像1枚あたりのトークン消費量が想像以上に巨大で、無料枠の「1分あたりのトークン上限」をすぐに突破してフリーズしてしまったのです。

そこで設計を根本から見直し、「AIに画像を『見せる』のをやめ、Pythonで計算した正確な数値を『テキスト』で渡す」方式に変更しました。
(例:「RSI = 41.7」「MA25 = ¥3,667」など)

結果的に、これが大正解!AIがぼんやりと画像を読み取るよりも、確定した数値をテキストで処理させる方が、圧倒的に分析の精度が高く、動作も安定するという想定外の収穫を得ました。

詰まったこと③:1日20リクエストの上限問題

Gemini 2.5 Flashの無料枠におけるリクエスト上限は1日20回(20 RPD)です。
30銘柄のリストを上から順に処理していくと、当然21銘柄目でAPIがストップしてしまいます。

これに対する解決策は非常にシンプル。「監視銘柄を20銘柄に断捨離する」ことでした。
同じセクターで似たような値動きをする銘柄を外し、各セクターの代表銘柄1つに絞り込んだ結果、なんと監視リスト自体の質が以前より向上するという嬉しい副産物までついてきました。

やってみた感想:AIは最高の「デバッグパートナー」

「プログラミングの基礎知識はあるけれど、株の専門知識はゼロ」。そんな私でも、AIとの対話を重ねることで、実用レベルの自動化システムをたった2日で完成させることができました。

特に印象的だったのは、エラーで詰まるたびにGeminiが「なぜそのエラーが起きているのか」を一緒に紐解いてくれたことです。AIは単なるコード出力ツールではなく、隣に座ってくれる優秀なデバッグパートナーでした。

「AIに株の売買を完全に自動でやらせる」のではなく、「面倒な分析作業はAIに任せ、最終的な投資判断は人間(自分)が下す」。投資初心者にとって、このくらいが学びも多く、最も心地よい「ちょうどいい距離感」だと感じています。

【今回使用したツール・ライブラリ一覧】

ツール名用途
Python 3.xメインスクリプトの開発言語
yfinance株価データ・ファンダメンタルズの自動取得
mplfinanceローソク足チャート画像の生成
pandasデータ処理・テクニカル指標の計算
google-genaiGemini APIの呼び出し
Gemini 2.5 FlashAI分析の頭脳(無料枠を利用)
VSCodeエディタ・Markdownプレビューでのレポート閲覧

皆さんも、日々の面倒なルーチンワークがあれば、ぜひAIと一緒に「自分だけの自動化ツール」を作ってみてはいかがでしょうか?

コメント

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