0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS Lambda × Gemini × LINEで日経225オプションを自動解析して通知するまで(3日で構築)」

Posted at

🧠 AIが僕の代わりに市場を読むまで

AWS Lambda × Docker × Gemini × LINE でJPXオプション解析を完全自動化した話


🎯 はじめに

Python、AWS、ほとんど触ったことがなかった。
毎日、JPX(日本取引所)の日経平均先物・オプションデータを手動でダウンロードし、AIに読ませて市場のコメントをもらう──そんな日々を過ごしていました。

「これ、全部自動化できるんじゃないか?」

そう思い立って作り始めたのがこのシステムです。

この記事では、
JPXの先物オプション価格データを自動取得 → スマイルカーブ生成 → GeminiでAI解析 → LINE通知
までを完全自動化した仕組みの構築過程を紹介します。

AWSやPython、AI連携に興味がある方の参考になれば幸いです。


🧩 システム概要

最終的に完成した構成は次の通りです。

📊 処理フローまとめ

ステップ サービス 主な機能 詳細
JPX オプション情報ファイル提供 先物オプション情報のZIPデータをLambdaが取得
Lambda (Docker Python) 自動処理の中心 16:50にEventBridgeで起動
S3 一時保存・入出力 スマイルカーブ画像、CSV、AIプロンプトファイル
Gemini AI解析 IVスキューやセンチメント分析
LINE 通知出力 AIコメント+画像を送信

各モジュールの役割

  • EventBridge
    └ 毎日16:50に自動トリガーでLambdaを起動

  • Lambda(Dockerコンテナ)
    ├ JPX先物・オプションデータを取得
    ├ スマイルカーブ画像を生成(matplotlib)
    ├ Gemini解析用CSVを抽出
    ├ S3へアップロード
    ├ Gemini APIでAI解析
    └ LINEへ通知送信

  • S3
    └ スマイルカーブ画像とAI解析用CSVを保存

  • Gemini API
    └ CSVを入力にAI解析を実行し、結果を返す

  • LINE API
    └ スマイルカーブ画像+AI解析コメントを送信


🧭 開発の進め方

最初から全部を一気に作ったわけではありません。
少しずつ動作を確認しながら、部品を組み合わせていくスタイルで進めました。
スマイルカーブのグ映像を生成するPythonソフトは既にあるので、これをそのまま呼び出す。
基本的に「コードはAIで作成し、自分が結合・調整する」方式です。


1. Lambda入門:Hello Worldからの出発

まずは「Hello World!」を出すだけのLambda関数を作成。
AWSのアカウント登録から始め、デプロイ、テスト実行の方法を理解するまでにかなり手間取りました。
PythonもAWSも初心者なので、「動いた!」という感動を何度も味わいながら進めました。


2. LINE通知の実装

次に、Lambdaから自分のスマホへ通知を送る機能を作成。
LINE DevelopersでBotアカウントを作り、Message APIを有効化、チャネルアクセストークンを発行します。

最初はうまくいったものの、途中で突然通知が止まるトラブルが発生。
AIが古い「LINE Notify API」に勝手に書き換えていたことが原因でした。
地味なトラブルですが、解決に時間を取られました。

📱 初めてLINEに通知が届いたときの感動は忘れられません。
IMG_0903.jpg

この頃まではZIP形式でLambdaへ直接デプロイしていましたが、
のちにサイズ制限の壁にぶつかることなります…。


3. スマイルカーブ生成のDocker化

JPXオプション分析の肝となる「スマイルカーブ生成スクリプト」をLambda上で動かしたい。
しかし、matplotlibのサイズが大きすぎてZIPデプロイでは限界に。
サイズオーバー.jpg

軽量ライブラリ(Klayers)を試すも失敗。
最終的に「DockerでLambdaを動かす」という方針に切り替えました。

  • WSL2上のUbuntuにDockerをインストール
  • docker build, docker push の使い方を習得
  • docker build --provenance=false でエラー解消
  • TZ=Asia/Tokyo を指定してUTC→JSTに調整

