mk-mode BLOG

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

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

株価 - 売買サインチェック(3本足の高値安値版)!

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

こんばんは。

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

最近の株価の検証ではバックテストを行っていましたが、今回はまた、少し前にも検証していた売買サインの発生チェックを行ってみました。 今回の手法は、「3本足の高値安値」という手法です。

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

「3本足の高値安値」という手法は、

  • 上昇トレンド時、 安値の3期間移動平均以下で買いを仕掛け、 高値の3期間移動で手仕舞う。
  • 下降トレンド時、 高値の3期間移動平均以上で売りを仕掛け、 安値の3期間移動で手仕舞う。

という手法です。 上昇・下降トレンドは、以下のようにして機械的に判断します。

  • 上昇トレンド 21期間で計算した RSI が前日時点で 50% 以上
  • 下降トレンド 21期間で計算した RSI が前日時点で 50% 以下

RSI については、過去記事「株価 - 売買サインチェック(RSI版)!」を参照のこと。

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

1.前提条件

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

1.定義

何を以って、買いサイン・売りサインと見なすかですが、本来の手法に準じて

  • 上昇トレンド ( RSI > RSI_HI ) 時、 安値が3期間移動平均を下抜けたら、買いサイン

  • 下降トレンド ( RSI < RSI_LO ) 時、 高値が3期間移動平均を上抜けたら、売りサイン

と定義しました。 今回は、RSI を計算する日数は 21 日、上昇トレンド・下降トレンド判断に使用する RSI_HI, RSI_LO はともに 50% としました。 また、調整後終値(株式分割があった場合の調整値)を考慮していません。

2.検証銘柄と検証期間

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

2.検証結果

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

1
2
[ Long  ]    575,845
[ Short ]    626,224

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
[SIGN][DAYS]  [UP   ] (     %) [EVEN ] (     %) [DOWN ] (     %)
Long  (  1 )  195,910 (34.03%)  46,468 ( 8.07%) 333,275 (57.90%)
Long  (  2 )  219,745 (38.19%)  33,012 ( 5.74%) 322,606 (56.07%)
Long  (  3 )  229,655 (39.94%)  26,643 ( 4.63%) 318,719 (55.43%)
Long  (  4 )  234,568 (40.83%)  23,099 ( 4.02%) 316,809 (55.15%)
Long  (  5 )  239,698 (41.75%)  20,574 ( 3.58%) 313,794 (54.66%)
Long  (  6 )  242,709 (42.32%)  18,713 ( 3.26%) 312,109 (54.42%)
Long  (  7 )  245,776 (42.87%)  17,117 ( 2.99%) 310,456 (54.15%)
Long  (  8 )  247,752 (43.23%)  15,938 ( 2.78%) 309,461 (53.99%)
Long  (  9 )  249,748 (43.60%)  14,874 ( 2.60%) 308,225 (53.81%)
Long  ( 10 )  250,157 (43.69%)  14,043 ( 2.45%) 308,340 (53.85%)
Long  ( 11 )  250,928 (43.86%)  13,393 ( 2.34%) 307,753 (53.80%)
Long  ( 12 )  252,213 (44.12%)  12,435 ( 2.18%) 307,022 (53.71%)
Long  ( 13 )  252,474 (44.21%)  12,114 ( 2.12%) 306,521 (53.67%)
Long  ( 14 )  252,763 (44.27%)  11,530 ( 2.02%) 306,666 (53.71%)
Long  ( 15 )  252,682 (44.28%)  11,078 ( 1.94%) 306,845 (53.78%)
Long  ( 16 )  252,635 (44.29%)  10,616 ( 1.86%) 307,164 (53.85%)
Long  ( 17 )  252,730 (44.32%)  10,203 ( 1.79%) 307,249 (53.89%)
Long  ( 18 )  252,445 (44.30%)  10,007 ( 1.76%) 307,384 (53.94%)
Long  ( 19 )  252,142 (44.26%)   9,500 ( 1.67%) 307,987 (54.07%)
Long  ( 20 )  251,759 (44.21%)   9,207 ( 1.62%) 308,499 (54.17%)
Long  ( 21 )  251,330 (44.14%)   8,831 ( 1.55%) 309,171 (54.30%)
Short (  1 )  339,554 (54.26%)  52,106 ( 8.33%) 234,117 (37.41%)
Short (  2 )  329,745 (52.71%)  36,884 ( 5.90%) 258,897 (41.39%)
Short (  3 )  324,432 (51.88%)  30,319 ( 4.85%) 270,616 (43.27%)
Short (  4 )  321,376 (51.40%)  26,393 ( 4.22%) 277,490 (44.38%)
Short (  5 )  318,783 (51.00%)  23,412 ( 3.75%) 282,923 (45.26%)
Short (  6 )  315,556 (50.49%)  21,531 ( 3.45%) 287,886 (46.06%)
Short (  7 )  313,171 (50.14%)  20,279 ( 3.25%) 291,175 (46.62%)
Short (  8 )  312,865 (50.11%)  18,847 ( 3.02%) 292,677 (46.87%)
Short (  9 )  311,246 (49.86%)  17,863 ( 2.86%) 295,152 (47.28%)
Short ( 10 )  310,693 (49.78%)  16,956 ( 2.72%) 296,452 (47.50%)
Short ( 11 )  310,854 (49.82%)  15,859 ( 2.54%) 297,255 (47.64%)
Short ( 12 )  308,861 (49.51%)  15,277 ( 2.45%) 299,691 (48.04%)
Short ( 13 )  307,888 (49.36%)  14,791 ( 2.37%) 301,031 (48.26%)
Short ( 14 )  307,367 (49.31%)  14,046 ( 2.25%) 301,925 (48.44%)
Short ( 15 )  307,414 (49.33%)  13,447 ( 2.16%) 302,255 (48.51%)
Short ( 16 )  306,486 (49.21%)  13,143 ( 2.11%) 303,234 (48.68%)
Short ( 17 )  305,327 (49.04%)  12,775 ( 2.05%) 304,527 (48.91%)
Short ( 18 )  305,557 (49.09%)  12,200 ( 1.96%) 304,644 (48.95%)
Short ( 19 )  305,190 (49.06%)  11,984 ( 1.93%) 304,940 (49.02%)
Short ( 20 )  304,617 (48.98%)  11,591 ( 1.86%) 305,728 (49.16%)
Short ( 21 )  304,343 (48.97%)  11,110 ( 1.79%) 306,047 (49.24%)

