mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

株価 - 売買サインチェック(RCI版)!

[ プログラミング, 株式 ] [ MySQL, Ruby ]

こんばんは。

Ruby + MySQL で自作した株価取得のシステム。 全市場(東京・大阪・名古屋・札幌・福岡)の全銘柄の2000年からの全取引データを取得しています。

これまで、色々な指数を利用して売買サインを検証してきました。 今回は、「RCI」というものを利用して同様の検証を行いました。 少し前に検証した「RSI」とは異なります。

※個人的な記録ですので、興味が無ければ読み飛ばしてください。 ※全体的にどんな傾向があるのかを把握するのと、Ruby の学習が目的です。 ※検証結果を取り纏めたものなので、掲載している結果自体ではあまり有効性は感じません。 ※ただ、個別に調べてみるとおもしろいものとなります。

RCI(= Rank Correlation Index)とは、「順位相関指数」と呼ばれている統計学を基にしたテクニカル指標で、「上がり始め」、「下がり始め」の時期とタイミングを捉える指標です。 相場の変化の様子を見ることができますが、反応が敏感なため、ダマシに出合う場合も多いので注意が必要です。 計算式は以下のとおり。

RCI

【計算例】[ n = 9 とした場合 ]

 日 付   終 値  日付・順位 終値・順位  順位差  順位差の2乗
8日前 141 9 9 0 0
7日前 160 8 2 6 36
6日前 152 7 4.5 2.5 6.25
5日前 152 6 4.5 1.5 2.25
4日前 163 5 1 4 16
3日前 153 4 3 1 1
2日前 147 3 6 -3 9
1日前 144 2 7 -5 25
当日 143 1 8 -7 49
順位差の2乗の合計 144.5

1
2
3
RCI = ( 1 - 6 * 144.5 / ( 9 * ( 92 - 1 ) ) ) * 100
    = ( 1 - 867 / 720 ) * 100
    ≒ 20.42 (%)

計算してみると分かりますが、

  • すべてにおいて右上がり => RCI = 100 (%)
  • すべてにおいて右下がり => RCI = -100 (%)

となります。

以下に、前提条件・検証結果を掲載します。

1.前提条件

以降に出てくる Long は買いサイン、Short は売りサインを表しています。

1.定義

何を以って、買いサイン・売りサインと見なすかですが、

  • DEF-1 ( RCIを使った順張り戦略 ) 買いサイン : RCI が 0% を下から上抜けた時 売りサイン : RCI が 0% を上から下抜けた時

  • DEF-2 ( RCIを使った逆張り戦略 ) 買いサイン : RCI -80% を上から下抜けた時 売りサイン : RCI +80% を下から上抜けた時 ※70%, 75% とする場合もあり。

と定義しました。 RCI を計算する日数は [ 9, 26, 52 ] の3種類としました。 そして、検証する場合、9日(26日, 52日)で計算する場合は検証は9日後(26日後, 52日後)までとしています。 また、調整後終値(株式分割があった場合の調整値)を考慮していません。

2.検証銘柄と検証期間

2012年2月24日現在上場している全市場の3,598銘柄を対象に、2000年1月1日から2011年12月31日の株価データを使用して検証しました。 また、複数の市場に上場している銘柄については、優先市場のみで検証しました。 ※全取引件数は 7,956,074 件

2.検証結果

1.サインが発生した件数

1
2
3
4
5
[ DEF-1 ]                        [ DEF-2 ]
[DAYS]   [Long ]  [Short]        [DAYS]   [Long ]  [Short]
[  9 ]  475,281   474,890        [  9 ]   266,370  265,306
[ 26 ]  159,136   158,652        [ 26 ]    98,761   99,039
[ 52 ]   77,023    76,750        [ 52 ]    50,626   50,890

2.各サイン発生○日後に上昇・変動なし・下降した件数

