どんな記事
相関係数は、投資において以下のような意味があります。
- 「なんとなく似た動きをしてる」を、数値で明確に表す
- リスクの度合いを数値で判断することができる
この記事では、2001年から2020年における27銘柄の相関係数の推移を、ヒートマップで確認することができます。
また、インタラクティブに操作できるグラフもGoogle Colaboratoryで用意していますので、必要に応じて活用してください。
相関係数とは
投資において「相関がある」は、「似た動きをする」とよく表現されます。
引用元: 相関係数 - Wikipedia
Aが上昇するとBも上昇するような関係にあると、相関係数は「1」になります。逆に、Aが上昇するとBは下落するという関係では、相関係数は「-1」です。
例えば、株と金は「逆の動きをする傾向が強い」とよく言われます。株と金は逆相関です。
これは筆者も正しいと思います。
ただ、常にそうではありません。
金融危機のときには、あらゆる投資家が手持ちの投資商品を決済します。つまり、株の値段が下がり、金の値段も下がります。これは逆の値動きではありません。
- 株を10買ってる
- 金を10買ってる
- 株と金は逆相関だからリスクは±0
この状態で金融危機が起こると、リスクは一気に20になってしまいます。あくまでもイメージですが、似たことはよく起きていると思います。
相関係数は、
- 「なんとなく似た動きしてる」を、数値で明確に表す
- リスクの度合いを数値で判断することができる
こんな感じでしょうか。
「相関係数は投資に絶対必要」というものではありませんが、理解しておくとリスク対応の幅が広がる と思います。
相関関係と因果関係
今回の「相関係数の推移」というテーマからは少しズレますが重要です。
相関関係があるだけでは因果関係があるとは断定できず、因果関係の前提に過ぎない。
AとBに相関関係があるとき、以下のようなパターンが考えられます。
- BがAの原因である(または、その逆)
- 未知の第3の要因Cがあり、実際にはAもBもCが原因かもしれない
- 単なる偶然
- 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年 2011~2020年
Euro
2001~2010年 2011~2020年
British Pound
2001~2010年 2011~2020年
Swiss Franc
2001~2010年 2011~2020年
Canadian Dollar
2001~2010年 2011~2020年
Austrarian Dollar
2001~2010年 2011~2020年
Mexican Peso
2001~2010年 2011~2020年
Gold
2001~2010年 2011~2020年
Silver
2001~2010年 2011~2020年
High Grade Copper
2001~2010年 2011~2020年
Crude Oil
2001~2010年 2011~2020年
ULSD NY Harbor
2001~2010年 2011~2020年
Gasoline RBOB
2001~2010年 2011~2020年
Nature Gas
2001~2010年 2011~2020年
Corn
2001~2010年 2011~2020年
Soybean
2001~2010年 2011~2020年
Wheat
2001~2010年 2011~2020年
Sugar
2001~2010年 2011~2020年
Cotton
2001~2010年 2011~2020年
Cocoa
2001~2010年 2011~2020年
Coffee
2001~2010年 2011~2020年
Feeder Cattle
2001~2010年 2011~2020年
Live Cattle
2001~2010年 2011~2020年
Lean Hogs
2001~2010年 2011~2020年
Eurodollar
2001~2010年 2011~2020年
5 Year T Note
2001~2010年 2011~2020年
10 Year T Note
2001~2010年 2011~2020年
算出方法
おまけです。相関係数の算出方法をいくつかご紹介します。
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で用意していますので、必要に応じて活用してください。
- 記事をシェア