「高勝率システムの考え方と作り方と検証」①窓開けを利用したシステムの検証

このエントリーをはてなブックマークに追加

今回から「高勝率システムの考え方と作り方と検証」を読み進めていこうと思います。

先ずはじめに検証していくシステムはギャップ、窓開けを利用したものです。検証方法は今までと同様に33業種別株価指数を用いて行います。

目次

実践

ルール

著書のルールはこのようなものです。

1.私たちは2001 ~2012 年に取引されていた銘柄のうちで、1株5ドル以上で、過去21 取引日(1カ月)に少なくとも平均100 万株の出来高があるものをすべて調べた。こうするのは流動性がある銘柄だけを調べるためだ。

2.当日の2期間RSI の値が5以下で引ける。これで、その銘柄が売られ過ぎというシグナルになる(この水準を極端な売られ過ぎと見る人もいる)。RSI についてもっと知りたい人は、付録を参照してほしい。

3.翌日に、下にギャップを空けて寄り付けば(つまり、翌日の始値が今日の安値よりも安ければ)、寄り付きでその銘柄を買う。

4.あとの章ではいくつかの手仕舞いポイントを見ていくつもりだが、ここでの検証では、その銘柄が3期間移動平均線を上回って引けたら、大引けで手仕舞うことに

ローレンス・A・コナーズ他『高勝率システムの考え方と作り方と検証』(PanRolling、2014年)

ルールは基本的に上記の通りに作ります。しかし、1.については扱うデータが指数であるため、基本的に流動性はあるものだとして、無視します。

システムの構築

リファクタリングを行いましたので、今までと記法が若干変わります。幾分マシになったと思います。コードは下記のとおりです。

class Gap < Strategy

    attr_accessor :closes, :open

    def initialize
      @length = 4
    end

    def set_env
      @closes = Soks.parse(soks[0..-1], :close)
      @open = soks[-1].open
    end

    def decide(env)
      if position
        ave = closes[-3..-1].ave(3)[-1]
        if ave < closes[-1]
          return Action::Sell.new(code,date,closes[-1],1)
        end
      else
        gap_down = soks[-2].low > soks[-1].open
        rsi = closes[-3..-2].rsi(2)[-1]
        if rsi < 5 and gap_down
          return Action::Buy.new(code,date,open,1)
        end
      end
      return Action::None.new(code,open)
    end
  end

チャートを書いてみます。

profit_histgram

良さそうですね。ストップロスをおいてないので、下記のようなトレードもいくつかあります。

profit_histgram

検証

2007年から2017年の33業種別株価指数を用いて個別にバックテストを行います。結果は下記のとおりです。

Code Income Trades Win PF Average DD
I201 5.61 207 62.32 1.03 0.03 -20.69
I202 -63.44 232 55.6 0.8 -0.27 -38.21
I203 -33.49 222 58.56 0.86 -0.15 -17.84
I204 19.73 215 61.4 1.13 0.09 -26.23
I205 -51.1 216 57.87 0.77 -0.24 -24.43
I206 -71.82 196 58.16 0.72 -0.37 -20.02
I207 -18.97 232 60.78 0.91 -0.08 -23.05
I208 -19.21 213 56.81 0.89 -0.09 -22.66
I209 -91.36 210 59.05 0.69 -0.44 -34.54
I210 -80.11 229 53.28 0.74 -0.35 -34.69
I211 -55.63 234 58.55 0.81 -0.24 -39.97
I212 -168.23 225 51.11 0.58 -0.75 -21.94
I213 -76.3 237 54.01 0.76 -0.32 -37.16
I214 0.31 228 64.47 1.0 0.0 -23.05
I215 -72.11 243 57.61 0.77 -0.3 -29.59
I216 -22.5 251 62.15 0.91 -0.09 -35.14
I217 -131.29 242 57.02 0.6 -0.54 -50.09
I218 -39.33 228 64.91 0.83 -0.17 -31.54
I219 -57.36 235 58.3 0.78 -0.24 -35.18
I220 -56.78 197 58.38 0.76 -0.29 -57.3
I221 -11.47 202 59.41 0.93 -0.06 -17.52
I222 -220.58 226 49.12 0.52 -0.98 -46.51
I223 15.35 207 59.42 1.09 0.07 -23.22
I224 -38.71 233 58.37 0.85 -0.17 -24.71
I225 -24.13 199 55.78 0.86 -0.12 -13.91
I226 -124.51 231 56.71 0.61 -0.54 -40.16
I227 -41.08 212 56.13 0.79 -0.19 -15.82
I228 -120.33 225 52.89 0.66 -0.53 -30.22
I229 -211.01 238 46.64 0.53 -0.89 -71.6
I230 -86.99 219 55.25 0.72 -0.4 -38.89
I231 -145.66 228 54.39 0.64 -0.64 -34.43
I232 -87.75 232 55.17 0.75 -0.38 -48.73
I233 -0.48 224 62.95 1.0 -0.0 -25.24
平均 -66.1 223.0 57.3 0.8 -0.3 -31.9
偏差 59.47 13.71 4.0 0.15 0.26 12.56

勝率は57%と高めですが、とても使えるものではないですね。著書の結果では勝率は75%、平均損益も0.7%とかなり良いシステムなのですけども。個別銘柄を対象にした場合は結果が変わるのかもしれません。

養命酒2540を見てみます。2000年から2017年のデータを使っています。

======================================================
2540
net income:               170.8798905150817
profit | loss:            328.618207829292    | -157.73831731421015
average:                  0.5974821346681178
pf:                       2.1
max profit | max loss:    11.243243243243244     | -10.964083175803403
trades | wins | looses:   286     | 204     | 82
wins{%}                   71.3
max series of wins:       14
max series of looses:     5
average span{win}:        1
average span{loose}:      3
max drow down:            -13.085295297015524
bunkrupt:                 0.0
======================================================

かなりいい成績ですね。損益曲線を調べてみます。

profit_histgram

途中スランプはあったとしても、長期に渡って有効であるように感じます。

一方で、ソフトバンク9984を見てみますと、次のようになります。

======================================================
9984
net income:               -127.40634943983551
profit | loss:            726.6759200390887    | -854.0822694789244
average:                  -0.33006826279750134
pf:                       0.9
max profit | max loss:    17.22488038277512     | -29.369627507163326
trades | wins | looses:   386     | 232     | 154
wins{%}                   60.1
max series of wins:       13
max series of looses:     8
average span{win}:        1
average span{loose}:      4
max drow down:            -118.06053901093593
bunkrupt:                 0.0
======================================================

損益曲線を見てみます。

profit_histgram

なんだこれは。。。 序盤の暴落を抜けたあとは、比較的良いトレードを行っているようですが、序盤何に一体何があった?

チャートを見てみると、エグい暴落局面を拾っているようですね。

profit_histgram

profit_histgram

連日のストップ安なんかの局面はルールの1.を加えることで回避できた可能性もあります。

まとめ

ギャップを利用したシステムについて検証を行いました。33業種別株価指数ではあまり優位な結果を得ることができませんでしたが、個別に見ていくと良い成績が得られる可能性があることがわかりました。

Recent Entries
Categories
    Tags
    Archives
    Search