一人より二人?二人より三人?
さて、久々のchapon式シストレの紹介ですが、今回は
相関係数
ってのを扱いまする。相関係数ってのは、
2 つの確率変数 の間の相関(類似性の度合い)を示す統計学 的指標である。
原則、単位は無く、-1 から 1 の間の実数値をとり、1 に近いときは2 つの確率
変数には正の相関があるといい、-1 に近ければ負の相関があるという。0 に
近いときはもとの確率変数 の相関は弱いとなる。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
まあ小難しい話は置いておいて、要は
観測する2つの対象の関係
ってことですな。で、相場で考えてみると、
+1 に近づけば近づくほど互いに同じ方向の動き
-1 に近づけば近づくほど互いに逆の方向の動き
と解釈できるわけです。これが何に使えるのか?
先に答えをもってくると、
① 監視先銘柄の選定
② サヤ取り
と分析においても技法においても結構重要な役割を担った数値なのですね~。
で、どうやって求めたらいいのか?
Excelの CORREL関数
を使いましょうw
いや、ほんとにこっちの方が早いのね・・
コードを記述するとなると必要になるのが計算式ですが、この計算には
ⅰ 銘柄Aの標準偏差と銘柄Bの標準偏差
ⅱ 銘柄Aと銘柄Bの共分散
を計算して、
ⅱ÷ⅰ
をしたらいいべ。標準偏差の計算は以前扱ったのでそっち参照 で!
共分散は、それ自体が広がり具合を表す数値で、計算は難しくは
ないよ。Excelでの計算事例を張り付けときます!
計算手順は、
① 銘柄Aと銘柄Bの平均を求めておく B25・26
② 銘柄Aの値段から銘柄Aの平均を順に計算(銘柄Bもね♪) D2~21(E2~21)
③ ②をそれぞれ乗算 F2~21
④ ③を合計する F22
⑤ ④を観測日数(この場合20)で割る ※Excelでは観測日数n-1が標準 F23 ←これが共分散
⑥ 銘柄Aと銘柄Bの標準偏差を求めておく B27・28
⑦ ⑤÷(銘柄A標準偏差×銘柄B標準偏差)が相関係数
簡単でしょ?
これをプログラムとして扱うと少々面倒 ( p_q)
巻末に載せておきます♪
で、相関係数は、
+0.7以上
ある銘柄は何をしても相性が良いのです!
一見、逆相関の方が何か作れそうな気がするけど、実際は順相関の
組み合わせの方が効果あり!
で、
① 監視先 ⇒ +0.7以上の相関係数同士を監視先とする
② サヤ取り ⇒ +0.7以上の相関係数同士の組み合わせとする
という選別ができるのですな。但し、
株価 ⇔ 米国債
だけはなぜか例外で逆相関でも監視先として役に立つってのがあるの
で逆相関の組み合わせは発掘って感じの扱いにしてメインとして探す
ことは時間の無駄になる可能性があるってな結果なのです。
監視先、組み合わせは、
chapon式シストレ
にとっては中核でもあり、より精度を上げるための効率的かつ必須作業
なわけです!
とりあえず今回はここまで!
次は各種統計結果を具体的に活用するプロセスに入っていこうと思いま
する~
意外と役に立ちそうだな~と思われた方!
クリック宜しくね♪
(#⌒∇⌒#)ゞ
↓即興で作ったので正しいか確認とってなくてすません
【たぶんあっている相関係数求めるソース】
Inputs:Ave(30);
Vars:eipcount(0),eip1sum(0),
nAve1(0),eip1(0),count1(0),Avedissum1(0),deviation1(0),
nAve2(0),eip2(0),count2(0),Avedissum2(0),deviation2(0),
nAve3(0),eip3(0),count3(0),Avedissum3(0),deviation3(0),
xyi(0),colt(0);
Array:Avedis1[500](0),Avedis2[500](0),Avedis3[500](0);
{Data1 Deviation}
If Currentbar>1 then eip1=close Else eip1=0;
{eip1 Average}
eip1sum=0;
For eipcount=0 to Ave-1 begin
eip1sum=eip1[eipcount]+eip1sum;
end;
nAve1=eip1sum/Ave;
Avedissum1=0;
For count1=0 To Ave-1 begin
Avedis1[count1]=Square(eip1[count1]-nAve1);
Avedissum1=Avedissum1+Avedis1[count1];
End;
If currentbar>Ave+1 then deviation1=Squareroot(Avedissum1/Ave) Else deviation1=0;
{Data2 Deviation}
If Currentbar>1 then eip2=close of data2 Else eip2=0;
nAve2=Average(eip2,Ave);
Avedissum2=0;
For count2=0 To Ave-1 begin
Avedis2[count2]=Square(eip2[count2]-nAve2);
Avedissum2=Avedissum2+Avedis2[count2];
End;
If currentbar>Ave+1 then deviation2=Squareroot(Avedissum2/Ave) Else deviation2=0;
{Covar}
Avedissum3=0;
For count3=0 To Ave-1 begin
Avedis3[count3]=(eip1[count3]-nAve1)*(eip2[count3]-nAve2);
Avedissum3=Avedissum3+Avedis3[count3];
End;
If currentbar>Ave+1 then deviation3=(Avedissum3/Ave-1) Else deviation3=0;
{Correlation}
xyi=(deviation1*deviation2);
If currentbar>Ave+1 then colt=deviation3/(xyi) Else colt=0;
{Plot}
plot1(colt,"Correlation",cyan);
Plot2(1,"+",Red);
Plot3(-1,"-",Red);
