「2銘柄を持っているから分散できている」と思っていても、同じ日に同じ方向へ動くなら、実質的には一つの値動きを二重に持っているかもしれません。反対に、普段は別々に動く資産でも、相場急変時だけ連動が強まることがあります。この値動きの連動度を−1から+1で要約する代表的な指標が、相関係数です。
投資でよく使うのはPearson(ピアソン)の相関係数です。ただし、株価水準をそのまま比べる、期間や営業日をそろえない、外れ値を放置する、といった計算では見かけの相関が生まれます。「相関0.9だから同じ」「相関0だから無関係」「負の相関だから必ず守ってくれる」と断定するのも危険です。
この記事では、価格ではなくリターンを使う理由、Pearsonの式と10日間の架空例、期間の選び方、ローリング相関、外れ値と欠損、ポートフォリオの分散効果、売買注文・撤退・数量・見送りまで順に整理します。
先に結論:相関係数は、同じ期間・同じ頻度でそろえた2系列の「線形な連動」を測ります。投資では原則として調整方法をそろえたリターンを使い、一点の数値ではなく期間別・ローリングで変化を確認します。相関は入口シグナルではなく、重複リスクを見つける環境・数量フィルターとして使うのが基本です。
相関係数とは?+1・0・−1が表すもの
Pearsonの相関係数は、2つのデータがどの程度直線的に一緒に動くかを測ります。NumPyの公式文書は、相関行列Rと共分散行列Cの関係を Rij=Cij÷√(CiiCjj) と示し、値は−1から+1の範囲だと説明しています。出典:NumPy「numpy.corrcoef」
- +1:一方が増えると、もう一方も完全な直線関係で増える
- 0:線形な関係を確認できない
- −1:一方が増えると、もう一方が完全な直線関係で減る
0は「何の関係もない」という意味ではありません。U字型のような非線形関係、時間差のある関係、上昇局面だけの関係は、Pearson相関が0付近でも存在し得ます。また+0.8と+0.4のどちらが強いかは比較できますが、+0.8だから片方がもう片方の80%を説明する、とそのまま読み替えることはできません。
| 相関の値 | 線形な動き | 投資での候補解釈 | 断定できないこと |
|---|---|---|---|
| +1に近い | 同方向が多い | 重複エクスポージャー | 因果・将来の維持 |
| 0付近 | 線形関係が弱い | 分散候補 | 独立・安全 |
| −1に近い | 逆方向が多い | 変動相殺の候補 | 損失の完全回避 |
| 期間で変動 | 局面依存 | ローリング確認が必要 | 単一の固定関係 |
株価ではなくリターンを比べる理由
投資の相関では、通常は株価そのものではなく、日次・週次など同じ期間のリターンを比べます。単純リターンは次の式です。
単純リターン rt = Pt ÷ Pt−1 − 1
たとえばA株が1,000円から1,020円なら+2%、B株が5,000円から5,100円でも+2%です。価格水準は5倍違っても、その期間の変化率は同じです。価格水準のまま計算すると、互いに無関係でも長期的な上昇トレンドを持つ2系列が高い相関を示すことがあります。1926年にG. Udny Yuleが時系列の「nonsense correlations」を論じた問題で、トレンド系列を無批判に相関計算しない理由の一つです。
対数リターン ln(Pt÷Pt−1) を使う方法もあります。短い期間の小さな変動では単純リターンとの差は小さくなりますが、両系列で方式を統一します。単純リターンと対数リターンを片方ずつ混ぜないでください。

