mk-mode BLOG

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

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

株価 - 売買サインチェック(ボリンジャーバンド版)!

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

こんばんは。

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

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

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

ボリンジャーバンドとは、移動平均線を基に標準偏差を応用させた考え方のテクニカル指標です。 一定期間の単純移動平均の標準偏差(σ)を算出し、移動平均線に対してσの1~3倍を加算したものをボリンジャーバンドの +1σ ~ +3σ、減算したものをボリンジャーバンドの -1σ ~ -3σ として表示します。 そして、統計学的に、対象データの変動幅が正規分布している場合には、

  • ボリンジャーバンドの±1σの範囲内に収まる確率・・・約68.26%
  • ボリンジャーバンドの±2σの範囲内に収まる確率・・・約95.44%
  • ボリンジャーバンドの±3σの範囲内に収まる確率・・・約99.74%

であるという性質を利用して、売買サインを算出するのです。

BOLLINGERBAND_01

標準偏差の計算式は不偏分散を用いる方法と標本分散を用いる方法がありますが、不偏分散を用いるほう方が一般的のようです。 【不偏分散】

SD_FUHEN

【標本分散】

SD_HYOHON

※nは任意の日数で、9, 13, 20, 25 が一般的。

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

1.前提条件

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

1.定義

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

  • DEF-1 ( 順張り戦略 ) 買いサイン : 終値がボリンジャーバンド +kσを上抜けた時 売りサイン : 終値がボリンジャーバンド -kσを下抜けた時

  • DEF-2 ( 逆張り戦略 ) 買いサイン : 終値がボリンジャーバンド -kσを下抜けた時 売りサイン : 終値がボリンジャーバンド +kσを上抜けた時

※k = 1 or 2 or 3 ( k = 2 が一般的 ) と定義しました。

今回はσを計算する日数は 25 日とし、係数 k は 2 としました。 そして検証は、 25 日後までとしています。 また、調整後終値(株式分割があった場合の調整値)を考慮していません。

2.検証銘柄と検証期間

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

2.検証結果

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

σを 25 日で、k = 2 で計算して DEF-1(順張り)で検証した結果です。 DEF-2(逆張り)はDEF-1(順張り)の真逆なので省略。

1
2
3
[ DEF-1 ]
[DAYS]   [ Long  ]  [ Short ]
[ 25 ]     202,532    198,823

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

σを 25 日で、k = 2 で計算して DEF-1(順張り)で検証した結果です。 DEF-2(逆張り)はDEF-1(順張り)の真逆なので省略。

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
44
45
46
47
48
49
50
51
[SIGN][DAYS]  [UP   ] (     %) [EVEN ] (     %) [DOWN ] (     %)
Long  (  1 )   84,141 (41.57%)  17,300 ( 8.55%) 100,982 (49.89%)
Long  (  2 )   86,737 (42.86%)  10,823 ( 5.35%) 104,796 (51.79%)
Long  (  3 )   87,469 (43.24%)   8,524 ( 4.21%) 106,286 (52.54%)
Long  (  4 )   88,027 (43.53%)   7,426 ( 3.67%) 106,756 (52.79%)
Long  (  5 )   88,196 (43.63%)   6,634 ( 3.28%) 107,305 (53.09%)
Long  (  6 )   88,573 (43.84%)   6,072 ( 3.01%) 107,411 (53.16%)
Long  (  7 )   88,999 (44.06%)   5,737 ( 2.84%) 107,238 (53.09%)
Long  (  8 )   89,641 (44.40%)   5,369 ( 2.66%) 106,883 (52.94%)
Long  (  9 )   90,018 (44.60%)   5,073 ( 2.51%) 106,740 (52.89%)
Long  ( 10 )   90,869 (45.04%)   4,882 ( 2.42%) 106,010 (52.54%)
Long  ( 11 )   91,213 (45.23%)   4,581 ( 2.27%) 105,890 (52.50%)
Long  ( 12 )   91,934 (45.61%)   4,288 ( 2.13%) 105,343 (52.26%)
Long  ( 13 )   92,519 (45.94%)   4,122 ( 2.05%) 104,767 (52.02%)
Long  ( 14 )   92,988 (46.22%)   3,850 ( 1.91%) 104,351 (51.87%)
Long  ( 15 )   93,029 (46.27%)   3,744 ( 1.86%) 104,282 (51.87%)
Long  ( 16 )   93,216 (46.39%)   3,600 ( 1.79%) 104,108 (51.81%)
Long  ( 17 )   93,415 (46.54%)   3,505 ( 1.75%) 103,812 (51.72%)
Long  ( 18 )   93,491 (46.59%)   3,330 ( 1.66%) 103,845 (51.75%)
Long  ( 19 )   93,368 (46.58%)   3,178 ( 1.59%) 103,914 (51.84%)
Long  ( 20 )   93,383 (46.61%)   3,084 ( 1.54%) 103,865 (51.85%)
Long  ( 21 )   93,203 (46.55%)   3,064 ( 1.53%) 103,938 (51.92%)
Long  ( 22 )   92,916 (46.43%)   2,989 ( 1.49%) 104,196 (52.07%)
Long  ( 23 )   92,586 (46.30%)   2,860 ( 1.43%) 104,535 (52.27%)
Long  ( 24 )   92,417 (46.23%)   2,758 ( 1.38%) 104,752 (52.40%)
Long  ( 25 )   92,060 (46.05%)   2,708 ( 1.35%) 105,130 (52.59%)
Short (  1 )   95,599 (48.09%)  18,641 ( 9.38%)  84,565 (42.54%)
Short (  2 )   99,241 (49.93%)  12,159 ( 6.12%)  87,376 (43.96%)
Short (  3 )  100,144 (50.40%)   9,759 ( 4.91%)  88,796 (44.69%)
Short (  4 )  100,647 (50.67%)   8,261 ( 4.16%)  89,739 (45.18%)
Short (  5 )  101,455 (51.08%)   7,459 ( 3.76%)  89,687 (45.16%)
Short (  6 )  101,300 (51.02%)   6,751 ( 3.40%)  90,507 (45.58%)
Short (  7 )  101,443 (51.10%)   6,296 ( 3.17%)  90,797 (45.73%)
Short (  8 )  101,858 (51.31%)   6,111 ( 3.08%)  90,534 (45.61%)
Short (  9 )  101,755 (51.28%)   5,812 ( 2.93%)  90,846 (45.79%)
Short ( 10 )  101,389 (51.12%)   5,561 ( 2.80%)  91,399 (46.08%)
Short ( 11 )  101,072 (50.98%)   5,197 ( 2.62%)  92,001 (46.40%)
Short ( 12 )  101,139 (51.02%)   4,875 ( 2.46%)  92,234 (46.52%)
Short ( 13 )  100,195 (50.55%)   4,779 ( 2.41%)  93,254 (47.04%)
Short ( 14 )   99,516 (50.21%)   4,626 ( 2.33%)  94,069 (47.46%)
Short ( 15 )   98,924 (49.92%)   4,603 ( 2.32%)  94,653 (47.76%)
Short ( 16 )   98,800 (49.86%)   4,502 ( 2.27%)  94,857 (47.87%)
Short ( 17 )   98,706 (49.82%)   4,223 ( 2.13%)  95,209 (48.05%)
Short ( 18 )   98,595 (49.77%)   4,105 ( 2.07%)  95,397 (48.16%)
Short ( 19 )   98,348 (49.65%)   4,108 ( 2.07%)  95,617 (48.27%)
Short ( 20 )   98,093 (49.53%)   4,046 ( 2.04%)  95,912 (48.43%)
Short ( 21 )   97,684 (49.33%)   3,893 ( 1.97%)  96,437 (48.70%)
Short ( 22 )   97,622 (49.31%)   3,799 ( 1.92%)  96,536 (48.77%)
Short ( 23 )   97,552 (49.29%)   3,752 ( 1.90%)  96,612 (48.81%)
Short ( 24 )   97,137 (49.10%)   3,688 ( 1.86%)  97,002 (49.03%)
Short ( 25 )   96,803 (48.97%)   3,533 ( 1.79%)  97,343 (49.24%)

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

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

