2
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?

「契約済み」は思い込みだった 〜データの軸を足す前に実際のAPIを叩く(Claude Code開発記)〜

2
Posted at

みなさん、こんにちは!
「ALPHA FORGE 開発秘話」の第24話です。

「需給データ、使えますか?」「契約済みです!」……AIが実際に叩いたら「This API is not available on your subscription」😇
自信満々に答えた私、見事に間違っていました。しかもこの日、ドキュメントを信じていたら気づけなかった落とし穴が、もう1つ見つかります。

日本株のAI銘柄スクリーニング&継続学習端末「ALPHA FORGE(アルファフォージ)」を、Claude Code と二人三脚で個人開発しています。今回は【事件簿】回。AIの判断材料に「需給」と「決算サプライズ」の2本の軸を足した9月22日の話です🔧

【要約:この記事で伝えたいこと】

  1. 「他に取り入れるべき分析方法は?」と聞き、需給データ(信用取引の残高)から足すと決めた。でも私の「契約済み」は思い込みで、実際のAPIは「このプランでは使えない」と返した
  2. 無料の代わりの道(取引所のPDF)もAIが実際に読んで調べ、保守の重さを示した。プランを上げると決めて手続きしたのは人間
  3. 持ち帰り:データの軸を足す前に、実際のAPIを1回叩いて「何が取れて、何が取れないか」を確かめる。ドキュメントと人間の記憶は、どちらも外れることがある