| そろえる条件 | 例 | そろえない場合の問題 |
|---|---|---|
| 価格調整 | 両方とも分割・配当込み、または除く | 企業行動を値動きと誤認 |
| 観測頻度 | 日次同士、週次同士 | 違う時間軸を比較 |
| 営業日 | 共通日付へ整列 | 別日の変動を対応させる |
| 通貨 | 円建て同士、現地通貨同士 | 為替効果が片方だけ混入 |
| 時刻 | 同じ市場時刻、またはラグ検証 | 非同期取引で相関を過小評価 |
| 欠損 | 除外・補完規則を固定 | 都合のよい観測だけ残る |
Pearson相関係数の計算式
SciPyの公式文書は、標本相関係数を次の式で示しています。xとyは同じ時点に並べたリターン、x̄とȳは各系列の平均です。出典:SciPy「pearsonr」
r = Σ(xi−x̄)(yi−ȳ) ÷ √{Σ(xi−x̄)² × Σ(yi−ȳ)²}
分子は2系列が平均から同じ方向へ離れた度合い、分母はそれぞれのばらつきを掛け合わせた尺度です。標準化するため、円とドル、変動率の大小が違う系列でも−1から+1へ収まります。どちらかが期間中ずっと同じ値なら分散が0となり、相関係数は定義できません。SciPyも定数入力では相関が未定義となり、NaNを返すと注意しています。
架空例:10日間の相関は+0.94
説明用の架空例として、AとBの10日間の日次リターンを並べます。Aは[+1.2、−0.6、+0.9、+1.8、−1.1、+0.4、+1.5、−0.8、+0.6、+1.0]%、Bは[+0.9、−0.2、+0.4、+2.0、−1.4、+0.1、+1.2、−0.5、+0.2、+1.3]%です。
Aの平均は+0.49%、Bの平均は+0.40%です。分子の偏差積和は0.00084、分母は約0.0008933なので、相関係数は約+0.940です。10日の大半で同じ方向に動くため、散布図は右上がりに近づきます。10日の例では強い連動が見えますが、いつでも同じとは言えません。期間を変えても残る関係なのか、相場が荒れたときはどうかを追いたいです。

観測数10は仕組みを示すには便利ですが、実務判断には短すぎることがあります。SciPyは非常に小さい標本では信頼区間がNaNになる場合があると説明しています。相関係数だけでなく観測数、信頼区間、散布図、外れ値を確認してください。「0.94」という小数だけを精密な事実として扱わないことが大切です。
期間を変えると相関は変わる
20日相関は約1か月の短期連動、60日相関は約3か月、250日相関は約1年の関係を要約します。短い窓は変化へ早く反応する代わりに外れ値1日で大きく動き、長い窓は安定する代わりに最近の構造変化を薄めます。唯一の正解期間はありません。保有予定期間やリバランス周期と整合させ、複数期間を並べます。
ローリング相関は、たとえば直近20日の相関を1日ずつずらして計算します。窓が進むたびに最も古い観測が外れ、新しい観測が入ります。Pandasのローリング計算もこの考え方で窓内統計を更新します。一点の「過去1年相関0.3」では隠れる、直近の+0.8化やマイナス化を見つけるために使います。

