InvestmentTechHack

投資の相関まとめ 27銘柄・20年間の相関係数をヒートマップで確認

Posted on December 27th, 2016Updated on February 16th, 2021

どんな記事

相関係数は、投資において以下のような意味があります。

  • 「なんとなく似た動きをしてる」を、数値で明確に表す
  • リスクの度合いを数値で判断することができる

この記事では、2001年から2020年における27銘柄の相関係数の推移を、ヒートマップで確認することができます。

また、インタラクティブに操作できるグラフもGoogle Colaboratoryで用意していますので、必要に応じて活用してください。

相関係数とは

投資において「相関がある」は、「似た動きをする」とよく表現されます。

Correlation examples

引用元: 相関係数 - Wikipedia

Aが上昇するとBも上昇するような関係にあると、相関係数は「1」になります。逆に、Aが上昇するとBは下落するという関係では、相関係数は「-1」です。

例えば、株と金は「逆の動きをする傾向が強い」とよく言われます。株と金は逆相関です。

これは筆者も正しいと思います。

ただ、常にそうではありません。

金融危機のときには、あらゆる投資家が手持ちの投資商品を決済します。つまり、株の値段が下がり、金の値段も下がります。これは逆の値動きではありません。

  • 株を10買ってる
  • 金を10買ってる
  • 株と金は逆相関だからリスクは±0

この状態で金融危機が起こると、リスクは一気に20になってしまいます。あくまでもイメージですが、似たことはよく起きていると思います。

相関係数は、

  • 「なんとなく似た動きしてる」を、数値で明確に表す
  • リスクの度合いを数値で判断することができる

こんな感じでしょうか。

「相関係数は投資に絶対必要」というものではありませんが、理解しておくとリスク対応の幅が広がると思います。

相関関係と因果関係

今回の「相関係数の推移」というテーマからは少しズレますが重要です。

相関関係があるだけでは因果関係があるとは断定できず、因果関係の前提に過ぎない。

引用元: 相関関係と因果関係 - Wikipedia

AとBに相関関係があるとき、以下のようなパターンが考えられます。

  1. BがAの原因である(または、その逆)
  2. 未知の第3の要因Cがあり、実際にはAもBもCが原因かもしれない
  3. 単なる偶然
  4. BがAの原因であると同時に、AがBの原因である

AとBに因果関係が認められるのは、「1」と「4」のパターンです。「2」は、Cとの因果関係があります。因果関係が(AとBに)認められないのは「2」や「3」のようなケースですが、このようなケースはわりと多くあります。

この「因果」は、手法の選定において非常に重要です。

バックテストをしていくと、勝てる手法やパフォーマンスを向上(最適化)するためのフィルターをいくつか見つけることができます。これは言い換えると、「勝つ」や「パフォーマンスの向上」というAと相関のあるBを見つけるということです。

このAとBに因果関係があることを確認しておくと、手法の確からしさが増して、過剰最適化を避けることもできます。

相関係数の推移

相関係数は以下の条件で用意しています。

  • 投資の魔術に掲載されている27銘柄(CMEに上場している先物がメイン)
  • 60日の相関係数
  • Pythonで算出

算出のプログラムについては以下の記事で解説しています。

読み取れること

掲載するグラフから読み取れることはシンプルです。

  • 分散できるときと、できないときがある
  • いわゆる「金融ショック」のときは、ほとんどの銘柄が似たような動きか真逆の動きになる(分散できない)

また、個別の商品では以下が特徴的だと思います。

  • 石油製品は常に似た値動き
  • 金と銀は常に似た値動き
  • 為替は、2000年代と2010年代で大きく傾向が異なる
  • 農産物は他の商品の影響をあまり受けない

Japanese Yen

2001~2010年 2001~2010年 JapaneseYen 2011~2020年 2011~2020年 JapaneseYen

Euro

2001~2010年 2001~2010年 Euro 2011~2020年 2011~2020年 Euro

British Pound

2001~2010年 2001~2010年 British Pound 2011~2020年 2011~2020年 British Pound

Swiss Franc

2001~2010年 2001~2010年 Swiss Franc 2011~2020年 2011~2020年 Swiss Franc

Canadian Dollar

2001~2010年 2001~2010年 Canadian Dollar 2011~2020年 2011~2020年 Canadian Dollar

Austrarian Dollar

2001~2010年 2001~2010年 Austrarian Dollar 2011~2020年 2011~2020年 Austrarian Dollar

Mexican Peso

2001~2010年 2001~2010年 Mexican Peso 2011~2020年 2011~2020年 Mexican Peso

Gold

2001~2010年 2001~2010年 Gold 2011~2020年 2011~2020年 Gold

Silver

