開発ログ

個別株を始めたくて、J-QuantsとEDINETで10年分の企業データを集めることにした

Ginusagi

日本株のファンダメンタル分析ツールを自作しています。J-QuantsとEDINETから10年分の企業データを集め、自分の基準で会社を絞り込むためのものです。まだ完成していないので、これは途中経過の記録です。

きっかけは、個別株で10倍株を探してみたいと思ったことでした。

投資信託なら、どの会社をどれだけ持つかは運用会社が決めてくれます。個別株では、そこが自分の仕事になります。だとすれば、まず会社を読めるようにならないと始まらない。そう思ったのが出発点です。

調べていくと、株の分析にはテクニカル分析とファンダメンタル分析の2つがあると分かりました。チャートの値動きを見て「いつ買うか」を考えるのがテクニカル、会社の業績や財務を見て「どれを買うか」を考えるのがファンダメンタルです。最初の分かれ道はここでした。

会社員がテクニカル分析を選ぶのは無理がある

テクニカル分析は面白そうではあるのですが、私はサラリーマンで、マーケットが開いている平日の日中は仕事をしています。値動きを追い続けるのは難しいと思いました。

その点、ファンダメンタル分析なら、決算は年に4回しか出ません。夜と週末しか時間が取れない生活とは、こちらの方が相性がいい。それでファンダメンタル分析に絞りました。

ただし、全銘柄を手で見るのは現実的ではなかった

方向は決まったのですが、次の問題がすぐ出てきました。日本の上場企業は数千社あります。有価証券報告書を1社ずつ開いて、売上と利益の推移を書き写して、財務指標を電卓で出して……を全部やっていたら、いつまで経っても終わりません。

最終的にどの会社を買うかは自分で決めるとしても、「見るに値する会社を絞り込む」ところは機械にやらせればいいのではないか。そう考えて、分析ツールを作りはじめました。

「既存のサービスを使えばいいのでは」と自分でも思った

ここまで書くと、「みんかぶや銘柄スカウターのような既存のサービスを使えばいいのでは」と思われるかもしれません。実際、作りはじめる前に自分でも同じことを考えました。スクリーニングも業績の推移も、たいていのことはもう見られます。

それでも自分で作ることにしたのは、理由が2つあります。

ひとつは、既存のサービスだと、基準を変えたときに過去へ遡って当て直せないことです。既存のサービスは基本的に「見に行く」もので、手元にデータは残りません。自分のデータベースに10年分入れておけば、あとから「自己資本比率の目安を40%から50%に上げたら、残る会社はどう変わるか」を全銘柄・全年度に一括で当て直せます。物差しそのものを疑って引き直す、という使い方がしたかったのが一番の理由です。

もうひとつは、単純に、作りながら覚えたかったからです。指標の意味は、出来上がった数字を眺めるより、自分で計算式を書いたほうが頭に入ります。手を動かしてみて初めて腹に落ちた指標もいくつかありました。仕事がエンジニアなので、読むより作るほうが早いという事情もあります。

なので、これは「既存のサービスでは足りない」という話ではありません。足りている人はそれで十分だと思います。自分の場合は、物差しを自分の手元に置いておきたかった、というだけの話です。

データはJ-QuantsとEDINETから集める

絞り込みをやらせるには、まず手元にデータが要ります。使うことにしたのはこの2つです。

  • J-Quants(日本取引所グループが提供しているデータAPI):株価や財務のデータをまとめて取得する
  • EDINET(金融庁の電子開示システム):有価証券報告書などの一次情報を取得する

集めるのは10年分と決めました。1〜2年分だと、たまたま調子の良かった時期だけを見て「良い会社だ」と判断してしまいます。10年あれば、景気が悪かった年にその会社がどう振る舞ったかまで見えます。自分が知りたかったのは、むしろそちらの方でした。

いまの作りかた

  • データの取得はPython
  • 集めた数字はMySQLに保存
  • レポートの雛形は自作のMarkdown
  • 出力はグラフ入りのHTML
  • Macのターミナルからコマンド実行

Webアプリにはしていません。使うのが自分ひとりなので、画面を作る時間があるなら分析の中身に使いたかったからです。

絞り込みの基準は自分のチェックリストをそのまま使った

機械に絞り込ませるには、基準を先に決めておく必要があります。ここは以前から使っていた企業財務分析のチェックリストをそのまま使いました。健全性・収益性・成長性・利益の質の4つの観点で見ています。

  • 健全性の目安は自己資本比率40%以上
  • 収益性の目安は営業利益率5%以上、ROE10%以上
  • 成長性と利益の質は、単年ではなく数年の並びで見る

この目安が絶対に正しいとは思っていません。ただ、毎回ぶれない物差しを持っておくと、「今回はなんとなく良く見える」を防げます。10年分を集めることにしたのも、この物差しを何年分にも当てられるようにするためです。

10倍株を探すといっても、いきなり成長性だけを見るつもりはありません。まず財務が崩れない会社に絞ったうえで、その中で成長性を見たい、という順番です。

いま詰まっているところ

ひとつは業界平均です。営業利益率5%が良いのか悪いのかは、業種によって全く違います。外食と鉄鋼を同じ物差しで測っても意味がありません。ここは自動化を諦めて、業種ごとの目安値を手で持つことにしました。業種を増やすのは面倒ですが、どこかから自動で拾ってきた数字を鵜呑みにするよりは納得できます。

もうひとつは、数字の横に付ける一行のコメントを誰が書くかです。全部をルールで書くとどの会社も同じ文章になり、全部をAIに任せると数字と関係のないことを書かれても気づけません。いまは「良い・普通・注意」の判定はルールで固定して、その判定を日本語の文章にするところだけを生成に任せる、という分け方に落ち着いています。

次にやること

  • 10年分のデータ取得を、銘柄をまたいで安定して回せるようにする(いまは途中で止まると、どこまで取れたか分からなくなる)
  • 複数社を並べて比較できるようにする
  • 業種別の目安値を少しずつ埋める

進んだらまた書きます。同じようなものを作っている方がいたら、どこで詰まったかを聞かせてもらえると嬉しいです。

おことわり

この記事は、個人が趣味で作っているツールの制作記録です。特定の銘柄の購入や売却を勧めるものではありません。投資の判断はご自身の責任でお願いします。

Recommend

-開発ログ