以下は、9日で検証した結果です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[ DEF-1 ]
[SIGN][DAYS]  [UP   ] (     %) [EVEN ] (     %) [DOWN ] (     %)
Long  (  1 )  190,956 (40.21%)  58,727 (12.37%) 225,242 (47.43%)
Long  (  2 )  198,856 (41.90%)  36,797 ( 7.75%) 238,995 (50.35%)
Long  (  3 )  201,594 (42.50%)  28,938 ( 6.10%) 243,810 (51.40%)
Long  (  4 )  203,685 (42.97%)  24,373 ( 5.14%) 245,943 (51.89%)
Long  (  5 )  204,532 (43.17%)  21,527 ( 4.54%) 247,681 (52.28%)
Long  (  6 )  205,336 (43.36%)  19,574 ( 4.13%) 248,673 (52.51%)
Long  (  7 )  205,518 (43.41%)  17,907 ( 3.78%) 250,008 (52.81%)
Long  (  8 )  206,601 (43.65%)  16,566 ( 3.50%) 250,134 (52.85%)
Long  (  9 )  208,132 (43.98%)  15,881 ( 3.36%) 249,196 (52.66%)
Short (  1 )  211,082 (44.46%)  59,551 (12.54%) 204,113 (42.99%)
Short (  2 )  222,195 (46.82%)  37,543 ( 7.91%) 214,788 (45.26%)
Short (  3 )  225,496 (47.53%)  30,013 ( 6.33%) 218,879 (46.14%)
Short (  4 )  227,181 (47.91%)  25,349 ( 5.35%) 221,699 (46.75%)
Short (  5 )  228,083 (48.11%)  22,180 ( 4.68%) 223,819 (47.21%)
Short (  6 )  228,356 (48.19%)  20,208 ( 4.26%) 225,300 (47.55%)
Short (  7 )  227,977 (48.13%)  18,524 ( 3.91%) 227,146 (47.96%)
Short (  8 )  227,620 (48.08%)  17,061 ( 3.60%) 228,708 (48.31%)
Short (  9 )  226,329 (47.86%)  16,036 ( 3.39%) 230,569 (48.75%)

[ DEF-2 ]
[SIGN][DAYS]  [UP   ] (     %) [EVEN ] (     %) [DOWN ] (     %)
Long  (  1 )  118,277 (44.41%)  27,634 (10.38%) 120,411 (45.21%)
Long  (  2 )  125,279 (47.05%)  17,390 ( 6.53%) 123,580 (46.42%)
Long  (  3 )  127,510 (47.90%)  13,479 ( 5.06%) 125,207 (47.04%)
Long  (  4 )  128,310 (48.21%)  11,348 ( 4.26%) 126,463 (47.52%)
Long  (  5 )  128,537 (48.32%)  10,015 ( 3.76%) 127,478 (47.92%)
Long  (  6 )  128,521 (48.35%)   9,016 ( 3.39%) 128,276 (48.26%)
Long  (  7 )  128,367 (48.32%)   8,430 ( 3.17%) 128,855 (48.51%)
Long  (  8 )  128,553 (48.42%)   7,693 ( 2.90%) 129,238 (48.68%)
Long  (  9 )  128,380 (48.42%)   7,250 ( 2.73%) 129,513 (48.85%)
Short (  1 )  112,998 (42.62%)  27,680 (10.44%) 124,438 (46.94%)
Short (  2 )  117,279 (44.26%)  17,062 ( 6.44%) 130,657 (49.30%)
Short (  3 )  118,626 (44.78%)  13,219 ( 4.99%) 133,036 (50.22%)
Short (  4 )  119,196 (45.02%)  11,482 ( 4.34%) 134,087 (50.64%)
Short (  5 )  118,768 (44.90%)  10,192 ( 3.85%) 135,568 (51.25%)
Short (  6 )  119,199 (45.09%)   9,226 ( 3.49%) 135,945 (51.42%)
Short (  7 )  119,227 (45.14%)   8,572 ( 3.25%) 136,319 (51.61%)
Short (  8 )  119,650 (45.32%)   7,981 ( 3.02%) 136,373 (51.66%)
Short (  9 )  119,442 (45.25%)   7,427 ( 2.81%) 137,110 (51.94%)

特に大きな特徴はないように思える。(DEF-1, DEF-2 とも) 26日・52日で検証した結果は掲載していないが、同様の結果となった。(DEF-1, DEF-2 とも)

