▶ 第1話「2020年以降に上場した株だけを全部集めてみた」はこちら
はじめに ーー 1枚のPDFから始まる「未来の2〜10倍株」探し
Gさんです。こんにちは。
前回の第1話では、Pythonを使って、「2020年以降に上場した日本株だけを全部集める」というところまで一緒に進めました。
あのときゴールとしていたのが、このPDFです 👇
これは、2020年以降に上場した銘柄だけを抽出した、いわば「新興株カタログ」です。 このカタログをどう料理するかで、その後の投資結果は大きく変わってきます。
第2話のテーマは、ずばりこうです。
- なぜ、わざわざ「2020年以降上場」の株だけに絞るのか?
- その中から、さらに「営業利益30%以上UP」「赤字→黒字」に絞る意味は?
- その抽出を、Pythonコード(新興株2020.py)でどう実現しているのか?
このあたりを「株さん(元ゴールドマン日本株アナリスト)」の視点も交えながら、 なるべく投資初心者でもイメージが湧くように、丁寧に掘り下げていきます。
1. 2020年以降に上場した株だけを集めた理由
1-1. 上場直後〜数年は「伸び代」が一番大きいゾーン
まず大前提として、今回のPDFに載っているのは、
- 2020年1月1日以降に上場した銘柄
- プライム・スタンダード・グロースなど、全市場を対象
- 東京証券取引所の一覧(jpx_all_list.csv)をベースに抽出
です。なぜ、こんなに「上場年度」を意識するのか?
株さん: 「企業ってね、上場から3〜5年くらいが一番“物語”が進むんだよ。 ビジネスモデルが市場に評価されたり、逆に期待外れと判断されたり、株価が大きく動きやすい。」
つまり、
- すでに成熟してしまった大企業ではなく
- まだ“物語の途中”にいる新興株にフォーカスしたい
というのが、このPDFの根っこにある考え方です。
1-2. 2020年という区切りの意味
さらに、わざわざ「2020年」を境目にしたのもポイントです。
2020年といえば、
- コロナショック
- 世界的な金融緩和
- DX(デジタル・トランスフォーメーション)の加速
- リモートワーク、オンラインサービスの急成長
…と、ビジネス環境が一気に変わった年でした。
いくさん: 「2020年以降に上場した企業って、“この新しい時代”を前提にビジネスを立ち上げてる会社が多い気がする。」
まさにその通りで、
- クラウド / SaaS
- AI / データ解析
- 宇宙関連
- フィンテック
- バイオ・ヘルスケア
といった、これからの成長テーマど真ん中の会社たちがズラッと並んでいるのが、このPDFです。
まず、「土俵選び」として
▶ 2020年以降に上場した新興株だけを、Pythonで全部洗い出す。
ここまでが、第1話でやったこと。 そして第2話では、その土俵の上にいる会社たちを、さらに「成長でふるいにかける」ステージに進みます。
2. PDFが教えてくれる「新興株の全体像」
2-1. ただの銘柄リストではなく「素材集」
もう一度PDFを眺めてみてください。
銘柄コード、銘柄名、市場、終値、上場日… ぱっと見はただの一覧表ですが、株さん視点だと、こう見えています。
- 「小型で、まだ時価総額が小さい」銘柄が多い
- 「グロース市場」が多く、“物語の途中”にいる会社ばかり
- テーマ(AI、宇宙、SaaS、バイオ…)に偏りがある
このPDFは、料理でいえば「材料だけを全部並べた状態」です。 ここから、
- 焦げそうな素材は外す
- 伸びそうな素材を大事に取っておく
- “味の強いスパイス”みたいな銘柄を見つける
という作業を、Pythonにやらせてしまおう、というのが今回のコードです。
2-2. 人間の感覚だけで 500銘柄を見続けるのは無理
PDFの銘柄数は、およそ500〜600銘柄。 これを毎日、手作業でウォッチするのは現実的ではありません。
いくさん: 「600銘柄を毎日スクリーニングして、そのうちの50銘柄だけチャートチェックして…とかって、人間の気力じゃ続かないよね。」
そこで考えたのが、
- ① 一度、成長でガツンとふるいにかけて、候補を200銘柄くらいまで減らす
- ② そこから先は、毎日・毎週の“監視リスト”として運用する
という二段構えです。
その「①」の役割を担うのが、今回の新興株2020.py。 このコードは、PDFの元になっているExcelを読み込み、
- 営業利益が30%以上増えている会社
- 営業利益が赤字から黒字に転換した会社
だけを抽出してくれます。
3. 「新興株2020.py」がやっていることを、あえて“人間の言葉”で説明する
ここからは、さきほど貼っていただいたコードを、あえて「人間語」に翻訳してみます。
3-1. ベースになっているのは「2020上場_抽出結果_20251116.xlsx」
コードの冒頭では、まずこの2行で、今回の主役ファイルを指定しています。
INPUT_XLSX = os.path.join(SCRIPT_DIR, "2020上場_抽出結果_20251116.xlsx") INPUT_SHEET = "2020上場" つまり、
- 第1話で作った「2020上場_抽出結果_20251116.xlsx」を読み込み
- その中の「2020上場」というシートをベースにする
という宣言です。
このシートには、
- コード
- 銘柄名
- 市場
- 終値
- 上場推定日
などが入っています。 この“第1ステージの結果”を土台に、成長度合いでふるいにかけるのが第2ステージです。
3-2. Tickerを作って、yfinanceで決算データを取りに行く
株さんの相棒として、Pythonはyfinanceというライブラリを使っています。
if "Ticker" not in base.columns: base["Ticker"] = base["コード"] + ".T" 東京市場の銘柄は、yahoo finance 上では「銘柄コード + .T」という形で扱われます。
- 7777 → 7777.T
- 4053 → 4053.T
この Ticker を使って、
tk = yf.Ticker(ticker) fin = tk.financials と書くことで、
- 売上高(total revenue)
- 営業利益(operating income)
といった決算データを、Python側に引っ張って来れます。
コードの中では、
rev = find_row(fin.index, ["totalrevenue"]) op = find_row(fin.index, ["operatingincome"]) として、財務データの行ラベルの中から「売上」と「営業利益」に相当する行を探し、
"売上_今年": fin.loc[rev, this], "売上_前年": fin.loc[rev, prev], "営業_今年": fin.loc[op, this], "営業_前年": fin.loc[op, prev], という形で、今年と前年の2期分を取り出しています。
3-3. 判定は生データ、表示は億円と%
ここが今回のこだわりポイントです。
Pythonの内部では、まず生の数値(円単位)を扱い、 その後で、
- 金額 → 億円(小数第2位まで)
- 成長率 → %表示(小数第2位まで)
に変換しています。
def calc_growth(now, prev): if now is None or prev is None or prev == 0: return None return (now / prev - 1) * 100 この関数で、
- 売上成長率(%)
- 営業利益成長率(%)
を計算し、
"営業利益成長率(%)": round(o_g, 2) if o_g is not None else None, というようにして Excel に書き出しています。
ここで重要なのは、
- 合格判定は「生の営業利益データ」を使う
- 見やすさのために、出力時だけ「億円」「%」に変換する
という設計にしたことです。
4. 「営業利益30%UP」と「赤字→黒字」の意味
4-1. なぜ“売上”より“営業利益”にこだわるのか
今回の合格判定は、非常にシンプルです。
# ① 営業利益 +30% 以上 if o_g is not None and o_g >= 30: ok = True # ② 赤字 → 黒字 if o_prev is not None and o_prev < 0 and o_this is not None and o_this > 0: ok = True 売上成長率も計算はしていますが、「合格かどうか」の最終判定では、
- 営業利益の伸び(30%以上)
- 営業利益が赤字から黒字に転換しているか
の2点だけを見ています。
株さん: 「売上は“体重”、営業利益は“筋肉量”だと思ってください。」
売上が増えていても、
- 広告費をバンバン使っているだけ
- 粗利率が低くて、利益が残っていない
というケースはよくあります。
一方、営業利益がしっかり伸びている会社は、
- ビジネスモデルが機能している
- コスト構造が良い方向に変わっている
- 価格決定力がついてきている
など、「ビジネスとしての強さ」が見えてきます。
4-2. 営業利益30%UPは「本当に強い会社しか通らないフィルター」
営業利益が30%成長というのは、決してぬるい条件ではありません。
- 営業利益が 1億 → 1.3億
- 5億 → 6.5億
- 10億 → 13億
といったレベルの伸びです。
しかも、これは1年だけの話。 連続して30%成長している会社は、極めて少数です。
だからこそ、
- 「なんとなく売上や株価が増えてる会社」ではなく
- 「事業としてガチで成長している会社」を拾える
という意味で、営業利益30%UPはかなり強力なフィルターになります。
4-3. 赤字→黒字は「ストーリーが変わる瞬間」
もうひとつの条件、「赤字→黒字」も重要です。
IPO直後の会社は、
- 成長投資を優先している
- 研究開発費を積んでいる
- 広告・人材・設備など、未来のためにお金を使っている
ことが多く、上場してから数年は赤字が続くケースも珍しくありません。
そこから、
- 事業モデルが固まってきて
- 売上が積み上がり
- 固定費を吸収しきれるようになる
と、あるタイミングで「黒字化」します。
株さん: 「この“赤字→黒字”のタイミングは、市場の評価もガラッと変わるポイント。 『赤字のベンチャー』から『ちゃんと利益を出せる会社』に昇格する瞬間なんだ。」
だから、Python側では、
- 前年の営業利益 < 0(赤字)
- 今年の営業利益 > 0(黒字)
という条件を満たした銘柄も、自動的に「合格」として拾い上げるようにしています。
5. テーマ(系統)で“どんな物語の株か”をざっくり分ける
5-1. AI?宇宙?SaaS?ざっくりラベリング
新興株2020.py には、地味に効いている機能がもうひとつあります。 それが、銘柄ごとの「系統(テーマ)」を自動で推測する部分です。
THEME_KEYWORDS = { "AI": ["AI", "人工知能", "機械学習", "ディープラーニング"], "宇宙": ["宇宙", "衛星", "ロケット", "スペース"], "SaaS": ["SaaS", "クラウド", "サブスク"], "バイオ": ["バイオ", "創薬", "医薬", "細胞", "ゲノム"], "半導体": ["半導体", "シリコン", "ウエハ"], "Fintech": ["フィンテック", "決済", "キャッシュレス"], } 銘柄名と市場の文字列を1つにくっつけて、
theme = classify_theme(name, market) という関数で、
- AI
- 宇宙
- SaaS
- バイオ
- 半導体
- Fintech
といったラベルを、最大2つまで付けるようにしています。
5-2. 「テーマ × 成長」で眺めると、ストーリーが見えてくる
これをやっておくと、抽出されたExcelを眺めたときに、
- AI系で、営業利益30%UPの銘柄
- 宇宙テーマで、赤字→黒字の銘柄
- SaaSだけど、売上は伸びているのに利益がついてきてない銘柄
というように、「テーマ × 数字」の両面で眺められるようになります。
これは、
- 次にどの業種・テーマに注目するか
- ポートフォリオ全体で、テーマが偏っていないか
といった視点にも役立ってきます。
6. 2020上場株成長抽出①_YYYYMMDD.xlsx の中身イメージ
このコードを実行すると、最終的に
- 成長合格(営業利益30%UP or 赤字→黒字)のシート
- 全データ(すべての銘柄+成長率)
- エラー一覧(うまく取れなかった銘柄)
- script_log(スクリプト名とコード全文)
を持った Excel ファイルが出力されます。
ファイル名は、
2020上場株成長抽出①_YYYYMMDD.xlsx
という形式で、毎回日付付き。 同じ日に複数回実行すると、
- 2020上場株成長抽出①_20251118.xlsx
- 2020上場株成長抽出①_20251118 (2).xlsx
のように自動的に連番がふられます。
さらに、成長合格シートのコード列には、すべて株探へのハイパーリンクが付いています。
- 7777 → クリックすると 株探の7777ページ が開く
これにより、
- Excelで一覧を見る
- 気になった銘柄コードをクリック
- 株探の詳細ページでチャートや四季報情報を確認
という流れが、ワンクリックでつながります。
7. このPDFとコードをどう活かしていくか?
7-1. 600銘柄 → 200銘柄 → 日々の監視リストへ
最初のPDFには、約600銘柄が載っています。 ここから、
- 営業利益30%UP & 赤字→黒字でふるいにかける(今回のコード)
- 合格銘柄を200前後まで絞り込む
- そこからさらに、出来高・チャートの形・ニュースなどで優先度をつける
というイメージです。
これを一気にやるのではなく、
- まずは「成長」という軸だけでふるいにかける
- 次の段階で「需給」「トレンド」を重ねていく
というのが、株さんのおすすめステップです。
7-2. 読者がこのPDFから学べること
このブログを読んでくださっている方にとって、 このPDFとコードは、単なる「ツール」以上の意味があります。
- 2020年以降のIPO銘柄が、どんなテーマに偏っているのか
- 成長している会社と、そうでない会社の違いは何か
- 営業利益が30%伸びる会社の“数字の動き方”はどんな形か
このあたりを、実際の一覧+自分の目で確認できるからです。
もしよければ、PDFを手元に保存して、
- 自分が持っている銘柄
- 気になっているテーマ(AI、宇宙、SaaS…)
に色をつけたりメモを書き込んだりしながら、眺めてみてください。
8. これからどんな株を探していくのか?
最後に、これから探していきたい株のイメージを、株さんと整理しておきます。
8-1. 株さんが狙いたい「2〜10倍候補」の条件
- 2020年以降のIPO銘柄(=新しい時代のビジネス)
- 営業利益が30%以上のペースで伸びている or 赤字→黒字
- ビジネスのテーマが、長期のトレンドと合っている(AI、SaaS、宇宙、バイオ…)
- 時価総額や流動性が、まだ個人投資家でも入りやすい規模
これらをすべて満たす銘柄は多くありません。 だからこそ、Pythonでまず「候補選び」の部分を自動化し、 人間はそこから先の「物語を見る作業」に集中する、という役割分担をしていきます。
8-2. 第3話以降でやっていくこと
第3話以降では、
- 今回の成長合格リストの中から、実際にいくつかの銘柄をピックアップし
- チャート・出来高・ニュース・セクターなどを株さん目線で掘り下げていく
- Python側でも、「勢い」や「トレンド」を数値化する実験をしていく
といった内容を予定しています。
今回のPDFと、そこから成長でふるいにかけたExcelは、 このシリーズ全体にとっての“地図兼カタログ”のような位置づけです。
ぜひ、ブックマークしてお手元に置いておいてもらえるとうれしいです。
おわりに ーー 読者へのお願いと次回予告
ここまで読んでいただき、ありがとうございます。
このシリーズは、
- いくさん(個人投資家)
- 株さん(元ゴールドマン日本株アナリスト/AI人格)
- Gさん(この記事を書いている語り手)
の3人で進めている、少し変わった「Python × 日本株」の実験記です。
もし、
- 「2020年以降のIPOをちゃんと見てみたい」
- 「成長株の探し方を、ストーリー付きで学びたい」
- 「PythonやExcelを使って、株の勉強をしてみたい」
と感じていただけたなら、
- このページをブックマークしておく
- 第1話とセットで読み返してみる
- PDFをダウンロードして、自分でも印を付けてみる
といった形で、このシリーズを一緒に育ててもらえるとうれしいです。
次回、第3話では、
- 今回の「成長合格」リストの中から、いくつかの銘柄をピックアップし
- 株さんの視点で「なぜこの銘柄は面白いのか?」を深掘り
- Pythonで“勢い”や“トレンド”をどう数値化していくか
といった内容に踏み込んでいく予定です。
引き続き、「GさんといくさんのPython成長ラボ」をよろしくお願いします。
« 第1話に戻る | 第3話(準備中)
■ カテゴリ / タグ案
カテゴリ:Gさんといくさんのラボ > 株とチャート研究室(または Python実験室)
タグ例:2020年IPO、成長株、Pythonスクリーニング、営業利益、新興株
■ スラッグ案
ipo-2020-python-episode-2
■ メタディスクリプション案(約150文字)
2020年以降に上場した銘柄だけを集めたPDFを起点に、営業利益30%UPと赤字転換を条件にPythonで成長株を抽出。新興株の中から2〜10倍株の種をどう探すのか、株さん視点で徹底解説します。
■ PDF挿入位置
・記事冒頭の「はじめに」内(既に挿入済み)
・中盤(2章)でもう一度リンクを案内済み
■ アイキャッチ(OGP)イメージ指示案
「2020年以降IPO × 成長株 × Python」をイメージしたフラットイラスト。 ・左側にノートPCとPython風のコード画面 ・右側にロウソク足チャートと伸びる矢印 ・手前に Gさん&いくさんのキャラクターが相談している様子 ・青〜緑系の落ち着いたカラー、文字は「2020年IPO × 成長株スクリーニング」程度
■ 内部リンク
・前話リンク:第1話:2020年以降に上場した株だけを全部集めてみた
・次話リンク(予定):https://infotapplus.com/ipo-2020-python-episode-3/(第3話公開後に差し替え)
■ 最終チェック(Gさん向け)
・タイトルとスラッグの整合性確認
・メタディスクリプション設定
・PDFリンクが正しく開くかテスト
・アイキャッチ画像設定(1200×630)
・プレビューで見出し階層とリンク動作を確認してから公開
