mk-mode BLOG

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

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

株価 - 売買サインチェック(単純移動平均・ゴールデンクロス/デッドクロス版)!

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

こんばんは。

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

今回は、単純移動平均線(= SMA)のゴールデンクロス・デッドクロスを買いサイン・売りサインとした場合のその後の株価の変動を検証してみました。 ※全体的にどんな傾向があるのかを把握するのと、Ruby の学習が目的です。

個人的な記録ですので、興味が無ければ読み飛ばしてください。

ゴールデンクロス(デッドクロス)とは短期と長期の移動平均線を計算し、短期の値が長期の値を上抜けた(下抜けた)場合のことを言います。 株式用語については、ここでは詳しく説明しません。Web等で調べてください。

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

1.前提条件

1.定義

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

  • その日の短期SMAが長期SMAを上回った場合を「買いサイン」
  • その日の短期SMAが長期SMAを下回った場合を「売りサイン」

としました。

SIGNAL_CROSS

検証した短期SMAと長期SMAの日数の組み合わせは、[5, 25], [5, 75], [25, 75] です。 また、調整後終値(株式分割があった場合の調整値)を考慮していません。

2.検証銘柄と検証期間

2012年2月14日現在上場している全市場の3,600銘柄を対象に、2000年1月1日から2011年12月31日の株価データを使用して検証しました。 また、複数の市場に上場している銘柄については、優先市場のみで検証しました。 ※2012/02/19 修正(売買サイン判定基準を微調整) ※全取引件数は 7,963,439 件

2.検証結果

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

1
2
3
SIGN       (  5 )    ( 25 )    ( 75 )
[Long ]   215,427   109,335    57,546
[Short]   217,327   111,352    59,761

5日で計算するよりも25日、25日で計算するよりも75日の方が絞られる。

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

以下は [ 短期EMA=5日, 長期EMA=25日 ] で計算した場合です。

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 )   85,389 (39.65%)   25,071 (11.64%)  104,881 (48.70%)
Long  (  2 )   88,050 (40.90%)   15,488 ( 7.19%)  111,744 (51.91%)
Long  (  3 )   88,727 (41.23%)   12,148 ( 5.64%)  114,341 (53.13%)
Long  (  4 )   89,082 (41.41%)   10,360 ( 4.82%)  115,676 (53.77%)
Long  (  5 )   89,435 (41.59%)    9,172 ( 4.27%)  116,422 (54.14%)
Long  (  6 )   90,185 (41.96%)    8,383 ( 3.90%)  116,381 (54.14%)
Long  (  7 )   90,558 (42.14%)    7,602 ( 3.54%)  116,717 (54.32%)
Long  (  8 )   90,988 (42.36%)    7,109 ( 3.31%)  116,721 (54.33%)
Long  (  9 )   91,206 (42.47%)    6,557 ( 3.05%)  117,003 (54.48%)
Long  ( 10 )   91,618 (42.67%)    6,264 ( 2.92%)  116,816 (54.41%)
Long  ( 11 )   91,935 (42.84%)    5,836 ( 2.72%)  116,837 (54.44%)
Long  ( 12 )   92,518 (43.13%)    5,615 ( 2.62%)  116,381 (54.25%)
Long  ( 13 )   92,802 (43.30%)    5,349 ( 2.50%)  116,173 (54.20%)
Long  ( 14 )   92,934 (43.38%)    5,124 ( 2.39%)  116,160 (54.23%)
Long  ( 15 )   93,224 (43.55%)    4,902 ( 2.29%)  115,955 (54.16%)
Long  ( 16 )   93,484 (43.70%)    4,709 ( 2.20%)  115,729 (54.10%)
Long  ( 17 )   93,756 (43.88%)    4,538 ( 2.12%)  115,359 (53.99%)
Long  ( 18 )   93,915 (44.00%)    4,430 ( 2.08%)  115,110 (53.93%)
Long  ( 19 )   93,718 (43.99%)    4,336 ( 2.04%)  114,977 (53.97%)
Long  ( 20 )   93,897 (44.14%)    4,199 ( 1.97%)  114,616 (53.88%)
Long  ( 21 )   93,728 (44.11%)    3,998 ( 1.88%)  114,752 (54.01%)
Long  ( 22 )   93,520 (44.04%)    3,929 ( 1.85%)  114,893 (54.11%)
Long  ( 23 )   93,521 (44.07%)    3,837 ( 1.81%)  114,873 (54.13%)
Long  ( 24 )   93,583 (44.11%)    3,691 ( 1.74%)  114,881 (54.15%)
Long  ( 25 )   93,568 (44.11%)    3,664 ( 1.73%)  114,869 (54.16%)
Short (  1 )   98,457 (45.33%)   25,913 (11.93%)   92,839 (42.74%)
Short (  2 )  102,872 (47.39%)   16,487 ( 7.60%)   97,699 (45.01%)
Short (  3 )  104,284 (48.07%)   13,083 ( 6.03%)   99,556 (45.89%)
Short (  4 )  104,672 (48.28%)   11,068 ( 5.10%)  101,083 (46.62%)
Short (  5 )  104,855 (48.38%)    9,863 ( 4.55%)  102,014 (47.07%)
Short (  6 )  104,272 (48.14%)    8,940 ( 4.13%)  103,375 (47.73%)
Short (  7 )  104,003 (48.06%)    8,318 ( 3.84%)  104,077 (48.10%)
Short (  8 )  103,835 (48.03%)    7,627 ( 3.53%)  104,737 (48.44%)
Short (  9 )  103,385 (47.87%)    7,333 ( 3.40%)  105,230 (48.73%)
Short ( 10 )  102,822 (47.64%)    6,862 ( 3.18%)  106,138 (49.18%)
Short ( 11 )  102,468 (47.50%)    6,495 ( 3.01%)  106,762 (49.49%)
Short ( 12 )  102,083 (47.34%)    6,120 ( 2.84%)  107,431 (49.82%)
Short ( 13 )  101,699 (47.17%)    5,875 ( 2.73%)  108,017 (50.10%)
Short ( 14 )  101,106 (46.91%)    5,743 ( 2.66%)  108,677 (50.42%)
Short ( 15 )  100,823 (46.80%)    5,477 ( 2.54%)  109,140 (50.66%)
Short ( 16 )  100,509 (46.67%)    5,251 ( 2.44%)  109,615 (50.89%)
Short ( 17 )  100,282 (46.57%)    5,161 ( 2.40%)  109,890 (51.03%)
Short ( 18 )   99,934 (46.42%)    4,942 ( 2.30%)  110,401 (51.28%)
Short ( 19 )   99,838 (46.39%)    4,859 ( 2.26%)  110,534 (51.36%)
Short ( 20 )   99,648 (46.31%)    4,795 ( 2.23%)  110,746 (51.46%)
Short ( 21 )   99,564 (46.28%)    4,696 ( 2.18%)  110,879 (51.54%)
Short ( 22 )   99,644 (46.33%)    4,531 ( 2.11%)  110,900 (51.56%)
Short ( 23 )   99,612 (46.33%)    4,318 ( 2.01%)  111,091 (51.67%)
Short ( 24 )   99,577 (46.33%)    4,253 ( 1.98%)  111,085 (51.69%)
Short ( 25 )   99,562 (46.35%)    4,191 ( 1.95%)  111,052 (51.70%)

