mk-mode BLOG

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

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

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

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

こんばんは。

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

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

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

まず、RSI とは「相対力指数」(= Relative Strength Index の略) で、次のような計算式となります。

RSI

買われ過ぎ、売られ過ぎを観る指標です。 一般的には、30%以下が売られ過ぎ、70%以上は買われ過ぎの水準と言われています。 このことから、30%以下を買いサイン、70%以上を売りサイン、と捉えることが出来ます。。 (25%以下を買いサイン、75%以上を売りサイン、と捉えることもあります) また、上げ幅・下げ幅の合計を出す日数Nは一般に 14 を使用する事が多いようです。

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

1.前提条件

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

1.定義

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

  • 前日RSI > 30%, 当日RSI ≦ 30% となった場合を売られ過ぎと観て「買いサイン」とする
  • 前日RSI < 70%, 当日RSI ≧ 70% となった場合を買われ過ぎと観て「売りサイン」とする

と定義しました。 上げ幅・下げ幅の合計を出す日数Nは 14 としました。 また、調整後終値(株式分割があった場合の調整値)を考慮していません。

2.検証銘柄と検証期間

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

2.検証結果

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

1
2
買いサイン = 260,515 件
売りサイン = 230,447 件

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

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
[SIGN][DAYS]  [UP   ] (     %) [EVEN ] (     %) [DOWN ] (     %)
Long  (  1 )  116,343 (44.67%)  29,689 (11.40%) 114,424 (43.93%)
Long  (  2 )  121,958 (46.84%)  18,700 ( 7.18%) 119,699 (45.97%)
Long  (  3 )  124,148 (47.74%)  14,863 ( 5.71%) 121,066 (46.55%)
Long  (  4 )  125,498 (48.27%)  12,400 ( 4.77%) 122,119 (46.97%)
Long  (  5 )  126,227 (48.58%)  11,104 ( 4.27%) 122,516 (47.15%)
Long  (  6 )  126,534 (48.72%)   9,813 ( 3.78%) 123,355 (47.50%)
Long  (  7 )  126,756 (48.83%)   9,182 ( 3.54%) 123,659 (47.63%)
Long  (  8 )  127,024 (48.95%)   8,508 ( 3.28%) 123,990 (47.78%)
Long  (  9 )  126,607 (48.81%)   8,097 ( 3.12%) 124,674 (48.07%)
Long  ( 10 )  126,313 (48.71%)   7,867 ( 3.03%) 125,156 (48.26%)
Long  ( 11 )  125,906 (48.55%)   7,349 ( 2.83%) 126,051 (48.61%)
Long  ( 12 )  125,862 (48.54%)   6,946 ( 2.68%) 126,471 (48.78%)
Long  ( 13 )  125,476 (48.40%)   6,687 ( 2.58%) 127,090 (49.02%)
Long  ( 14 )  125,231 (48.31%)   6,530 ( 2.52%) 127,466 (49.17%)
Short (  1 )   95,869 (41.62%)  23,058 (10.01%) 111,413 (48.37%)
Short (  2 )   99,417 (43.17%)  14,550 ( 6.32%) 116,315 (50.51%)
Short (  3 )  101,176 (43.95%)  11,204 ( 4.87%) 117,843 (51.19%)
Short (  4 )  101,938 (44.30%)   9,487 ( 4.12%) 118,695 (51.58%)
Short (  5 )  102,523 (44.56%)   8,435 ( 3.67%) 119,103 (51.77%)
Short (  6 )  103,381 (44.95%)   7,592 ( 3.30%) 119,030 (51.75%)
Short (  7 )  103,962 (45.22%)   7,007 ( 3.05%) 118,948 (51.74%)
Short (  8 )  104,988 (45.69%)   6,449 ( 2.81%) 118,371 (51.51%)
Short (  9 )  105,182 (45.78%)   5,979 ( 2.60%) 118,581 (51.61%)
Short ( 10 )  105,607 (45.99%)   5,760 ( 2.51%) 118,263 (51.50%)
Short ( 11 )  105,955 (46.17%)   5,216 ( 2.27%) 118,321 (51.56%)
Short ( 12 )  106,272 (46.37%)   5,037 ( 2.20%) 117,897 (51.44%)
Short ( 13 )  106,871 (46.66%)   4,696 ( 2.05%) 117,463 (51.29%)
Short ( 14 )  107,347 (46.94%)   4,669 ( 2.04%) 116,684 (51.02%)

特に大きな特徴はないように思える。 強いて挙げるなら、売買サイン発生翌日は変動がない率が若干高め、というくらいでしょうか。

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

買いサイン発生後、何日後に最も上昇したか、 売りサイン発生後、何日後に最も下降したか、を検証。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[DAYS]    Long   Short
[  1 ]  48,430  39,144
[  2 ]  29,728  24,216
[  3 ]  24,224  19,723
[  4 ]  21,598  17,804
[  5 ]  19,913  16,815
[  6 ]  18,973  15,759
[  7 ]  17,987  15,316
[  8 ]  17,752  14,969
[  9 ]  17,432  15,550
[ 10 ]  17,957  15,956
[ 11 ]  18,028  16,625
[ 12 ]  19,705  18,233
[ 13 ]  22,815  22,390
[ 14 ]  36,194  36,879

買い(売り)サインが発生した翌日と14日後に大きく上昇(下降)している。 ※移動平均を計算するのに14日を使用していることから14日後までしか検証していない。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
[DAYS]    [+]    [0]    [-]
[  1 ]    145     14      0
[  2 ]    402     16      7
[  3 ]    748     17      7
[  4 ]  1,160     12      8
[  5 ]  1,621     12      7
[  6 ]  1,963     11     11
[  7 ]  2,371     16     14
[  8 ]  2,751     17      8
[  9 ]  2,946      7      6
[ 10 ]  3,190      5      4
   :       :      :      :
   :       :      :      :

これまでの指標と異なり、全体的に次に売りサインが発生した時には上昇している場合が多い、という結果になった。


上記の4番目の検証はかなり有効ではないでしょうか? 計算間違いしていなければ、この手法だけでも利益を出せる、ということになる。 Ruby 学習の延長で検証作業を行ってみましたが、こうして実際に実用的な何かを作成してみることで知識も深まっていきます。

以上。

Comments