Ruby + MySQL で自作した株価取得のシステム。 全市場(東京・大阪・名古屋・札幌・福岡)の全銘柄の2000年からの全取引データを取得しています。
これまで、単純移動平均(= SMA)や指数移動平均線(= EMA)、またそれらのゴールデンクロス・デッドクロスを利用してを買いサイン・売りサインの動向を検証してみました。 今回は、「MACDシグナル」というものを利用して同様の検証を行いました。
※個人的な記録ですので、興味が無ければ読み飛ばしてください。 ※全体的にどんな傾向があるのかを把握するのと、Ruby の学習が目的です。 ※検証結果を取り纏めたものなので、掲載している結果自体ではあまり有効性は感じません。 ※ただ、個別に調べてみるとおもしろいものとなります。
まず、「MACD」とは「移動平均・収束・拡散法」(= Moving Average Convergence/Divergence の略) で、「短期EMA - 長期EMA」 の値となります。 そして、「MACDシグナル」とは MACD の単純移動平均で表されます。 移動平均で使用される日数は、以下の日数が定番のようです。
- MACDの短期EMA ・・・ 12日
- MACDの長期EMA ・・・ 26日
- MACDシグナルのSMA ・・・ 9日
MACD の値が MACDシグナル の値を上抜けた場合・下抜けた場合を買いサイン・売りサインとする考え方です。
以下に、前提条件・検証結果を掲載します。
1.前提条件
以降に出てくる Long は買いサイン、Short は売りサインを表しています。
1.定義
何を以って、買いサイン・売りサインと見なすかですが、今回は3種類考えてみました。
DEF-1
その日のMACDがMACDシグナルを上抜けた場合を「買いサイン」とする
その日のMACDがMACDシグナルを下抜けた場合を「売りサイン」とする
DEF-2
上記 DEF-1 の「買いサイン」がマイナス圏(MACD < 0)で発生した場合を「買いサイン」とする
上記 DEF-1 の「売りサイン」がプラス圏(MACD > 0)で発生した場合を「売りサイン」とする
DEF-3
上記 DEF-2 の「買いサイン」発生後、新たに売買サインが発生せずにゼロラインを上抜けた場合を「買いサイン」とする
- 上記 DEF-2 の「売りサイン」発生後、新たに売買サインが発生せずにゼロラインを下抜けた場合を「売りサイン」とする
この図は上記の DEF-2、DEF-3 を表したもの。 実際の検証では、MACDの短期EMA・長期EMA、MACDシグナルのSMAは定番の 12日・26日・9日を使用しました また、調整後終値(株式分割があった場合の調整値)を考慮していません。
2.検証銘柄と検証期間
2012年2月17日現在上場している全市場の3,599銘柄を対象に、2000年1月1日から2011年12月31日の株価データを使用して検証しました。 また、複数の市場に上場している銘柄については、優先市場のみで検証しました。 ※全取引件数は 7,960,496 件
2.検証結果
1.サインが発生した件数
1 2 3 4 |
|
当然、DEF-1よりDEF-2の方が、DEF-2よりDEF-3の方が絞られてくる。
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 44 45 46 47 48 49 50 51 52 53 54 |
|
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 52 53 54 |
|
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 52 53 54 |
|
特に大きな特徴はないように思えるが、やはりDEF-1よりもDEF-2、定義2よりもDEF-3の方が絞られてくる。
3.何日後に最も上昇(買い)/下降(売り)したか
買いサイン発生後、何日後に最も上昇したか、 売りサイン発生後、何日後に最も下降したか、を検証。
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 |
|
DEF-1・DEF-2・DEF-3ともに、買い(売り)サインが発生した翌日と26日後に大きく上昇(下降)している。 ※移動平均を計算するのに26日を使用していることから26日後までしか検証していない。
4.買いサイン発生から売りサイン発生までの間隔と差が + か 0 か − を集計
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
DEF-1,2,3 ともに買いサインが発生した直後は株価が下降するが、DEF-1では14日後頃から、DEF-2では12日後頃から、DEF-3では37日後頃から上昇する傾向にある。
これまでの、単純移動平均(= SMA)や指数移動平均線(= EMA)、またそれらのゴールデンクロス・デッドクロスを利用したものより実用性を感じます。 冒頭でも書いたが、個別の銘柄について検証してみるとおもしろいです。 Ruby 学習の延長で検証作業を行ってみましたが、こうして実際に実用的な何かを作成してみることで知識も深まっていきます。
以上。