特に大きな特徴はないように思える。 [ 短期SMA=5日, 長期SMA=75日 ]、[ 短期SMA=25日, 長期SMA=75日 ] で計算して検証した結果は掲載していないが、同じような結果となっていた。

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

買いサイン発生後、何日後に最も上昇したか、 売りサイン発生後、何日後に最も下降したか、を検証。 以下は [ 短期SMA=5日, 長期SMA=25日 ] で計算した場合です。

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 )    35,850   27,941
(  2 )    20,016   17,285
(  3 )    15,119   13,461
(  4 )    12,470   11,711
(  5 )    11,063   10,695
(  6 )    10,060   10,028
(  7 )     9,172    9,571
(  8 )     8,625    8,992
(  9 )     8,148    8,564
( 10 )     7,788    8,400
( 11 )     7,403    8,263
( 12 )     7,508    8,408
( 13 )     7,407    8,427
( 14 )     7,275    8,254
( 15 )     7,421    8,227
( 16 )     7,221    8,235
( 17 )     7,479    8,442
( 18 )     7,702    8,680
( 19 )     7,839    9,129
( 20 )     7,844    9,676
( 21 )     8,746   10,062
( 22 )     9,406   10,942
( 23 )    10,485   12,615
( 24 )    13,247   15,359
( 25 )    22,037   25,271

買い(売り)サインが発生した翌日と25日後に大きく上昇(下降)している。 [ 短期SMA=5日, 長期SMA=75日 ]、[ 短期SMA=25日, 長期SMA=75日 ] で計算して検証した結果は掲載していないが、[ 短期SMA=5日, 長期SMA=75日 ]では翌日と75日後に、[ 短期SMA=25日, 長期SMA=75日 ] でも翌日と75日後に大きく上昇(下降)していた。

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

以下は [ 短期SMA=5日, 長期SMA=25日 ] で計算した場合です。

1
2
3
4
5
6
7
8
9
10
11
12
13
[DAYS]    [UP   ]   [EVEN ]   [DOWN ]
(  1 )      1,530     1,256    11,179
(  2 )        810       456     9,061
(  3 )        574       294     9,101
(  4 )        326       169     9,834
(  5 )         30        44    11,815
   :          :         :         :
( 21 )      1,849       200     2,497
( 22 )      1,983       167     1,933
( 23 )      2,069       146     1,497
( 24 )      1,992       117     1,126
( 25 )      1,895        98       820
   :          :         :         :

買いサインが発生した直後は株価が下降するが22日後頃から上昇する傾向にある。 [ 短期SMA=5日, 長期SMA=75日 ]、[ 短期SMA=25日, 長期SMA=75日 ] で計算して検証した結果は掲載していないが、[ 短期SMA=5日, 長期SMA=75日 ] では54日後頃から、[ 短期SMA=25日, 長期SMA=75日 ] では68日後頃から上昇する傾向にあった。


先日からやっている単純移動平均や指数移動平均の終値の上抜け・下抜け具合から買いサイン・売りサインを判定するよりは、若干ですが有効性はありそうに感じました。

Ruby 学習の延長で検証作業を行ってみましたが、こうして実際に実用的な何かを作成してみることで知識も深まっていきます。

以上。

Comments