特に大きな特徴はないように思える。

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[DAYS]  [Long ]  [Short]
[  1 ]   85,450   83,992
[  2 ]   52,820   50,278
[  3 ]   41,080   40,343
[  4 ]   34,489   35,662
[  5 ]   30,970   32,866
[  6 ]   28,661   31,141
[  7 ]   27,291   29,488
[  8 ]   25,622   28,411
[  9 ]   24,887   27,821
[ 10 ]   23,585   27,456
[ 11 ]   23,205   25,924
[ 12 ]   23,364   26,890
[ 13 ]   23,147   26,584
[ 14 ]   23,457   27,449
[ 15 ]   23,389   27,589
[ 16 ]   24,323   29,411
[ 17 ]   25,512   30,311
[ 18 ]   27,406   33,353
[ 19 ]   30,475   38,508
[ 20 ]   36,427   47,912
[ 21 ]   62,059   81,976

買い(売り)サインが発生した翌日と21日後に大きく上昇(下降)している。

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

1
2
3
4
5
6
7
8
9
10
11
12
[DAYS]     [+]     [0]     [-]
[  1 ]   3,209     339     895
[  2 ]   4,778     928   4,370
[  3 ]   2,844     691  10,384
[  4 ]   2,339     543  12,778
[  5 ]   2,113     416  13,969
[  6 ]   1,719     334  13,066
[  7 ]   1,381     227  11,414
[  8 ]   1,201     186  10,324
[  9 ]     911     140   8,690
[ 10 ]     667     132   7,521
   :        :       :       :

全体的に3日後から下降する割合の方が高くなるという結果となった。


今回は全銘柄を集計したものであるが、個別の銘柄について見てみると銘柄により異なる結果となるのでおもしろいです。 Ruby 学習の延長で検証作業を行ってみましたが、こうして実際に実用的な何かを作成してみることで知識も深まっていきます。

以上。

Comments