| 計算窓 | 長所 | 弱点 | 主な用途 |
|---|---|---|---|
| 20営業日 | 変化へ早く反応 | 外れ値・小標本の影響大 | 短期の重複確認 |
| 60営業日 | 短期と安定の中間 | 急変の反映に遅れ | スイング・四半期 |
| 120営業日 | 半年程度を要約 | 古い局面を含む | 中期配分 |
| 250営業日 | 年単位の比較 | 最近の構造変化を薄める | 長期ポートフォリオ |
| 複数窓 | 期間依存を可視化 | 後付け選択の余地 | 事前ルールで併記 |
外れ値・欠損・非同期取引で結果が変わる
Pearson相関は外れ値の影響を受けます。通常は弱い関係でも、同日に両銘柄が大きく動いた1点だけで相関が上がることがあります。反対に、片方だけ決算で急変すれば下がります。外れ値を機械的に消すのではなく、データ誤りか実際のイベントかを確認し、「含む」「事前に決めた方法でwinsorizeする」など両方を比較します。
休場や売買停止で片方の価格が更新されていない日に、前日値を埋めて0%リターンとすると相関をゆがめます。海外資産と日本株は市場の閉場時刻も違います。米国株の当日リターンと、すでに閉場している日本株の同一カレンダー日を対応させるより、実際に情報が反映可能な1営業日ラグも検証します。
順位だけの単調な関係を見たい、外れ値への感度を少し下げたい場合はSpearman順位相関も候補です。SciPyはPearsonと並べてSpearmanとKendallを案内しています。ただし指標を後から都合よく選ばず、計算前に目的と方法を定めます。
| 指標 | 測る関係 | 長所 | 注意 |
|---|---|---|---|
| Pearson相関 | 線形 | 共分散・分散と直結 | 外れ値と非線形に注意 |
| Spearman相関 | 順位の単調関係 | 順位で比較しやすい | 値幅情報を失う |
| 共分散 | 同方向の偏差 | ポートフォリオ分散へ直結 | 尺度に依存 |
| β | 市場変動への感応度 | 基準指数との傾き | 対称な関係ではない |
| RSライン | 価格比率の推移 | 指数より強いかを可視化 | 相関とは別概念 |
RSラインは「市場と同じ方向か」ではなく、銘柄価格を指数で割った比率が上がるかを見る道具です。詳しくは相対強度・RSラインの解説を参照してください。市場と高い正相関でも、市場より上昇率が高ければRSラインは上がります。
分散投資では相関をどう使う?
SECのInvestor.govは、異なる市場条件で異なる動きをする資産カテゴリーを組み合わせることが、大きな損失の緩和やリターンの変動を滑らかにする考え方だと説明しています。ただし分散は損失をなくす保証ではありません。出典:Investor.gov「Beginners’ Guide to Asset Allocation, Diversification, and Rebalancing」
2資産のポートフォリオ分散は、各資産のボラティリティだけでなく相関ρで変わります。
σp² = wA²σA² + wB²σB² + 2wAwBρABσAσB
架空例として、AとBを50%ずつ、各ボラティリティを20%とします。相関+0.8ならポートフォリオのボラティリティは約18.97%、相関0なら約14.14%、相関−0.5なら10.00%です。個々の変動率と比率が同じでも、連動度で合成後の変動が変わります。
ただし、過去の負相関が危機時にも続くとは限りません。相関行列を四半期や年次で再計算し、直近窓とのずれ、最大ドローダウン期だけの相関、通貨ヘッジ有無を確認します。相関が急に高まったら、同じテーマ・業種・指数への実質的な集中がないか調べます。
| 相関 | 等ウェイト架空例のσ | 意味 | 注意 |
|---|---|---|---|
| +0.8 | 約18.97% | 分散効果は小さめ | 完全一致ではない |
| 0 | 約14.14% | 変動の相殺が期待 | 独立を保証しない |
| −0.5 | 10.00% | 相殺がより大きい | 将来も続くとは限らない |
| +1 | 20.00% | この条件では相殺なし | 比率・σが違えば再計算 |
高相関ならペアトレードできる?相関と共和分は別
2銘柄のリターン相関が高くても、価格差や価格比が一定範囲へ戻るとは限りません。A株が毎日B株の2倍の値幅で同方向へ動けば相関は高くても、単純な価格差は広がり続けます。ペアトレードで必要なのは、ヘッジ比率を定めたスプレッドが平均回帰するか、構造変化で関係が壊れていないかという検証です。
したがって「相関0.9以上で片方を買い、片方を売る」という条件だけでは不十分です。銘柄選択期間と評価期間を分け、スプレッドの定義、エントリー閾値、最大保有日数、決算・TOB・指数入替、借株費用、配当、売買コストを含めます。検証手順はテクニカル手法のバックテスト入門とウォークフォワード検証の解説も参照してください。
相関行列で3銘柄以上の重なりを探す
保有候補が3つ以上なら、すべての組み合わせを相関行列にします。対角線は自分自身なので1、上下は同じ組み合わせなので対称です。たとえばA―Bが+0.90、A―Cが+0.15、B―Cが+0.10なら、AとBを別枠の分散先と数えず、同じクラスターとして合算リスクを管理します。Cは別の値動きの候補ですが、低相関だけで安全資産と決めません。
銘柄数が増えるほど、偶然に高い組み合わせも見つかりやすくなります。100銘柄なら組み合わせは4,950通りです。最も高い相関だけを後から選べば、偶然の極端値を拾います。業種や投資仮説で候補群を事前に限定し、別期間で再確認してください。
行列の色だけを見ると数値差を誇張しやすいため、凡例の範囲、観測期間、欠損処理、最小観測数を併記します。相関行列が正しくても、同じ企業の普通株とADR、同じ指数に連動するETFなど、経済的に重複する理由は別途確認します。
注文・撤退・数量:相関は「重複リスク」の補助線
相関係数だけで買い・売りを発注せず、価格側に入口と無効化条件を置きます。架空の順張り例なら、銘柄Aが20日高値を終値で上抜き、翌営業日の指値で入る計画を立てます。同時保有候補Bとの60日相関が+0.85、20日相関が+0.92なら、別銘柄でも同じリスクを重ねる可能性が高いため、どちらか一方に絞るか合算リスクを下げます。
通常の数量は、入口と損切りの距離から逆算します。予定入口3,000円、無効化2,920円、想定スリッページ10円なら1株当たり予定リスクは90円です。許容損失18,000円、見積費用0円なら200株です。しかし既存ポジションと高相関なら、相関クラスター全体の損失予算を18,000円として、2銘柄へ各100株に分けるなど上限を設けます。
数量 = floor{(許容損失 − 見積費用)÷(入口と無効化価格の差 + 想定スリッページ)}
相関の急変は数量見直しの警報にはなりますが、相関低下だけで即損切りにしません。価格の支持線割れ、ボラティリティ上限、決算前、最大保有日数など、実際に発注できる撤退条件を先に決めます。数量計算の詳細はポジションサイズの決め方で整理しています。
| 段階 | 確認するもの | 架空ルール | 見送り条件 |
|---|---|---|---|
| データ | 同じ頻度・調整・通貨 | 円建て日次リターン | 仕様不明・欠損過多 |
| 相関 | 20・60・250日 | 短期急上昇を警戒 | 観測数が少なすぎる |
| 価格 | 入口・無効化 | 20日高値突破・支持割れ | 相関だけで発動 |
| 数量 | 個別とクラスター損失 | 高相関なら合算上限 | 最低単位で超過 |
| 期限 | 最大保有・再計算日 | 20日、週次更新 | 後付けで延長 |
バックテストで固定する項目
相関を売買ルールへ組み込むなら、窓と閾値を評価後に変えないことが重要です。「利益の出た取引では60日相関、損失取引では20日相関」のような後付けはできません。銘柄選択に使った期間と、成績を評価する期間を分けます。
- リターン方式:単純/対数、配当・分割、通貨
- 観測頻度:日次/週次、終値時刻、ラグ
- 窓:20・60・250日など、最小観測数
- 欠損・売買停止・上場直後・外れ値の処理
- Pearson/Spearmanを選ぶ基準
- 相関閾値、再計算頻度、ポジション上限
- シグナル確定後に発注可能な最初の時刻
- 手数料、スプレッド、スリッページ、税・借株費用
終値で計算した当日の相関を使い、同日の安値で約定したことにすると未来データになります。相関が終値確定後に利用できるなら、発注は早くても次の取引機会です。急変日は翌日始値が大きく離れるため、ギャップを含めて評価します。
相関係数を使わない・見送る条件
相関は便利な要約値ですが、入力が悪ければ精密そうな誤答になります。次の場合は相関による判断を見送ります。
- 片方が定数または値動きが極端に少なく、相関が未定義・不安定
- 観測数が少なく、外れ値1点で符号が変わる
- 決算、TOB、指数入替など一回限りのイベントが支配
- 取引時刻がずれ、適切なラグを決められない
- 価格調整、通貨、配当込み/なしが不明
- 流動性が乏しく、古い約定値が連続する
- 候補を見てから最も高い期間だけ選んだ
- 高相関を因果、低相関を安全、負相関を保証と読み替える
実践チェックリスト
- 何を比べたいかを決める:銘柄同士、指数、業種、資産クラス。
- 価格ではなく同じ頻度のリターンへ変換する。
- 企業行動、配当、通貨、日付、時刻、欠損をそろえる。
- 散布図と外れ値を見てからPearson相関を計算する。
- 20・60・250日など事前に決めた複数窓を並べる。
- ローリング相関で局面変化と危機時の連動を確認する。
- 相関を入口ではなく、重複リスクと数量の補助線にする。
- 価格の発動・無効化、費用、最大保有日数を別に定める。
- 学習期間と評価期間を分け、次の取引機会から約定させる。
- 再現できないデータや不安定な小標本なら見送る。
まとめ:相関は固定ラベルではなく、期間つきの関係
相関係数は、2系列の線形な連動を−1から+1へ圧縮した値です。銘柄名や価格水準ではなく、条件をそろえたリターンで計算します。+1に近いほど同方向、−1に近いほど逆方向ですが、因果関係、将来の維持、損失回避を保証しません。別の会社を買ったという実感と、値動きの負担が分かれたことは違いました。相関の低い数字を安心の証明にせず、保有全体が同じ材料に寄っていないかを考える入口として持っておきます。
実務では、散布図、外れ値、観測数、複数期間、ローリング相関を一緒に見ます。ポートフォリオでは分散効果と重複リスクの確認に使い、売買では価格の入口・無効化と損失予算を別に決めます。「相関はいくつか」だけでなく、「どのデータを、いつからいつまで、どの条件で比べた相関か」を残すことが、再現できる判断への近道です。
本記事は相関係数の計算と利用方法を解説するもので、特定銘柄・資産の売買を推奨するものではありません。架空例は説明用であり、将来の値動きや成績を示しません。投資判断はご自身の責任でお願いいたします。記載の数値は、本文中に示した日付時点の決算短信・会社のIR資料などの公開情報に基づきます。最新の情報は各社の開示でご確認ください。

