mk-mode BLOG

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

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

株価 - 売買サインチェック(単純移動平均版)!

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

こんばんは。

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

今日は、取得している株価データを利用して、買いサイン・売りサインが発生した場合のその後の株価の変動を検証してみました。 全体的にどんな傾向があるのかを把握するのと、Ruby の学習が目的です。

単純移動平均とは、その名のとおり単純に当日を含めた過去数日間の平均(相加平均)で、SMA(Simple Moving Average)と略されます。

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

1.前提条件

1.定義

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

  • その日の株価(終値)が単純移動平均値(SMA)を上回った場合を「買いサイン」
  • その日の株価(終値)が単純移動平均値(SMA)を下回った場合を「売りサイン」

としました。

SIGNAL_MA

平均値は当日を含めた過去5日分・25日分・75日分の終値で計算しています。 また、調整後終値(株式分割があった場合の調整値)を考慮していません。

2.検証銘柄と検証期間

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

2.検証結果

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

1
2
3
[SIGN ]  [     5 ] [    25 ] [    75 ]
 Long    1,033,977   450,660   247,395
 Short   1,035,174   452,357   249,290

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

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

以下は5日でSMAを計算した場合です。

1
2
3
4
5
6
7
8
9
10
11
[SIGN][DAYS]  [UP   ] (     %)  [EVEN ] (     %)  [DOWN ] (     %)
Long  (  1 )  413,496 (40.03%)  116,780 (11.30%)  502,740 (48.67%)
Long  (  2 )  434,535 (42.09%)   72,241 ( 7.00%)  525,616 (50.91%)
Long  (  3 )  442,870 (42.92%)   56,893 ( 5.51%)  532,159 (51.57%)
Long  (  4 )  447,829 (43.41%)   48,870 ( 4.74%)  534,883 (51.85%)
Long  (  5 )  450,773 (43.72%)   43,079 ( 4.18%)  537,202 (52.10%)
Short (  1 )  474,211 (45.82%)  122,281 (11.82%)  438,453 (42.36%)
Short (  2 )  488,520 (47.22%)   77,931 ( 7.53%)  468,123 (45.25%)
Short (  3 )  491,435 (47.53%)   61,897 ( 5.99%)  480,652 (46.49%)
Short (  4 )  492,265 (47.64%)   53,037 ( 5.13%)  488,030 (47.23%)
Short (  5 )  494,858 (47.91%)   46,826 ( 4.53%)  491,136 (47.55%)

特に特徴はないように思える。 25日・75日でSMAを計算して検証した結果は掲載していないが、同じような結果となっていた。

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

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

1
2
3
4
5
6
[DAYS]   [Long ]  [Short]
(  1 )   349,037  311,239
(  2 )   224,757  216,046
(  3 )   196,212  200,401
(  4 )   201,847  216,973
(  5 )   287,099  322,288

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

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

以下は5日でSMAを計算した場合です。

1
2
3
4
5
6
7
8
9
10
11
12
[DAYS]    [UP   ]   [EVEN ]   [DOWN ]
(  1 )        587     2,981   300,627
(  2 )      1,915     3,379   163,805
(  3 )     11,251     7,504   115,507
(  4 )     46,650    11,526    69,484
(  5 )     52,434     5,230    21,668
(  6 )     42,911     2,653     9,397
(  7 )     33,244     1,278     4,030
(  8 )     25,062       572     1,728
(  9 )     18,907       273       763
( 10 )     13,332       123       430
   :          :         :         :

買いサインが発生した直後は株価が下降するが5日後頃から上昇する傾向にある。 25日・75日でSMAを計算して検証した結果は掲載していないが、25日では17日後頃から、75日では37日後頃から上昇する傾向にあった。 要は、この上昇する日に買った株を売れば利益になるということです。


それほど有効性は感じませんが、なんとなく単純移動平均でのサイン発生後の挙動が把握できました。 Ruby 学習の延長で検証作業を行ってみましたが、こうして実際に実用的な何かを作成してみることで知識も深まっていきます。

以上。

Comments