斉藤正章氏の「順張り買い」手法の有効性検証(システムトレード)

8月6日です。広島原爆の日です。今日は一日、平和の事を考えて過ごす日です。

昨日は、相方がパソコンが落として壊し、修理手続きとなりました。代車じゃあるまいし代パソコン貸してくれるはず無いです・・・。

本日、相方が車の左バンパーとボディーを派手に壁で擦り、板金・塗装業者を調査中です。ディーラーに依頼したらマージン取られるだけです・・・。。

そして、8月6日の深夜、家で飼ってるノコギリクワガタが虫かごから逃げた事を発見し部屋中を探すハメに・・・。キチンと閉めた?いや事実逃げてるし・・・・。

・・・・勘弁してください。

朝6:45に家を出て~夜0:30に家に戻る生活なのです・・・・、仕事できない私が悪い?そうですね・・・(イラ。

パトラッシュ・・・僕はもう疲れたよ。。

 

 

では、本題。

斉藤 正章(さいとう まさあき)氏は、システム開発会社で勤務しながら2001年に元手30万円で株式投資を開始し2年9ヶ月で1億1千万円にした個人投資家として注目を集めたトレーダーです。

斉藤正章氏の手法の有効性検証(protraシストレ)」でも紹介しています。

この方の手法は以前サンプル実装を利用してバックテストをしましたが結果は良くなかったです。

ですが、Web上に「システムトレードで11年間で10勝1敗の実績をあげている私の投資手法」という記事を載せており、それによると未だに勝ち続けているようです。

であれば、再度検証をしてみる必要があります。

利用しているシステムトレードの代表的な3つの戦略が丁寧に書かれています。

  • 「順張り買い」戦略
  • 「空売りデイトレ」戦略
  • 「逆張り」戦略

今回は「順張り買い」戦略をProtraで実現します。

「順張り買い」戦略

【仕掛け条件】

次をすべて満たすとき、仕掛けとなります。

  • 1) 過去500日間のボラティリティがX%以上(10%~20%)
  • 2) 過去100日間のボラティリティがY%より小さい(1%~9%)
  • 3) 終値が過去50日間の最高値を更新(レンジを上抜けした銘柄を選ぶ)
  • 4) 終値が過去50日間の終値の最高値を更新した銘柄が、市場全体で50銘柄以上ある場合

X%の部分は10%~20%、Y%の部分は1%~9%の数値との事です。

この2つの条件で、「もともと値動きがあった銘柄が、直近2~3ヶ月間は値動きが乏しく、もみ合いの状態が続いている」銘柄を探しているとのことです。

【手仕舞い条件】

以下のいずれかを満たすとき、手仕舞いとなります。

  • 利食い:終値と3日移動平均乖離率が+15%以上になった場合
  • 損切り:終値が過去20日間の終値の最安値を更新した場合

「ボラティリティ」と乖離率と勘違いしていたので、ググって調べました。

「ボラティリティ」とは何か?

ボラティリティは、2つあります。

「ヒストリカルボラティリティ」
「インプライドボラティリティ」

「ヒストリカルボラティリティ」は、過去n日間の前日比率に基づき、将来のm日間の価格変動率を求める指標です。

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

計算式は次のとおりです。

HV=ヒストリカル・ボラティリティ=標準偏差=分散の平方根

分散=((データ-平均値)の2乗)の総和÷個数

データ-平均値=前日比-前日比平均

前日比 = Log(終値) ÷ 1日前の終値

 
 
「標準偏差」を愚直にprotraで実現すると面倒です。

ですが理系の強み。

それは数学の美しさに気づいている事です。

 
「平均・分散」の計算を、計算コストを減らして短いソースコードで書くで、説明済ですが、分散を求めるには平均を求める必要性があるため式の変換が肝です。


 

 

 

 

これで、平均を先に求める必要はありません。

ここで、

a=前日比
n=n日

です。

困りごと

上記サイトには「ボラティリティ」としか書かれていません。ヒストリカル・ボラティリティで正しいのかな・・

また、サイトにソースコードが載っているものの、データベースからデータ取り出し部分だけで、肝心の計算式が分かりません。

再現させないための斎藤氏の策略にさえ感じます・・・。

一般には、

  • ローリスク(標準偏差)0%~12.0%
  • ミドルリスク(標準偏差)12.0%~22.0%
  • ハイリスク(標準偏差)22.0%以上

です。

ですが100日HV、500日HVを計算させると、この範囲内に収まりません・・・

仕方なく、数値を大きくするために「×245の平方根」して、年間ボラティリティを求めてます。

ソースコード

Utility、TrendCheckライブラリはGitHubに置いています。

バックテスト結果

結果は、売買銘柄が一つもありません。

「a1 >= 30 && 20 > a2」として結果を出してみました。

東証一部だけの計算に丸2日かかりました・・・

利益曲線はこちら。


 

 

【写真】ARuFa氏

こんなグラフ期待してないです・・・・。

何かが違います・・・・。

でも、もう何もかも調べる気になれません・・・・。

色々、疲れた・・・・。

まとめ

ボラティリティが下記の両方を満たす数値が見つかりません。

  • 1) 過去500日間のボラティリティがX%以上(10%~20%)
  • 2) 過去100日間のボラティリティがY%より小さい(1%~9%)

そして、Protraの標準関数で出来ない指標が増えてきました。

こうなると「Protra使う意味あるの?」

と思えてきます。

分足や板読みを使った株取引(日本株)であれば、マネックス証券のTradeStation一択です。

日足であれば、最近はSmart Tradeのサービスであるクオンテックス(QuantX)という、株式投資をPythonで行うための無料プラットフォームがあります。

開発したアルゴリズムはSmart Tradeのマーケットプレイスでも販売できます。

が・・・ゼロから作る方が早いかなあ…。

バグだらけの自分のプログラムだと信じれるものが何もなくなるね。

でも、protraの困りごとは次のとおり。

  • 独自言語での実装で、便利なライブラリなどを使えない
  • 自動パラメータ最適化ができない
  • ディープラーニングなどを試せない
  • ファンダメンタル分析など、新規概念を試せない
  • WindowsでGUIありき
  • 速度が激遅(自作の方が遅いかも・・)

今までの経験上、自作すると満足して使わず終わってるのが怖い・・

ネットネット株判定、うねり取り練習ツールなどなど。

OmegaChartは、ファンダメンタル分析も取り入れる拡張されてました。

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