2001~2010年 2001~2010年 Silver 2011~2020年 2011~2020年 Silver

High Grade Copper

2001~2010年 2001~2010年 High Grade Copper 2011~2020年 2011~2020年 High Grade Copper

Crude Oil

2001~2010年 2001~2010年 Crude Oil 2011~2020年 2011~2020年 Crude Oil

ULSD NY Harbor

2001~2010年 2001~2010年 ULSD NY Harbor 2011~2020年 2011~2020年 ULSD NY Harbor

Gasoline RBOB

2001~2010年 2001~2010年 Gasoline RBOB 2011~2020年 2011~2020年 Gasoline RBOB

Nature Gas

2001~2010年 2001~2010年 Nature Gas 2011~2020年 2011~2020年 Nature Gas

Corn

2001~2010年 2001~2010年 Corn 2011~2020年 2011~2020年 Corn

Soybean

2001~2010年 2001~2010年 Soybean 2011~2020年 2011~2020年 Soybean

Wheat

2001~2010年 2001~2010年 Wheat 2011~2020年 2011~2020年 Wheat

Sugar

2001~2010年 2001~2010年 Sugar 2011~2020年 2011~2020年 Sugar

Cotton

2001~2010年 2001~2010年 Cotton 2011~2020年 2011~2020年 Cotton

Cocoa

2001~2010年 2001~2010年 Cocoa 2011~2020年 2011~2020年 Cocoa

Coffee

2001~2010年 2001~2010年 Coffee 2011~2020年 2011~2020年 Coffee

Feeder Cattle

2001~2010年 2001~2010年 Feeder Cattle 2011~2020年 2011~2020年 Feeder Cattle

Live Cattle

2001~2010年 2001~2010年 Live Cattle 2011~2020年 2011~2020年 Live Cattle

Lean Hogs

2001~2010年 2001~2010年 Lean Hogs 2011~2020年 2011~2020年 Lean Hogs

Eurodollar

2001~2010年 2001~2010年 Eurodollar 2011~2020年 2011~2020年 Eurodollar

5 Year T Note

2001~2010年 2001~2010年 5 Year T Note 2011~2020年 2011~2020年 5 Year T Note

10 Year T Note

2001~2010年 2001~2010年 10 Year T Note 2011~2020年 2011~2020年 10 Year T Note

算出方法

おまけです。相関係数の算出方法をいくつかご紹介します。

Excelで相関係数を算出する

Excelで相関係数を算出する

配列Aと配列Bは、数値こそ違えど似た動きをしているのがわかると思います。

関数で相関係数を出してみると0.99。強い相関の関係にあることが分かります。それに対して、大きく異なるようにみえる配列Bと配列Cは、相関係数も0.35となり、相関のない動きであることが確認できます。

Excelによる確認はすごく簡単です。

価格データを用意して関数をつかうだけなので、今日からでも使えます。

Google apps script(JavaScript)で相関係数を算出する

Google apps scriptを使用すると、かなりできることが増えます。「日足の価格データをネット上から自動で取得して相関係数を計算させる」なんてこともできるようになります。プログラムは大変働き者です。

相関係数の計算
function Correl(xx,yy){
  var m = Math
     ,n;
  if (xx.length==yy.length){
    n = xx.length;
    var sumx=0, sumy=0, sumxx=0, sumyy=0, sumxy=0
       ,xm ,ym ,xxi ,yyi
       ,sumxxm=0, sumyym=0, sumxym=0
       ,i;
    for(i=0; i<n; i++){
      sumx += (xx[i]-0);
      sumy += (yy[i]-0);
    }
    xm = sumx/n;
    ym = sumy/n;
    for(i=0; i<n; i++){
      xxi = (xx[i]-0);
      yyi = (yy[i]-0);
      sumxxm += (xxi-xm) * (xxi-xm);
      sumyym += (yyi-ym) * (yyi-ym);
      sumxym += (xxi-xm) * (yyi-ym);
    }                                  
    return sumxym / m.sqrt(sumxxm) / m.sqrt(sumyym);
  }else{
    throw new Error("Array length is not same.");
  }
}

Pythonで算出する

別の記事を用意しています。以下をお読みください。

インタラクティブなグラフ

Google Colaboratoryで用意していますので、必要に応じて活用してください。

インタラクティブに操作できるグラフ

同じタグの記事

タカハシ / 8年目の兼業トレーダー

元・日本料理の板前。現在は、投資やプログラミング、動画コンテンツの撮影・制作・編集などを。更新のお知らせは、各SNSやLINEで。LINEだと1対1でお話することもできます!

このブログと筆者について運用管理表

  • 記事をシェア
© Investment Tech Hack 2021.