買いサイン発生後、何日後に最も上昇したか、 売りサイン発生後、何日後に最も下降したか、を検証。 σを 25 日で、k = 2 で計算して DEF-1(順張り)で検証した結果です。 DEF-2(逆張り)はDEF-1(順張り)の真逆なので省略。

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
[DAYS]  [Long ]  [Short]
[  1 ]   33,569   29,508
[  2 ]   17,821   16,479
[  3 ]   13,160   12,692
[  4 ]   10,994   10,524
[  5 ]    9,674   10,290
[  6 ]    8,509    9,341
[  7 ]    7,897    8,658
[  8 ]    7,387    7,643
[  9 ]    7,116    7,294
[ 10 ]    6,716    7,173
[ 11 ]    6,431    7,082
[ 12 ]    6,417    7,081
[ 13 ]    6,577    6,946
[ 14 ]    6,440    7,015
[ 15 ]    6,533    7,262
[ 16 ]    6,548    6,837
[ 17 ]    6,805    7,440
[ 18 ]    6,852    6,921
[ 19 ]    7,225    7,511
[ 20 ]    7,645    7,929
[ 21 ]    7,976    8,364
[ 22 ]    8,791    9,085
[ 23 ]    9,792   10,609
[ 24 ]   11,898   13,400
[ 25 ]   20,620   22,367

25日で検証した場合、買い(売り)サインが発生した翌日と25日後に大きく上昇(下降)している。

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

σを 25 日で、k = 2 で計算して DEF-1(順張り)で検証した結果です。 DEF-2(逆張り)はDEF-1(順張り)の真逆なので省略。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[ DEF-1 ]
[DAYS]     [+]     [0]     [-]
[  1 ]       0       0     292
[  2 ]       0       0     426
[  3 ]       0       0     592
[  4 ]       0       0     779
[  5 ]       0       0     863
[  6 ]       0       0   1,009
[  7 ]       0       0   1,068
[  8 ]       0       0   1,111
[  9 ]       0       0   1,145
[ 10 ]       0       0   1,132
   :        :       :       :
[ 41 ]      86       3     616
[ 42 ]      93       1     605
[ 43 ]      81       3     580
[ 44 ]      64       1     565
[ 45 ]      69       4     452
[ 46 ]      71       3     445
[ 47 ]      49       2     431
[ 48 ]      49       1     396
[ 49 ]      45       4     345
[ 50 ]      41       3     333
   :        :       :       :

25日で検証した場合、全体的に下降する割合の方が高くなるという結果となった。


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

以上。

Comments