ヒストリカルボラティリティを使った押し目買いの期待値検証(システムトレード)

以前、一緒の職場だった先輩が共同創業した会社が今月上場するそうだ。

 

 
 

今の時価総額が

 

1120億円

 

株主状況を見ると、先輩の持ち分は

 

8.68%

 

ようするに、先輩の持ち株の価値は

 
 

100億円 超え!

 
 
 

マジか……。

 
 

どこで こんなに差がついたんだろう……。

 
 

まぁ先輩の出身大学は

 
 

いつも通り東京大学

 
 

差は学生時代かららついていたけどさ……。

 
 

私は このままじゃ駄目だと思う。

 

今いる職場で汗水鼻水を垂らしながら身を粉にして働いて、僅かばかりの希望にかけて「昇格」を目指すか……

私の技術力は標準レベルも無いけど、「今より給料の良い会社」を見つけ出し転職を目指すか……

商才もビジョンも何をするのも決まってないけど、起業してみるか……

 

老い先短い人生を、本気で考えるしか無い…30代にも言ってたけどさ。

このブログで唯一 人気の記事は

 

システムトレードのバックテスト結果

 

すでにネタ切れだけどネットを調査してストラテジーのバックテストを行ってみた。

 
 

今回は「押し目買いシステム」と書かれたブログにソースコードとバックテストを見つけたよ。

 
 

Heroku | Application Error

このブログではRubyを使って検証している。

ストラテジの原作は次の書籍「高勝率システムの考え方と作り方と検証」に掲載されているらしい。

では詳細を見てみよう。

ヒストリカルボラティリティを使った押し目買いの期待値検証

ブログには次のように書かれていた。

  • 1.トレード対象の銘柄は1株当たり5ドル以上で、200 日単純移動平均線を上回っていること。これによって、長期的な上昇トレンドであることが示される。
  • 2.過去21 日(1カ月)での1日の平均出来高が少なくとも25 万株あること。これで、流動性がある銘柄であることが保証される。
  • 3.100 日HV(ヒストリカルボラティリティ)の値が30 を超える(ヒストリカルボラティリティの定義については付録を参照のこと)。
  • 4.10 日ADX(アベレージ・ディレクショナル・インデックス)の値が30 を超える(ADX の定義については付録を参照のこと)。
  • 5.その銘柄が2日以上、続けて下げて引けていること。
  • 6.今日、その銘柄はY期間移動平均線(Y=4、5、6)よりも少なくともX%(X=4%、5%、6%)下で引けること。この点については、具体例を見れば明らかになるだろう。
  • 7.上のルールが満たされていれば、翌日に今日の終値よりもさらにZ%(Z=4~10%)下に指値を入れて買う。
  • 8.3期間単純移動平均線を上回って引ける日に、終値で手仕舞う

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

意味不明……。

要するにストラテジーは次のようになる。

【買いルール】

  • 終値 > 200日移動平均
  • 100日HV(ヒストリカルボラティリティ) > 30
  • 10日ADX > 30
  • 2日連続陰線
  • 4日移動平均からの乖離率 < -4%

上記を満たす場合に当日に前日比 -4%の位置で売買可能ならば買い。

つまり当日に取引があり、安値が前日比 -4%以下を満たしている場合に買い。

【売りルール】

次を満たす場合に、終値で手仕舞う。

  • 3期間単純移動平均線を上回って引ける日

最初からこう書けば良いのに……。

難しいストラテジではないが、「ヒストリカルボラティリティ」の実装が必要だ。

ヒストリカルボラティリティ(Historical Volatility:HV)

ヒストリカルボラティリティは一度実装した。

斉藤正章氏の「順張り買い」手法の有効性検証(システムトレード)
8月6日です。広島原爆の日です。今日は一日、平和の事を考えて過ごす日です。昨日は、相方がパソコンが落として壊し、修理手続きとなりました。代車じゃあるまいし代パソコン貸してくれるはず無いです・・・。本日、相方が車の左バンパーと...

でも上手く行かなかったなぁ……。

再度見てみよう。

ヒストリカル・ボラティリティ(HV)は、過去の価格の変動率をもとにして計算されるテクニカル指標。

ヒストリカルボラティリティを求めるには、

まず「価格変動率」を求める。

 

価格変動率=log|V(t)÷V(t-1)|

 

ここで、

  • log:自然対数
  • V(t):今日の価格(株価)
  • V(t-1):昨日の価格(株価)

そして、ある一定期間(25日や30日がよく使われる)の価格変動率から標準偏差を求める。

 

1日あたりのヒストリカル・ボラティリティ=標準偏差=分散の平方根

 

この標準偏差が「1日あたりのヒストリカルボラティリティ」だ。

なお、一般的にヒストリカルボラティリティは「年率」で考えることが多いので、年率換算する。

 

ヒストリカルボラティリティ(年率:%)=年間の営業日数の平方根 × 1日あたりのヒストリカルボラティリティ × 100

 

  • 年間の営業日数:250日を使うのが一般的
  • 平方根:√(ルート)のこと

 

まぁ計算式で書くと分かりにくいが、Excelで計算すると分かりやすい。

 

 

ここで、LN 関数は、e を底とする対数(自然対数)を計算する関数。

STDEVPで算出された標準偏差は、1日当たりのHVを表している。

 
 

なお分散は計算コストを減らした書き方ができる。

「平均・分散」の計算を、計算コストを減らして短いソースコードで書く
中間発表が終了。ネットワークが落ちたりと…あまり進んでいませんが…家のADSLも不安定だし…研究は数式ばかりでよく分かりません。ただ、式を分解して最適に変換することでプログラム作成にとって非常に楽になる事が分かりましたの...

最近のパソコンの計算速度は早いが、数学に詳しければアルゴリズムを工夫できる。

バックテスト結果

計算時間は全銘柄で10時間20分。

利益曲線は次のとおり。

おぉ!

意外や意外、単調増加をするんだね。

ただ今年に入って負けてる……。

昨年バックテストしてたら実運用して損失を出していたかもしれない。

また、負ける場合には一週間程度の株の保有になるようなので、実用するにはタフな精神力が必要だ。

更に「手仕舞い」では「終値で手仕舞う」必要があるので

購入している株価を板に張り付いて見ておく

必要がある。

マザーズ市場のみ見てみる

この手法はマザーズ市場だとより安定する。

利益曲線は次のとおり。

2004年は下がっているけど、当時のマザースの値動きは当てにならないので無視して良いだろう。

低位株・新興株にはより有効な手法のようだ。

まとめ

今回、ヒストリカルボラティリティを実現した。

以前は実装に失敗したので、過去の手法にも適用して再度バックテストにチャレンジしたい。

またProtraのライブラリ内に実装すれば、ヒストリカルボラティリティのグラフを可視化することもできそうだ。

色々と進める事はできるがモチベーションが沸かないなぁ……。

ソースコード

バックテストには無料OSSの「Protra」を利用した。

TIlib、Utility、TrendCheck、TOPIXライブラリはGitHubに置いている。

タイトルとURLをコピーしました