10年前となりますが、平成18年度の学士学位論文にテクニカル分析に関するものを見つけました。
【標 題】自動株式売買プログラムにおけるテクニカル分析指標の有効利用の検証
【日 時】2007年3月9日
【大学名】高知工科大学 情報システム工学科
【研究者】渡辺
「3点チャージ法」の1つの指標を差し替えた手法で、よい利益が得られたようです。
渡辺氏の手法の要約
3点チャージ投資法(MACP・VR・RSI)の売買シグナルには「騙し」が生じる可能性があるそうです。
このため、同じ欠点を持つRSIではなく,VRの欠点を補完するMACDを組み合わせた投資法を用いています。
その結果「乖離幅・出来高・方向性」という3視点から銘柄を見定めることができ,各指標の欠点を補完できると結論づけています。
MACD (MovingAverage Convergence Divergence)
MACDは直近に重きを置く2つの移動平均の位置関係から, 値上がり・値下がり度合いを指す指標です。
一般的に、0を下回れば買いタイミングとし、0を上回れば売りタイミングとして使われます。
まずは、3点チャージ法のおさらい
条件が少し異なります
【買いルール】
いずれかの場合に翌日の寄り付きで購入します。
- MACP(移動平均乖離率:26日)で-7以下
- VR(ボリュームレシオ:25日)で70以下
- RSI(相対力指数:14日)で25以下
【手仕舞いルール】
いずれかの場合に翌日の寄り付きで売却します。
- MACP(5以上)とVR(250以上)とRSI(75以上)の3指標に売りシグナルが出たとき
- 10日間(営業日)を過ぎたとき
バックテスト結果
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 |
株価データ: 日足 銘柄リスト: 日経平均構成銘柄 10/01/05~29/05/15における成績です。 ---------------------------------------- 全トレード数 6508 勝ちトレード数(勝率) 3573(54.90%) 負けトレード数(負率) 2935(45.10%) 全トレード平均利率 1.22% 勝ちトレード平均利率 7.87% 負けトレード平均損率 -6.88% 勝ちトレード最大利率 129.82% 負けトレード最大損率 -61.06% 全トレード平均期間 19.17 勝ちトレード平均期間 19.17 負けトレード平均期間 19.17 ---------------------------------------- 必要資金 \96,605,020 最大ポジション(簿価) \149,105,200 最大ポジション(時価) \150,805,300 純利益 \67,086,990 勝ちトレード総利益 \238,668,800 負けトレード総損失 -\171,581,800 全トレード平均利益 \10,308 勝ちトレード平均利益 \66,798 負けトレード平均損失 -\58,461 勝ちトレード最大利益 \1,132,000 負けトレード最大損失 -\541,000 プロフィットファクター 1.39 最大ドローダウン(簿価) -\24,394,700 最大ドローダウン(時価) -\39,095,300 ---------------------------------------- 現在進行中のトレード数 1 |
論文の提案手法
【買いルール】
いずれかの場合に翌日の寄り付きで売却します。
- MACP(移動平均乖離率:26日)で-7以下
- VR(ボリュームレシオ:25日)で70以下
- MACD(移動平均収束拡散手法:12日~26日)で0以下
【手仕舞いルール】
いずれかの場合に翌日の寄り付きで売却します。
- MACP(5以上)とMACD(0以上)の2指標に売りシグナルが出たとき
- MACP(5以上)とVR(250以上)の2指標に売りシグナルが出たとき
- 10日間(営業日)を過ぎたとき
ソースコード
全ソースコードを表示してもMain関数などに変化がないので、BuyCond/SellCondメソッドだけ載せておきます。
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 |
def BuyCond if ! Close return end macp = DiffMA_value($MACP) vr = VR_value($VR) macd = MACD_value($MACD) if ! (macp && vr && macd) return end return macp <= -7 && vr <= 70 && macd <= 0 end def SellCond if ! Close return end macp = DiffMA_value($MACP) vr = VR_value($VR) macd = MACD_value($MACD) if ! (macp && vr && macd) return end if (5 <= macp && 0 <= macd) || (5 <= macp && 250 <= vr) return 1 elsif $set <= 0 //0以下でも売り条件(期限切れ) return 1 end $set = $set - 1 //1日1回カウンタ減らしておく end |
バックテスト結果
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 |
株価データ: 日足 銘柄リスト: 日経平均構成銘柄 10/01/05~29/05/15における成績です。 ---------------------------------------- 全トレード数 10793 勝ちトレード数(勝率) 5839(54.10%) 負けトレード数(負率) 4954(45.90%) 全トレード平均利率 1.17% 勝ちトレード平均利率 8.07% 負けトレード平均損率 -6.97% 勝ちトレード最大利率 102.48% 負けトレード最大損率 -61.06% 全トレード平均期間 18.74 勝ちトレード平均期間 18.36 負けトレード平均期間 19.19 ---------------------------------------- 必要資金 \105,015,400 最大ポジション(簿価) \161,675,100 最大ポジション(時価) \162,403,600 純利益 \104,735,100 勝ちトレード総利益 \395,018,600 負けトレード総損失 -\290,283,500 全トレード平均利益 \9,704 勝ちトレード平均利益 \67,652 負けトレード平均損失 -\58,596 勝ちトレード最大利益 \704,000 負けトレード最大損失 -\541,000 プロフィットファクター 1.36 最大ドローダウン(簿価) -\37,138,390 最大ドローダウン(時価) -\53,055,000 ---------------------------------------- 現在進行中のトレード数 5 |
利益曲線は次の通りです。
結果に差が感じられません。
売買数は増えましたが、利益率は微減です。
まとめ
うーん・・・。
分析期間、戦略、内容全てが中途半端感がありますね。
ただ、学生時代に自動売買アルゴリズムの検討に手を出したのは恐るべしです。
この研究レベルは超えていかないと、市場で戦う事は難しいことを再確認しました。