mk-mode BLOG

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

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

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

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

こんばんは。

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

前回は、単純移動平均値を上回った場合・下回った場合を買いサイン・売りサインと定義して検証してみました。

今回は「指数移動平均」というものを使用して同様の検証をしてみました。 ※全体的にどんな傾向があるのかを把握するのと、Ruby の学習が主な目的です。

指数移動平均とは、簡単に言えば、単純移動平均よりもトレンドを追うのに適した分析方法で、EMA(Exponential Moving Average)と略されます。 計算式は以下のとおり。

EMA

その他、指数移動平均の詳細は各自調べてください。

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

1.前提条件

1.定義

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

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

としました。

SIGNAL_MA

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

2.検証銘柄と検証期間

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

2.検証結果

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

1
2
3
[SIGN ]    (  5 )    ( 25 )    ( 75 )
[Long ] 1,070,660   503,130   280,492
[Short] 1,071,817   504,749   282,523

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

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

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

1
2
3
4
5
6
7
8
9
10
11
[SIGN][DAYS]  [UP   ] (     %)  [EVEN ] (     %)  [DOWN ] (     %)
Long  (  1 )  424,875 (39.72%)  121,450 (11.35%)  523,336 (48.93%)
Long  (  2 )  445,579 (41.68%)   75,698 ( 7.08%)  547,762 (51.24%)
Long  (  3 )  453,832 (42.47%)   59,900 ( 5.61%)  554,794 (51.92%)
Long  (  4 )  459,022 (42.97%)   51,543 ( 4.83%)  557,562 (52.20%)
Long  (  5 )  461,384 (43.22%)   45,533 ( 4.27%)  560,646 (52.52%)
Short (  1 )  494,829 (46.18%)  126,978 (11.85%)  449,737 (41.97%)
Short (  2 )  509,076 (47.53%)   81,557 ( 7.61%)  480,524 (44.86%)
Short (  3 )  511,666 (47.79%)   64,925 ( 6.06%)  493,965 (46.14%)
Short (  4 )  511,615 (47.81%)   55,735 ( 5.21%)  502,645 (46.98%)
Short (  5 )  514,605 (48.12%)   49,462 ( 4.62%)  505,413 (47.26%)

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

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

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

1
2
3
4
5
6
[DAYS]   [Long ]  [Short]
(  1 )   363,779  323,152
(  2 )   233,776  224,066
(  3 )   203,713  208,903
(  4 )   209,889  226,020
(  5 )   295,937  333,675

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
[DAYS]    [UP   ]   [EVEN ]   [DOWN ]
(  1 )          0         0   375,434
(  2 )      6,307     9,337   182,728
(  3 )     20,236    10,653    96,944
(  4 )     32,102     8,220    50,551
(  5 )     36,885     5,216    25,623
(  6 )     35,342     2,993    12,094
(  7 )     30,199     1,616     5,921
(  8 )     24,399       777     2,794
(  9 )     20,137       419     1,421
( 10 )     15,466       213       768
   :          :         :         :

買いサインが発生した直後は株価が下降するが5日後頃から上昇する傾向にある。 25日・75日でEMAを計算して検証した結果は掲載していないが、25日では12日後頃から、75日では25日後頃から上昇する傾向にあった。


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

以上。

Comments