神になれたかと思ったClaudeの決算データ収集プログラム

プログラミング画面 Python

久々にテクノロジーカテゴリーのことを書いています。気づけば今年の初めあたりに、Copilotに頼りながら有価証券報告書のテキストデータを集めた記事を書いていました。

その後、私のプログラミングの能力が上がったかというと、むしろ退化😓。いや、もともと能力ないのですけど、もうAI(Claude)の進化がすごくて、自分でプログラムを書くことが不要と思える所まで来た、という感じです。

一方で、プログラムを誰かが書いてくれるようになると、元データの質が起こす問題というのもだんだん分かってきました。プロのプログラマーさんだったら、そういうのもひっくるめて上手く対処されるんでしょうが・・・。

Claude proを契約した

少し前までは無料のAI使っていたのですが、「より大きい容量と賢さを買おう!」、ということで、Claude proというプランを契約しました。年間220ドル。ほぼ毎日使っているから、十分元が取れている感じがします。

プログラムを作ってもらう以外にも、使い方として有効だな、と思っていることは、

  • こういうデータを探しているのだけど、信頼できるデータ元を教えて
  • このレポートを読んで、XXという質問に答えているところがあれば、なんと言っているか教えて
  • (海外の会社名のリストを渡して)所在国、事業内容、利益規模を教えて
  • XXという対策は○○という問題に対して有効?
  • (データを渡して)XXや○○という観点が分かるように可視化して
  • (この時期ここに行き、こんなことしたいので)旅行プランをたてて

のようなことです。特に、海外のデータ探し、レポートをベースにしたQ&Aみたいなことは助かる。まとめ系は「誰々向けに」というレベル感や「ですます調で」など、細かく指定するほど望みの物が得られると感じています。

ただ、事実を集める、要約するのは良いのですが、情報やデータを解釈するという点においては、結構嘘があると感じます。

そして、最初びっくりしたのが、(よかれと思って?)データを勝手に修正したことです。無いものや外れ値は勝手に変更せず確認してくれ、などと指導しているので、最近は勝手に修正するということは無くなったように思うのですが。

間違ったデータや解釈は、自分がある程度知識がある分野なら違和感があったりするので分かるのですが、そうでない分野だと難しいですよね😑。

EDINETのAPI経由でのデータ収集

プログラミングですが、主な目的は、決算データの集計です。広く集めたい場合は、TDnetやEDINETのAPI経由でデータを集めてExcelにまとめてもらうという作業をします。私はチャット機能のみ使っています。このやり方が一番効率的か分かりませんが・・・。

私の場合、まず最初に「このサイトをつかってこういうデータをExcelにまとめたいのだけど、できそう?」と軽くClaudeに聞きます。サンプルデータなんかを渡すこともあります。

本当に人に話しかけるような自然な言葉で指示すると、ちゃんと理解してくれることは感動です。

Claudeが情報をみて「できます」と返事してくれば、Pythonでプログラムを書いてもらう→自分で実行する→データをチェックして修正・改善点を指摘する→プログラムを修正してもらう・・・というのを繰り返して欲しいデータができるまでプログラムを修正してもらう感じです。

自分で最低限やることは、以下くらい?

  • サイトのAPIキーを取得しておく(Claudeには渡さない方が良いとClaudeに言われたので、APIキーがあることのみ伝える)
  • Pythonを実行できるだけのPC環境準備と勉強はしておく
  • 必要あれば対象データやサンプルの準備

最初に指示を伝えた時点で、Claudeが出してきた「処理フロー」とアウトプットとしてのExcelデータイメージの確認がこちら(このときは、似たようなできあがりのExcelファイルを渡して、「このように作って」と伝えました。)。このときは銀行業界のデータを集めました。パースとかいまいちわかんないけど😓、やってもらいたいことを分かってくれたことはなんとなく分かる。

Claudeの応答
Claudeが私のベタな日本語の指示をどう理解したかをちゃんと説明してくれる

プログラム上に、「ここで何をやっている」、「ここは毎年書き換えよ」みたいなことをClaudeが書いておいてくれます。

私の場合は、最初の条件指定が足りなかったり、やっぱこういう形がいいな、という変更を依頼したことなどもあり、80社くらいのデータを欲しい形に得るまでに1日がかりでしたかね。トークンを使い切ってしまって作業中断のこともありました。

フィードバックをした後のプログラムの修正は数秒でやってくれるんですが、Claudeもうまくいかない原因を試行錯誤します。どこでエラーが出ているのかのチェックをするプログラムをClaudeが作ってきて、私が実行して結果を返す感じ。

なので、こちらがClaudeに使われている感じになります。AIができない物理的なところをヒューマン・エージェントにやらせるという話がありますが、まさにそれ😓。

アウトプットが一度で思うように直らないことも多々です。私自身がもう少しEDINETのデータの構成というか、内容を良く理解していたら、効率良く指示を出せたかもしれません。また、プログラムの中身が分かった方が改善指示はしやすいとは思います。

ただ、自分で一からやることを考えれば、私としては、もう「全能の神になった✨」に近い気分なのです。

プログラミングの結果出来たファイル
できあがったファイル。これをもとにヴィジュアルかもお願いできる。

EDINET開示データの使いにくいところ

一番助かる&すごい!と思ったのが、テキストで作成されている注釈などに含まれる数字をデータとしてExcelに持ってきてくれること。例えば、銀行では不良債権の内訳とか有価証券の種類別の評価損益など。

ただ、会社により多少記述や分類の仕方が若干異なることがあり、1ラベル=1データのBSやPLのデータと比べると、結果が不安定になりがちのようです。

ざーっと見た限り、明らかに変、と思われるデータが無い状態でも、本当に合っている、と自信を持って言い切れない感じなんですよね。かなりの部分は元データとチェックはしましたが、全件チェックすると、プログラム化した意味が無いし・・・。

銀行により分類や記載範囲が異なるのは、EDINETの問題ではないけれど、自動化という観点では元データの平仄があっていないのは結構悩ましい。例えば、不良債権の比率を計算したいのに、分母の総債権額が分かる銀行と分からない銀行がある😭。

もう何年も全行が定型的に開示しているようなデータは、全部統一的にラベルつけて、同じ平仄になりませんかね・・・。

(過去記事)

CopilotにPythonとVBAを任せたら衝撃的だった
EDINET(金融庁が公開している有価証券報告書などの電子開示閲覧サイト)から有価証券報告書の情報の一部を各社分まとめて使いたい、というニーズがずっとありました。やりたいことに近いことをやっている方が公開しているPythonのプログラムをコ…

コメント

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