🐋 Dockerを使うのは初めてで、「Hello World」からのスタート。
WSL2のパスワードを忘れてリセットしたのも良い思い出です。

ローカルPC→Docker→Lambdaの環境順に動作を確認し、
同じ出力(スマイルカーブ画像)が得られることを検証しました。
20251027_smile.png

💡 補足:スマイルカーブとは?
先物オプションを扱う人ならお馴染みの「IV(インプライド・ボラティリティ)」の分布グラフ。
これを見ながら市場のセンチメント(強気・弱気)を読み解く分析手法です。


4. JPXデータの自動取得とS3連携

boto3を使ってS3へのアップロード・ダウンロードを実装。
JPXのZIPファイルを展開し、スマイルカーブ生成に必要なCSVを自動整形します。
S3に、AIへの指示用プロンプト内容をファイルとして置くことで、プロジェクトの構成を変更しなくても運用できるように対応。

このステップで、Lambdaが単なる関数実行環境ではなく、
クラウド上のストレージ(S3)と密に連携できることを実感しました。


5. Gemini APIとのAI連携

いよいよAI連携。
Gemini APIをPythonから呼び出し、CSVを入力に解析を実行します。
ChatGPTと違って無料枠でAPIを試せたため、まずはこちらを採用。

  • プロンプトをS3上のテキストとして管理、プロンプト修正時もデプロイ不要で更新可能
  • 予備としてソースコードにもデフォルトプロンプトを埋め込み

「プロンプトの最後にdoneを返すように」と指定し、最後まで受信できたことを確認できるようにしました。

SnapCrab_NoName_2025-10-29_12-6-2_No-00.jpg

単体でGeminiのAIモジュールをテスト中のイメージ


6. 全体統合とスケジュール実行

各モジュールを統合し、ローカル・Lambdaの両方で動作確認。
最終的にEventBridgeで毎日16:50に自動実行する設定を追加。

そしてついに──
📩 LINEにスマイルカーブ画像とAI解析コメントが届く!
IMG_0904.jpg

開発3日目、ようやくすべてがつながった瞬間でした。


⚙️ ハマりポイントと学び

  • 🧱 Pythonのインデント
    スペースとタブを混ぜると確実にエラー。エィデタの可視化設定で解決。
    C++を触っているとインデントに意味があるとは知らずハマる
  • 📦 Lambda ZIPのサイズ制限
    matplotlibなどの重いライブラリを使うならDockerを使うのが良さそう
  • 🧩 ライブラリの環境差
    WindowsでビルドしたパッケージはLambda(Linux)で動かない。WSL2で統一(当然だが案外見落とす)
  • Dockerのタイムゾーン
    デフォルトUTC。TZ=Asia/Tokyoで修正。
  • 🤖 AIのコード自動生成
    大きなソースコードを一括でAIに任せるとデグレード多発。機能単位で分けてコード生成を依頼し、人間が統合した方が安定。

🧠 まとめ

このプロジェクトの構築には約3日。
「毎日の手作業を、AIとクラウドで置き換える」という発想から始まりましたが、
結果的に“お試し”の域を超えた感じに完成しました。


⚠️ データ利用と免責事項

本記事で使用している JPX データは、日本取引所グループ(JPX)が一般公開している情報をもとに、個人の研究・学習目的 で解析したものです。

  • 商用利用・再配布は行っていません。

本記事および AI による分析結果は、特定の銘柄や金融商品の 売買を推奨するものではありません

投資判断は必ず ご自身の責任 で行ってください。


本記事は 教育・技術紹介 を目的としており、
金融商品取引法上の「投資助言」には該当しません。

📅 Project Duration: 約3日
🔧 Tech Stack: AWS Lambda / Docker / Python / Gemini API / LINE Messaging API

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?