「この銘柄とあの銘柄、業種は違うのになぜか同じタイミングで動く気がする」と感じたことはありませんか?投資の世界では、東証が定める「電気機器」や「小売業」といった枠組みだけでは説明できない、隠れた相関関係が常に働いています。
この記事では、AIの手法である「クラスタリング」を使い、主観や固定観念を排除して銘柄をグループ分けする方法を解説します。Pythonを使って、データから導き出される「本当の似た者同士」を見つけることで、あなたの分散投資の精度を一段階引き上げましょう。
クラスタリングとは?業種という枠組みを外して銘柄を見る理由
私たちが普段目にする「業種」という分類は、あくまでその企業が何を作っているか、どんなサービスを提供しているかに基づいています。しかし、投資家の目線で大切なのは、その銘柄が「どのような理由で買われ、どのようなリスクで売られるか」という性質です。
AIのクラスタリング(教師なし学習)を使えば、人間が決めたルールではなく、株価の動きや財務データそのものから似た性質を持つ銘柄をあぶり出せます。まずは、なぜ従来の分類に頼りすぎるのが危険なのか、AIによる分析がどのような新しい視点を与えてくれるのかを整理していきましょう。
業種分類だけでは見えない「市場の裏側」
証券会社が提供する業種別のリストは非常に便利ですが、相場の現実とはズレが生じることがあります。例えば、ハイテク技術を駆使するメーカーと、その技術を利用してサービスを展開するIT企業は、異なる業種に分類されていても、金利の動きに対しては全く同じ反応を見せることが珍しくありません。
このように、業種という壁の向こう側で手を取り合って動く銘柄を見逃すと、本当の意味でのリスク分散ができなくなります。
例えば、分散しているつもりでも、実は「金利上昇に弱い銘柄」ばかりを集めてしまっているかもしれません。
AIを使ってデータを直接分析すれば、こうした「裏側の繋がり」を客観的に可視化できます。
これまで「なんとなく似ている」と感じていた感覚を、数値に基づいた確信に変えることが、データ分析の第一歩です。
教師なし学習が「隠れた共通点」を見つける仕組み
クラスタリングは、AIの中でも「教師なし学習」と呼ばれる分野に属します。これは、人間が「この銘柄はハイテクです」と正解を教えるのではなく、AIがデータの中から勝手にパターンを見つけ出し、仲間分けを行う手法です。
人間には到底処理できないような多次元のデータを同時に比較できるため、私たちが気づかない意外な共通点を見つけ出します。
例えば、売上高の成長率や自己資本比率といった複数の指標を同時に分析することで、業種を超えた「成長のステージ」が似ている企業同士をグループ化できます。
主観が入らないため、思い込みによる投資ミスを減らせるのも大きなメリットです。
データという冷徹な物差しで銘柄を見つめ直すと、これまでノーマークだった優良株が、あなたの保有株と似た性質を持っていることに気づくかもしれません。
分散投資の精度を劇的に高めるメリット
真の分散投資とは、異なる性質を持つ銘柄を組み合わせることで、ポートフォリオ全体の揺れを抑えることです。しかし、業種だけで分散しているつもりだと、相場が冷え込んだときに全ての銘柄が一斉に売られてしまう「共倒れ」が起きることがあります。
AIによるグループ分けを参考にすれば、同じグループに属する銘柄の重複を避け、性質の異なるグループから銘柄を拾い出すことができます。
これにより、特定の経済ショックに対して全ての資産が同時にダメージを受けるリスクを抑えられます。
以下に、従来の業種分類とAIによるクラスタリングの違いをまとめました。
銘柄を分類する際の考え方の比較です。
| 分類方法 | 基準となるもの | 得られるメリット |
| 業種分類 | 事業内容、製品の種類 | 企業の事業ドメインを理解しやすい |
| クラスタリング | 値動き、財務の数値 | 市場での「立ち振る舞い」で選べる |
| 業種分類 | 人間が決めた固定ルール | 変化の激しい市場では遅れることがある |
| クラスタリング | AIによる最新データの解析 | 隠れた相関関係やリスクを特定できる |
非階層型AI「K-means」が銘柄分析に向いている理由
銘柄をグループ分けする手法はいくつかありますが、最も手軽で強力なのが「K-means(K平均法)」と呼ばれる非階層型クラスタリングです。これは、あらかじめ決めた数にデータをバッサリと切り分ける手法で、多くの銘柄を整理する際に非常に役立ちます。
この章では、K-meansがどのような仕組みで銘柄を仕分けていくのか、その基本的な考え方を解説します。なぜ「非階層」であることが投資分析において使いやすいのか、その特徴を知ることで、分析結果をより深く読み解けるようになります。
グループの「中心」を決めて銘柄を引き寄せる仕組み
K-meansの仕組みは、クラス替えのときに「リーダー」を決めるのに似ています。まず、適当な場所にグループの「中心点」を置き、それぞれの銘柄が一番近い中心点のチームに所属します。
次に、所属した銘柄たちの平均的な位置を計算し、グループの中心点をそこへ移動させます。これを何度も繰り返すことで、最終的には似た者同士が中心に集まり、きれいなグループが出来上がるのです。
例えば、リターンが高いグループ、割安なグループといった具合に、自然と特徴ごとに銘柄が分かれていきます。
この「中心点」の動きを追うことで、それぞれのグループがどのような性質を持っているのかを把握できるようになります。
なぜ「非階層型」が大量の銘柄分析に適しているのか?
クラスタリングには、木のような枝分かれを作る「階層型」もありますが、100銘柄を超えるような分析には不向きです。階層型は計算が重く、結果が複雑になりすぎてしまうためです。
一方で、非階層型のK-meansは計算スピードが非常に速く、何千もの銘柄を対象にしても数秒で処理が終わります。
「とにかく今、銘柄を5つのグループに分けて傾向を見たい」という投資実務においては、この手軽さが最大の武器になります。
例えば、全上場銘柄の中から自分のポートフォリオと似た動きをする銘柄を探し出すといった作業も、K-meansならストレスなく行えます。
結論をスピーディーに導き出せるため、日々の銘柄選定に組み込みやすいのが特徴です。
K-meansを使うときに注意すべきポイント
非常に便利なK-meansですが、弱点もあります。それは、最初に「いくつのグループに分けるか」を人間が決めてあげなければならない点です。
この数字の選び方を間違えると、無理やり分けすぎてしまったり、逆に大雑把すぎて特徴が消えてしまったりします。
また、外れ値(極端すぎるデータ)の影響を受けやすいため、事前のデータ整理が重要になります。
例えば、一社だけ異常に高い利益率を出している会社があると、その会社がグループの中心を狂わせてしまうことがあります。
こうした特徴を理解した上で使うことで、AIの出した答えを正しく投資に活かせるようになります。
K-meansを使いこなすための注意点を以下にまとめました。
安定した分析結果を得るためのポイントです。
- 最初に決める「グループ数」の設定が結果を左右する
- 異常な数値を持つ銘柄は、あらかじめ除外しておく
- 計算のたびに結果がわずかに変わることがある
- 単位の違うデータ(円と%など)は、そのまま混ぜない
Pythonで銘柄グループを作るための準備をしよう
理論が分かったところで、実際に手を動かす準備を始めましょう。Pythonを使えば、高度な数学的知識がなくても、ライブラリを呼び出すだけで簡単にAI分析が可能です。
この章では、分析に欠かせない3つの道具(ライブラリ)のインストール方法から、株価データを手軽に取得する手順までを解説します。まずは自分のパソコンに「AI分析の土台」を作るところからスタートしましょう。
scikit-learnとpandasをインストールする
銘柄分析の核となるのが、機械学習ライブラリの scikit-learn です。ここにはK-meansを含む多くのアルゴリズムが詰め込まれています。また、表形式のデータを扱う pandas も必須のツールです。
ターミナルやコマンドプロンプトを開き、以下のコマンドを入力してください。
ライブラリを導入するためのコマンドです。
pip install scikit-learn pandas yfinance matplotlib
これで、あなたのPCは強力な分析マシンに生まれ変わりました。
特に yfinance を入れることで、Yahoo Financeから無料で価格データを取得できるようになります。
yfinanceでデータ取得
分析の材料となる株価データを集めましょう。yfinanceを使えば、銘柄コードと期間を指定するだけで、過去の価格推移を一瞬でダウンロードできます。
まずは直近1年分のデータを取得して、銘柄ごとの騰落率などを計算するのが一般的です。
データの取得から保存まで、わずか数行のコードで完結します。
例えば、トヨタ(7203.T)やソフトバンクG(9984.T)などのデータを一括で取得する際にも、非常にスムーズです。
データ取得を自動化することで、分析のたびに手作業でダウンロードする手間がなくなります。
分析対象とする銘柄リストを作成する
クラスタリングを行うには、比較対象となる銘柄のリストが必要です。自分が保有している銘柄や、気になっている銘柄のコードをリストにまとめておきましょう。
あまりに銘柄数が少なすぎるとグループ化のメリットが薄れるため、まずは20〜30銘柄程度から始めるのがおすすめです。
慣れてきたら、日経平均採用銘柄の225社を一気に分析してみるのも面白いでしょう。
例えば、同じ業種の中から「脱落しそうな銘柄」を見つけるために、あえて同業種だけを集めて分析するといった使い方もできます。
リストの作り方一つで、分析の目的を自由に変えられます。
準備の際に確認すべき項目です。
- Pythonが正しくインストールされているか
- 分析したい銘柄のティッカー(コード)が分かっているか
- ネット環境が安定しているか(データ取得のため)
特徴量を選んで銘柄の「個性」を数値化する
AIが銘柄を分類するためには、その銘柄を特徴づける「数値」を与える必要があります。これを機械学習の言葉で「特徴量」と呼びます。どの数値を選ぶかによって、AIが作るグループの顔ぶれはガラリと変わります。
この章では、投資分析においてどのような指標を特徴量として選ぶべきか、その考え方を解説します。また、AIにデータを読み込ませる前に絶対に行わなければならない「標準化」という工程についても詳しく見ていきましょう。
値動きで分けるか?財務指標で分けるか?
分析の目的に合わせて特徴量を選びましょう。短期的なトレードの相関を見たいなら「日次リターン」や「ボラティリティ」が適しています。一方で、中長期の資産形成が目的なら「PBR」「ROE」「配当利回り」といった財務指標が力を発揮します。
値動きのデータを使えば、「同じ時期に売られやすい仲間」が見えてきます。
財務指標を使えば、「ビジネスモデルの効率が似ている仲間」が見えてきます。
例えば、ROE(自己資本利益率)と自己資本比率を組み合わせれば、企業の「稼ぎ方のスタイル」でグループ分けができます。
自分が何を知りたいのかを明確にして、特徴量を厳選しましょう。
AIに読み込ませる「特徴量」の組み合わせ例
複数の指標を組み合わせることで、より立体的な銘柄の個性をAIに教えられます。ただし、何でもかんでも詰め込めば良いというわけではありません。
意味の近い指標(例えば売上高と営業利益)ばかりを入れると、情報の重みが偏ってしまい、正しく分類できなくなります。
性質の異なる指標を2〜4つ程度選ぶのが、スマートな分析のコツです。
おすすめの特徴量の組み合わせパターンです。
- 値動き重視: 直近のリターン、標準偏差、ベータ値
- 割安・成長重視: PER、PBR、売上高成長率
- 安定・効率重視: ROE、自己資本比率、配当利回り
これらのデータを一つのテーブルにまとめ、AIへのインプットデータを作成します。
標準化(StandardScaler)の重要性
AIにデータを渡す前の「最後の一仕事」が標準化です。AIは、単位が違う数値をそのまま比較するのが苦手です。
例えば、PBRの「1.2」という数字と、売上高の「5000億円」という数字をそのまま比べると、AIは桁数の大きい売上高の動きだけを重視してしまいます。
標準化を行うことで、全ての指標を「平均0、標準偏差1」の同じ土俵に揃えることができます。
確かに少し手間はかかりますが、これを行わないとAIの判断は大きく歪んでしまいます。
Pythonなら StandardScaler という機能を使えば、一瞬で全ての数値を整えられます。
標準化が必要な理由のまとめです。
- 単位(円、%、倍)の影響を排除するため
- 全ての指標を公平な重みで評価させるため
- AIが計算をスムーズに行えるようにするため
- グループの中心点を正しく求めるため
AIに最適なグループ数を決めさせる方法
K-meansを使う際の最大の悩みどころは、「結局、何グループに分ければいいのか?」という点です。人間が適当に決めると、AIの性能を十分に引き出せません。ここで役立つのが、データに基づいて最適な数を見つける「エルボー法」です。
この章では、エルボー法の考え方と、それをPythonでグラフにする方法を解説します。AIが出してくれるヒントを読み解くことで、最も納得感のあるグループ分けを実現しましょう。
「エルボー法」でグラフの曲がり角を見つける
エルボー法とは、グループ数を1つ、2つ、3つ……と増やしていったときに、データの「まとまり具合」がどれだけ改善するかをグラフ化する手法です。
グループ数を増やすほど、データは中心点に近づきますが、ある点を超えると改善のスピードが鈍くなります。
その「カクッ」と曲がった場所が、腕の「肘(エルボー)」に見えることから、この名前がつきました。
例えば、銘柄を無理やり10個に分けるよりも、エルボー法で示された「4つ」で分ける方が、それぞれのグループの個性が際立ちます。
データの声に耳を傾けるための、非常に合理的なプロセスです。
実際にエルボー図を描画するPythonコード
このグラフを描くには、複数のグループ数で繰り返し計算を行い、その結果をプロットします。これもライブラリを使えば数行のループで実装可能です。
目視で肘の形を探す作業は、データサイエンスの醍醐味の一つでもあります。
以下のようなコードで、最適な数を探ってみましょう。
エルボー法を実行して可視化するコードです。
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 1〜10までのグループ数で誤差を計算
distortions = []
for i in range(1, 11):
km = KMeans(n_clusters=i, random_state=42)
km.fit(scaled_data) # 標準化済みのデータ
distortions.append(km.inertia_)
# グラフを表示
plt.plot(range(1, 11), distortions, marker='o')
plt.xlabel('Number of clusters')
plt.ylabel('Distortion')
plt.show()
このグラフを見て、最も急激に下がっている後の「曲がり角」を次のステップのグループ数に設定します。
グループ数の過不足
もしグループ数を少なくしすぎると、全く性質の違う銘柄が同じ箱に入れられてしまい、分析の価値がなくなります。逆に多すぎると、一社一グループのような状態になり、それはもはや分類とは呼べません。
エルボー法はあくまで目安ですが、まずはそこで示された数から始めて、結果を見て微調整するのがベストです。
最終的には、自分がそのグループ分けを見て「なるほど、このグループは〇〇という特徴があるな」と説明できるかどうかが大切です。
例えば、日経平均採用銘柄なら5〜8グループ程度に分けると、非常に解釈しやすい結果が出ることが多いです。
AIの計算結果と人間の感覚をうまく融合させていきましょう。
グループ数を決める際のヒントです。
- 肘の形がはっきりしないときは、少し多めのグループ数を試す
- 自分が管理できる銘柄数に合わせて、あえてグループ数を絞るのもあり
- 銘柄の顔ぶれがガラリと変わるポイントを探す
実際に銘柄をクラスタリングして結果を確認する
いよいよ本番です。決まったグループ数をAIに伝えて、銘柄を仕分けてもらいましょう。ここまでの準備ができていれば、AIの実行自体は一瞬で終わります。
この章では、K-meansを実行する具体的なコードと、出力された結果をどのように確認するかを解説します。AIがどのような「判断」を下したのか、その中身を覗いてみましょう。
KMeansクラスを呼び出して学習させるコード
ここまで準備してきた標準化済みのデータを、KMeansのエンジンに投入します。ランダム性を固定するために random_state を設定しておくと、何度実行しても同じ結果が得られるようになります。
実行コードは驚くほどシンプルです。
銘柄をグループ分けする実行コードです。
# グループ数を4に設定して実行
n_clusters = 4
km = KMeans(n_clusters=n_clusters, random_state=42)
# 学習と予測を一気に行う
cluster_labels = km.fit_predict(scaled_data)
# 元のデータフレームに結果を結合
df['Cluster'] = cluster_labels
これだけで、各銘柄の横に「0」「1」「2」といったグループ番号が付与されます。
これで、AIによる銘柄の仕分けが完了しました。
各銘柄がどのグループに属したかを確認する
結果が出たら、まずはグループごとに銘柄を並べて表示してみましょう。
「同じ業種の銘柄がバラバラになっているか?」「意外な組み合わせはないか?」と眺めるだけでも発見があります。
特定のグループにばかり自分の保有株が固まっていないか、チェックするだけでもリスク管理になります。
例えば、グループ0には金融株が集まり、グループ1にはITと精密機器が混ざっている、といった結果が出てくるはずです。
番号そのものに意味はありませんが、中身を見ることでAIが何に注目したのかが見えてきます。
グループごとの特徴を平均値で比較する方法
それぞれのグループが「どのような性質」を持っているのかを正しく理解するには、グループごとの指標の平均値を算出するのが一番です。
「グループ0はPBRが低くて配当が高い」「グループ1はROEが非常に高い」といった個性が浮き彫りになります。
これにより、数字のラベルに「高配当割安グループ」といった名前を自分でつけることができます。
例えば、平均値の表を作ることで、AIが作った箱の正体がはっきりと分かります。
単なる番号ではなく、その中身を言語化することが、分析を投資に活かすための鍵です。
グループの特徴を把握するための手順です。
- グループごとにデータを集計する(groupbyを使う)
- 特徴量の平均値や中央値を計算する
- 他のグループと比較して、そのグループの強み・弱みを見つける
- グループに分かりやすい名前を付ける
業種を超えた「似た者同士」の正体を読み解く
AIが導き出したグループ分けを見てみると、人間の常識では考えられない組み合わせに驚くことがあるかもしれません。しかし、その「違和感」こそが、新しい投資のチャンスを教えてくれています。
この章では、業種が違うのになぜか同じグループにされた銘柄たちの「正体」をどう探ればいいのか、その読み解き方を解説します。AIの目を通じて、市場の新しい繋がりを発見していきましょう。
なぜ業種が違うのに同じグループになったのか?
業種が違っても、ビジネスの構造が似ていたり、同じ外部要因で株価が動いていたりすると、AIはそれらを「仲間」だと判断します。
例えば、高級ブランド品を扱う小売業と、高価な工作機械を作るメーカーは、どちらも「景気が良いときに買われ、悪いときに真っ先に削られる」という性質を共有しています。
AIはこれを価格データや財務指標から読み取り、一つのグループにまとめるのです。
このように、業種の枠を超えて同じ経済循環の中にいる銘柄を特定できると、相場の先読みがしやすくなります。
「あの業界が上がっているなら、同じグループのこの銘柄も次に来るかもしれない」という発想が生まれます。
「異端児」からのヒント
特定の業種の中に一社だけ別のグループに分類された銘柄があれば、それはその企業が業界内で「特別な存在」であることを示唆しています。
例えば、他の銀行株が「割安グループ」にいる中で、一社だけが「成長グループ」に分類されているなら、その銀行は他とは違う収益構造を持っている可能性があります。
この異端児を探し出すことは、競争力の高い銘柄を見つける近道になります。
なぜ一社だけが違う評価を受けているのか、その理由を調べることで、独自の投資判断ができるようになります。
AIは、私たちが当たり前だと思っている「業界の常識」に揺さぶりをかけてくれるのです。
以下に、AIが見つける可能性のある「意外なペア」の例をまとめました。
業種を超えた相関のイメージ例です。
| グループの性質 | 業種Aの銘柄例 | 業種Bの銘柄例 | 理由の推測 |
| 高利回り・低成長 | 通信(安定インフラ) | ユーティリティ(電力・ガス) | ディフェンシブな資金の逃避先 |
| 海外需要・円安恩恵 | 自動車メーカー | 精密機器(カメラ等) | 輸出比率が高く、為替で動く |
| 金利敏感 | 地方銀行 | 大手デベロッパー | 金利の見通しに業績が左右される |
相場環境による変化
クラスタリングの結果は固定ではありません。半年、1年と時間が経つにつれて、グループの顔ぶれは変わっていきます。
企業の業績が向上して成長ステージが変わったり、市場全体の注目テーマが移動したりすることで、銘柄の性質が変化するためです。
定期的に分析をやり直すことで、「この銘柄は最近、別の仲間の動きをするようになったな」と変化にいち早く気づけます。
例えば、これまで内需株として動いていた銘柄が、海外展開の成功により外需株グループに移るような瞬間を捉えることができます。
変化を追うことは、投資のリスク管理において非常に重要です。
分析結果をポートフォリオの分散に活かすコツ
せっかくAIで銘柄を仕分けたのですから、それを実際の投資に役立てましょう。クラスタリングの結果をポートフォリオ作りに反映させることで、真の意味で「リスクの分散された」強いポートフォリオを作ることができます。
この章では、AIのグループ分けを元に、どのように銘柄を選び直し、どのようにバランスを整えていけばいいのか、その具体的な戦略を提案します。
同じグループの銘柄ばかり買うリスクを避ける
もし、あなたの持っている銘柄をAIで分析して、そのほとんどが「グループ1」に属していたら、それは非常に危険な状態かもしれません。業種がバラバラでも、性質が同じであれば、不調の波が来たときに全ての銘柄が一斉に値下がりしてしまいます。
自分のポートフォリオが特定のグループに偏っていないか、定期的にチェックする癖をつけましょう。
偏りに気づいたら、あえて今の保有株とは別のグループから新しい投資先を探すことが、本当の分散に繋がります。
例えば、攻めの銘柄ばかりのグループに偏っているなら、守りに強いグループの銘柄を一つ加えるだけで、ポートフォリオの安定感はぐっと増します。
AIの目を使うことで、「分散しているつもり」という思い込みから脱却できます。
異なる性質を持つグループを組み合わせて安定させる
理想的なポートフォリオは、異なる動きをする複数のグループをパズルのように組み合わせたものです。
「景気が良いときに伸びるグループ」「景気が悪くても底堅いグループ」「金利変動に強いグループ」など、役割の違う銘柄をバランスよく配置しましょう。
AIによる分析結果があれば、それぞれの銘柄にどのような「役割」を期待できるのかが明確になります。
例えば、全体の半分を安定グループに、残りの半分を成長グループに割り振るなど、戦略的な配分が可能になります。
数字に基づいた配分は、感情的な売買を防ぐ助けにもなります。
ポートフォリオに異なるグループを混ぜる際のポイントです。
- 各グループから代表的な銘柄を1〜2つ選ぶ
- 自分が最も重視するグループの比率を厚めにする
- グループ間の相関係数が低い(似ていない)組み合わせを探す
- 全てのグループを網羅する必要はなく、自分の戦略に合うものを選ぶ
定期的にクラスタリングをやり直す重要性
一度作ったポートフォリオも、銘柄の性質変化によってバランスが崩れていくことがあります。3ヶ月に一度、あるいは決算発表が終わるごとに、クラスタリングをやり直すことをお勧めします。
常に最新のデータで「今の似た者同士」を確認しておくことで、リスクの芽を早めに摘み取ることができます。
AI分析を日常のルーチンに組み込むことが、長期的な成功への近道です。
例えば、これまで分散に貢献していた銘柄が、いつの間にか主力株と同じグループに移動していたら、それは入れ替えのサインかもしれません。
鮮度の高いデータで市場を見続けることが、エンジニア投資家としての強みになります。
まとめ:AIで投資の視野を広げる
この記事では、Pythonのクラスタリング(K-means)を使い、業種の枠を超えた銘柄グループを見つける方法を解説しました。
- クラスタリングは、データから隠れた銘柄の共通点をあぶり出すAI手法
- 業種分類だけでは捉えきれない、市場の「本当の相関」を可視化できる
- 特徴量の選定と「標準化」が、分析の精度を決める重要な鍵になる
- エルボー法を使えば、最適なグループ数を客観的に判断できる
- 異なる性質を持つグループを組み合わせることで、真の分散投資が実現する
従来の固定観念を捨て、データという客観的な事実に基づいて銘柄を見つめ直すと、これまで見えてこなかった市場の繋がりが見えてきます。AIはあなたの代わりに計算してくれますが、その結果をどう解釈し、どう戦略に活かすかは、あなた次第です。
まずは身近な10銘柄程度から、Pythonでクラスタリングを試してみませんか?
きっと、これまでの投資では気づかなかった「意外な発見」が待っているはずです。