※本記事はnote連載[ALPHA FORGE 開発秘話 #24] の技術的な部分を、エンジニア向けに再構成したものです。

🤔 「他に取り入れるべき分析方法は?」

ALPHA FORGE は、テクニカル・トレンド・ファンダメンタル・センチメントの4つの分析で銘柄を見ています。9月22日の昼すぎ、私はAI(Claude Code)に聞きました。

fig_chat_start.jpg
相談から始まって、方向を決めたのは人間

今は取り入れていないが、銘柄の分析方法として他に取り入れるべき分析方法などがあれば取り入れたい。

AIの提案は、需給データでした。信用取引の残高(どれだけの人が借金して買っているか・売っているか)です。株価データの取得に使っている J-Quants にそのまま入っているので、新しい契約先は要らない。候補には「決算サプライズ・予想修正」も挙がっていました。
私の返事は「OK、中長期予想の軸として需給データから広げていきましょう」。

💥 1回目のどんでん返し:「このプランでは使えません」

02_wall.jpg
人間の記憶と、実際のAPIの答えが違った

AIは作り始める前に、選択式で聞いてきました。「現在のJ-Quants APIキーはどのプランで契約されていますか?」。私は迷わず「Standard以上(既に契約済み)」を選びます😎

ところがAIが実際にAPIを呼ぶと、返ってきたのはこれ。

This API is not available on your subscription

AIはこう報告してきました(要旨)。「事前に確認した内容と食い違うため、進め方を確認させてください」。勝手に回り道をせず、ちゃんと止まってくれたんです✋
私の記憶が間違っていました。人間の「たぶん大丈夫」も、立派な未検証データです😅

📄 無料の抜け道は、85ページのPDFだった

私は「他のデータ源(yfinance等)で代替できないか検討してほしい」と頼みました。AIは取引所が無料で公開している、銘柄別の信用取引の週末残高を実際に取ってきて、中身まで読んでくれました。

fig_pdf.jpg
無料だけど、重い。AIが実物を読んで出した見積もり

  1. CSVではなくPDFで、直近の分だけで85ページ
  2. 文字は抜き出せるが、会社名はフォントの都合で文字化けする
  3. 各行は「コード+ISIN+数値12個」の決まった並びで、位置で読めば取れなくはない
  4. 最新のファイルは毎週ページから探し直す必要があり、さかのぼれるのは数週間分だけ

AIのおすすめは「プランを上げる」。PDFは無料だけれど、読み取りの仕組みを自前で持ち、取引所のレイアウト変更のたびに壊れるリスクを背負うからです。調査のために一時的に入れた部品も、全部片づけてから報告してくれました🧹
私はプランを上げると決めて、マイページでの確認と手続きを自分でやりました。ログインと支払いは、人間の仕事です💳

ハマりどころ
「無料で取れる」と「運用できる」は別物です。PDFの位置ベース抽出は、レイアウトが1回変わるだけで静かに壊れます。比べるときは、月額の差額だけでなく、壊れたときに気づく仕組みと直す手間まで含めて見積もります。

🛠️ 軸は「4分析」に混ぜず、AIの判断材料として渡す

03_fix.jpg
新しい軸は合成スコアに混ぜず、AIの判断材料の欄に足す

プランを上げたあとは、実データで取れることを確かめてから実装へ。ここで1つ、大事な設計の分かれ道がありました。新しい軸を「5本目の分析」として合成スコアに混ぜるか、AIが最後に判断するときの材料として渡すだけにするか。

選んだのは後者です。4分析は、確度の較正やモデルの昇格判定など、あちこちの前提になっています。そこへ更新頻度の違う(週1回の)データを混ぜると、影響がどこまで広がるか読み切れません。しかも信用残高は数字だけで、自由記述の文章を含まないので、プロンプトインジェクションの心配も要りません(第9話の話です)。

案 中身 採否
5本目の分析として合成スコアに混ぜる 確度の較正・昇格判定まで影響が広がる 採らない
AIの判断材料(最終判断ステージ)に渡す 4分析はそのまま。推論の記録と台帳にも残す 採用

💥 2回目のどんでん返し:「業績予想の修正」が取れない

需給の軸が入った直後、私は続けて頼みました。

決算サプライズ・予想修正モメンタムによるLLMピックについて、プランを建てて

決算が会社の予想をどれだけ上回ったか(サプライズ)と、会社の予想が四半期ごとに上がっているか(モメンタム)を見る軸です。

fig_cannot.jpg
ドキュメントだけ読んでいたら、気づけなかった穴

AIは計画の前に、また実際のAPIを照会しました。会社の通期予想の項目がちゃんと入っていることは確認できた。でも、返ってくるのは四半期ごとの決算短信だけ。決算とは関係ないタイミングで出る、単発の「業績予想の修正に関するお知らせ」は入っていなかったんです🕳️

この制約は、コードの説明にそのまま書き残しました(抜粋・一部省略)。

backend/services/scoring/earnings_surprise_analyzer.py
"""決算サプライズ・予想修正モメンタム分析サービス(J-Quants由来).

**重要な制約**(2026-09-22、実 API 呼び出し検証済み): J-Quants
`/fins/summary` は四半期決算短信(`DocType` が `1Q`/`2Q`/`3Q`/`FY` FinancialStatements)のみを
返し、単発の「業績予想の修正に関するお知らせ」(決算発表と無関係なタイミングで出る適時開示)は
このエンドポイントには現れない。そのため本サービスが検出できるのは「四半期決算のたびに更新
される会社側の通期予想の変化」のみ。
"""

こちらは需給と違って、短期・中長期の両方に入れました。決算は発表直後の値動きに直結する、イベント型の材料だからです。統合のしかたと対象をどうするかはAIが選択肢で聞き、私がおすすめどおりに選びました。

⚖️ やったこと/やらなかったこと

  1. やったこと:実データで確かめてから設計。2本とも、AIの判断材料・推論の記録・ポイント・イン・タイム台帳(第10話)へ配線
  2. やらなかったこと:PDFを読み取る無料の道。保守の重さとレイアウト変更のリスクが、月額の差額より高くつくから
  3. やらなかったこと:新しい軸を合成スコアの5本目にする案。較正や昇格判定まで影響が広がるから
  4. 決めたのは人間:軸の方向、プランを上げること、統合のしかたと対象。AIは提案と実地の調査、実装と検証を担当しました

🧰 今回のプロンプト術:「確認」より「実際に叩いて」

この日の2回のどんでん返しは、どちらもAIが「実際にAPIを呼んで」見つけたものでした。私の記憶も、ドキュメントの説明も、実物の前ではあっさり外れます📡

  1. データの軸を足す前に、実際のAPIを1回叩いてもらう(取れる項目と、取れないものの両方を)
  2. 人間の「契約済み」「たぶん大丈夫」も、確かめる対象に入れる
  3. 予想と違ったら、回り道せずに止まって聞いてもらう

ちなみにこの日、実際のLLM料金と台帳への書き込みを伴う最終確認の前にも、AIは「実行しますか?」と聞いてきました。計画を承認していても、お金がかかる一歩の前では止まる。このやり方は、その後のルールにもなっています💰

fig_roles.jpg
人間が方向を決め、AIが実物で確かめ、人間が契約した

📌 保存用チェックリスト

  1. 新しいデータ源は、設計の前に実際のAPIを1回呼ぶ
  2. 「何が取れないか」も記録に残す(コードの説明と決定ログ)
  3. 無料の代わりの道は、保守の重さまで含めて比べる
  4. 更新頻度の違うデータは、合成スコアに混ぜる前に影響範囲を考える
  5. 人間の記憶も、確かめる対象に入れる

☕ note.comで開発秘話と毎朝の検証ログを連載中

note.comでは、「ALPHA FORGE」の開発秘話と、毎朝のアルゴリズム検証ログを公開しています。

👉 元記事(note連載第24話):
https://note.com/featured_stocks/n/n7cc5d2e972d5

データの取り方で「できる」と「やってよい」を分けた話は、第11話でも書いています。

エンジニアでない方向けに「AIへの仕事の頼み方」をまとめた連載(メンバーシップ「AIとつくるラボ」)もやっています。第0話は無料で読めます。


免責事項
本記事は個人開発およびAIエージェントを活用したシステム開発の技術記録です。特定の銘柄の売買推奨や投資助言を行うものではありません。記事中のデータ提供サービスの仕様・契約区分は、2026年9月22日時点の開発時の記録にもとづくもので、変更される可能性があります。需給・決算のデータは判断材料の1つであり、将来の値動きを示すものではありません。AIの発言は要旨です。

⚠️ 【システム検証記録に関する免責事項・注意事項】

  • 本記事は、独自開発アルゴリズム「ALPHA FORGE」の動作検証およびデータ分析過程を公開する技術・運用の個人的な記録ログです。
  • 掲載されているすべてのデータ(各スコア、基準観測値、統計的変動上限、シナリオ無効化水準など)は、過去の市場データに基づき数式(ATR等)により機械的に算出されたバックテスト・シミュレーション用のパラメータであり、特定の有価証券の売買勧誘、取引の推奨、投資助言・代理行為を目的としたものではありません。
  • また、将来の株価変動や運用成果を保証するものではありません。実際の投資判断および最終決定は、必ずご自身の責任と判断において行っていただけますようお願いいたします。
2
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
2
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?