3.何日後に最も上昇(買い)/下降(売り)したか

買いサイン発生後、何日後に最も上昇したか、 売りサイン発生後、何日後に最も下降したか、を検証。 以下は、9日で検証した結果です。

1
2
3
4
5
6
7
8
9
10
11
[ DEF-1 ]                       [ DEF-2 ]
[DAYS]  [Long ]  [Short]        [DAYS]  [Long ]  [Short]
[  1 ]  122,208  106,995        [  1 ]   61,713   55,261
[  2 ]   74,435   67,980        [  2 ]   38,394   34,420
[  3 ]   59,790   56,456        [  3 ]   31,994   29,140
[  4 ]   52,674   52,192        [  4 ]   28,882   27,101
[  5 ]   49,891   49,974        [  5 ]   27,427   26,859
[  6 ]   48,632   51,133        [  6 ]   26,771   27,224
[  7 ]   49,858   55,060        [  7 ]   28,002   29,698
[  8 ]   57,228   65,392        [  8 ]   31,907   35,652
[  9 ]   89,360  104,058        [  9 ]   49,957   61,868

DEF-1, DEF-2 とも、買い(売り)サインが発生した翌日と9日後に大きく上昇(下降)している。 26日・52日で検証した結果は掲載していないが、こちらも DEF-1, DEF-2 とも、26日では翌日と26日後が、52日では翌日と52日後が大きく上昇(下降)する結果となった。

4.買いサイン発生から売りサイン発生までの間隔と差が + か 0 か − を集計

以下は、9日で検証した結果です。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[ DEF-1 ]                          [ DEF-2 ]
[DAYS]    [+]    [0]    [-]        [DAYS]    [+]    [0]    [-]
[  1 ]  4,448  3,948 36,916        [  1 ] 47,340  4,499  4,383
[  2 ]  1,849  1,200 31,355        [  2 ] 41,438  2,961  3,707
[  3 ]  1,486    855 31,724        [  3 ] 32,597  2,657  3,962
[  4 ]  1,239    674 33,280        [  4 ] 21,314  2,717  5,152
[  5 ]    969    714 37,909        [  5 ]  8,627  1,685 10,846
[  6 ]  1,134    815 44,414        [  6 ]  3,467    758 11,747
[  7 ]  2,084  1,438 39,367        [  7 ]  1,452    317 10,245
[  8 ]  8,321  1,938 21,641        [  8 ]    673    126  8,004
[  9 ] 12,357  1,363  8,946        [  9 ]    277     59  6,115
[ 10 ] 11,179  1,011  7,196        [ 10 ]    155     30  4,452
[ 11 ] 10,516    781  5,721        [ 11 ]     73     19  3,172
[ 12 ]  9,819    638  4,165        [ 12 ]     36     14  2,323
[ 13 ]  8,982    476  2,813        [ 13 ]     26      2  1,699
[ 14 ]  8,161    354  1,791        [ 14 ]      8      1  1,307
[ 15 ]  7,269    211  1,182        [ 15 ]      8      1    854
   :       :      :      :            :       :      :      :

DEF-1では、9日後頃から上昇する割合の方が多くなるという結果となった。 26日・52日で検証した結果は掲載していないが、26日で検証した場合は26日後頃から、52日で検証した場合は52日後頃から上昇する割合の方が高くなるいう結果になりました。 また、DEF-2では、5日後頃から下降する割合の方が多くなるという結果となった。 26日・52日で検証した結果は掲載していないが、26日で検証した場合は26日後頃から、52日で検証した場合は27日後頃から下降する割合の方が高くなるいう結果になりました。 DEF-1 と DEF-2 は順張りか逆張りかの違いなので、結果として相反するものとなった。


上記の4番目の検証はかなり有効ではないでしょうか? 順張り、逆張りで挙動が違うので、工夫次第で有効性が高くなるのではないでしょうか? Ruby 学習の延長で検証作業を行ってみましたが、こうして実際に実用的な何かを作成してみることで知識も深まっていきます。

以上。

Comments