はじめに
2025年は多数の注目IPOが続々とデビューしています。初値ブレイクによる短期リターン狙いだけでなく、セカンダリー市場で真のチャンス銘柄を見極めるためには、上場初取引日を“0日目”、初値を“100”に規格化した比較チャートが強力なツールになります。本記事ではPythonとyfinance、Matplotlibを使い、複数IPOの株価推移を一枚のグラフで比較する手法を詳解。さらにチャート活用アイデアや投資戦略への組み込み方もご紹介します。
この記事のポイント
- Python+yfinanceでデータ取得から可視化まで自動化(2025年IPO銘柄を“Days=0, Index=100”に規格化して比較)
- 週末や祝日を含む補間プロット手法
- 折線上に銘柄コードを重畳して即時識別
- チャートから読み取れるセカンダリー&初値ブレイク戦略
準備:必要なライブラリのインストール
pip install yfinance pandas matplotlib
① スクリプト全文
import yfinance as yf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from datetime import datetime
# 2025年IPO銘柄リスト(上場日を適宜設定)
ipo_list = {
'352A.T': '2025-04-24',
'350A.T': '2025-04-22',
'343A.T': '2025-04-07',
'340A.T': '2025-03-31',
'341A.T': '2025-03-28',
'339A.T': '2025-03-28',
'336A.T': '2025-03-27',
'338A.T': '2025-03-27',
'334A.T': '2025-03-25',
'335A.T': '2025-03-24',
'332A.T': '2025-03-21',
'5016.T': '2025-03-19',
'331A.T': '2025-03-19',
'330A.T': '2025-03-18',
'325A.T': '2025-02-28',
'324A.T': '2025-02-21',
'323A.T': '2025-02-20',
'319A.T': '2025-02-05',
}
plt.figure(figsize=(12, 6))
cmap = plt.get_cmap('tab20')
for i, (ticker, ipo_date) in enumerate(ipo_list.items()):
# 株価データ取得
df = yf.download(
ticker,
start=ipo_date,
end=datetime.today().strftime('%Y-%m-%d'),
progress=False
)[['Close']].reset_index()
# 上場日基準の日数算出
df['Days'] = (df['Date'] - pd.to_datetime(ipo_date)).dt.days
offset = df['Days'].iloc[0]
df['Days'] -= offset # 最初の取引日を0日目に補正
# 100ベースに規格化
initial = df['Close'].iloc[0]
df['Index'] = df['Close'] / initial * 100
# 連続日数軸の補間
series = df.set_index('Days')['Index']
idx = np.arange(0, series.index.max() + 1)
filled = series.reindex(idx).ffill()
# プロットとラベル重畳
color = cmap(i % 20)
plt.plot(idx, filled, color=color, linewidth=1.5)
plt.text(
idx[-1],
filled.iloc[-1],
f' {ticker}',
color=color,
va='center',
fontsize=8
)
plt.xlabel('Days since IPO (first trading day = 0)')
plt.ylabel('Price Index (IPO = 100)')
plt.title('Comparison of IPO Stock Price Performance (Normalized at IPO = 100)')
plt.grid(True, linestyle='--', alpha=0.5)
plt.tight_layout()
plt.show()
実行結果 ※2025年4月29日時点

② コード解説
1. データ取得(yfinance)
yf.download() を使い、上場日から本日までの終値データを取得。ティッカーと日付を文字列で渡すだけなのでシンプルです。
2. “0日目”補正
上場日が祝日や週末の場合、最初の取引日は上場日から1~2日ずれることがあります。offset = df['Days'].iloc[0] で最初の取引日までのズレを吸収し、df['Days'] -= offset によって“最初に取得できた日”を0日目にリセットします。
3. 規格化(Normalization)
初回の終値を initial に格納し、各日の終値を initial で割って100倍。これにより銘柄間の価格スケールの違いを吸収し、パフォーマンスの比較が可能になります。
4. 連続日数軸の補間プロット
series.reindex(idx).ffill() により“Days=0~最終日”のすべての日数に対して前営業日の値を埋め、週末や祝日を含む連続軸で折線を描画します。
5. 折線上へのラベル重畳
各折線の末尾に plt.text() を用いてティッカーを描画。凡例なしでもどの線がどの銘柄か直感的に把握できます。
6. カラーマップの使い分け
plt.get_cmap('tab20') から順次色を取得することで、最大20銘柄までぶつからない色分けが可能です。
③ チャート活用アイデア
- セカンダリー銘柄発掘:上場直後に急騰せず、一定期間後にゆるやかに上昇する銘柄は中長期セカンダリーで狙い目。株価が初値近辺で揉み合う銘柄を抽出できます。
- 初値ブレイク戦略:規格化指数が短期間で大きく上昇している銘柄は初値後のモメンタムが強い証拠。公募価格比+○○%ブレイクをシグナルにしても良いでしょう。
- 相対強弱分析:同業他社IPOと比較した相対パフォーマンス分析が可能。他銘柄よりも優れた指数推移をしている銘柄が割高・割安を判断するヒントに。
- イベント投資との組み合わせ:決算発表やニュースがあった日からの回復度を可視化し、イベント直後に仕込む戦略を最適化できます。
④ 応用・カスタマイズ例
- 色数を減らす場合:
plt.get_cmap('tab10')を指定。 - マーカー追加:
plt.plot(..., marker='o', markevery=5)で5日おきにポイントを強調。 - チャートの縦軸を対数スケールに:
plt.yscale('log')で高ボラティリティ銘柄の動きを見やすく。 - スクリーニング自動化:上昇率○○%超の銘柄をリストアップしてアラート送信するBot連携。
まとめ
本記事では、Pythonとyfinanceを用いて2025年IPO銘柄のパフォーマンスを一目で比較する方法を解説しました。初値ブレイク狙いから中長期セカンダリー銘柄発掘まで、多彩な投資戦略に応用可能です。ぜひご自身の投資判断に役立ててみてください。
Pythonを学ぶなら「Udemy」で効率的に
独学でPythonを学ぶ場合、公式リファレンスだけでは挫折しがちです。
そんな時に心強いのが、動画で体系的に学べるUdemyの講座。
- Python初心者向け講座から、投資データ分析に特化した実践講座まで多数
- 買い切り型で、一度買えばいつでも復習可能
- セール時は90%オフなど、非常にお得
投資家にとっての“自己投資”として、Udemyは非常にコスパの高い選択肢です。
【裏ワザ】Udemyの講座は“ある方法”でさらにお得に買える
実は、Udemyの講座はポイントサイトを経由することで、さらにお得に購入できることをご存知ですか?
おすすめは「ハピタス」というポイントサイト。
ハピタスを経由してUdemyで講座を購入すると、購入金額の数15%がポイントとして還元されます(2025年4月調査時点)。
手順は3ステップ
- ハピタスに無料登録
- 「Udemy」と検索して表示されたリンクをクリック
- 講座を通常通り購入するだけ

講座はPythonの基本から株価分析、AI株価予測まで、いろいろそろっています。

学びながらポイントも貯まり、一石二鳥です。

