対キーエンス株ロジック④ パラメータを調整する

パラメータ調整で平均利益を磨く

ここまで、キーエンス株を例にした具体的なロジック2種類についてそれぞれ1記事と、それらを組み合わせたロジックのパフォーマンスについて1記事、計3本にわたって事例紹介をしてきました。前回ご紹介したように複数ロジックの組み合わせは有効な手法の一つですが、これ以上ロジックは増やさずに、ロジックのパラメータを調整することで利益を向上させる手法を検証します。

ロジックとパラメータ調整

変動率と閾値(しきいち・いきち)を導入

前回までは指標が上がったか下がったかだけを見ていました。今回は指標が「どれだけ」上下したかを評価します。

F=「Δ始値」変動率 =(【前日始値】-【当日始値】)/ 【前日始値】
G=「見えないローソク」変動率=(【前日終値】-【当日始値】)/【前日始値】

としたとき、

① FがPより大きく、かつGがQより大きければ始値(寄り)で売って終値(引け)で買い
② Fが-Pより小さく、かつGが-Qより小さければ始値(寄り)で買って終値(引け)で売り
③ それ以外は見送り

というロジックです。
PやQを閾値(「しきいち」または「いきち」)として、これを変動させた場合の損益グラフを見てみましょう。

ちなみに前回の記事でご紹介した結果は子の閾値をP=Q=0に設定した場合に相当します。

閾値±0.005=±0.5%のときの損益グラフ

まず、閾値をP,Qともに±0.005=±0.5%に設定した場合の損益グラフを見てみましょう。
すなわち
① Fが0.5%より大きく、かつGが0.5%より大きければ始値(寄り)で売って終値(引け)で買い
② Fが-0.5%より小さく、かつGが-0.5%より小さければ始値(寄り)で買って終値(引け)で売り
③ それ以外は見送り
というロジックです。
キーエンス株12.5年分をこのロジックで取引した場合の損益グラフはこのようになりました。

横軸は日付で、縦軸は日々の損益率(%)を足していったものです。売りから入る空売り・信用取引もしていますが、取引は最小単元とし、レバレッジや再投資は行っていません(レバレッジ1固定)。青線は買いで入った場合の損益の合計値、赤線は売りで入った場合の損益の合計値です。緑はこれらを足した合計値です。
買い損益、売り損益、それらの合計損益はそれぞれ118%、159%、277%です。
一方、前回の記事で紹介したものはP=Q=0の場合で、損益グラフはこちらです。

P=Q=0では、買い損益、売り損益、それらの合計損益はそれぞれ124.14%、132.95%、256.73%でした。合計損益の数字はそれ程大きな差はありませんが、P=Q=±0.5のほうが圧倒的によい結果になっています。
まず、目で見て明らかにドローダウンが小さくなっています。さらに、平均利益が大きく向上しています。
P=Q=0では2135回のトレードで256.73%の利益=平均利益0.12%でした。一方、P=Q=±0.5では1359回のトレードで277.45%の利益=平均利益は0.204%と、取引回数が減ったうえに合計利益が増えています。明確にエッジがあるといえそうです。

次に、レバレッジ3倍の利益再投資(複利)ではどうなるか比較してみましょう。
前回検証したもの、すなわちP=Q=0の資産推移は下記のグラフです。

・利益合計:256.73%
・1取引あたりの平均利益:0.120%
・ピークの資産額:5.7億円
・最大ドローダウン:-100%程度
・最終利益:2億7800万円

一方、閾値±0.5%、つまりP=Q=±0.5の資産推移は下記のグラフです。

・利益合計 277.45%
・1取引あたりの平均利益:0.204%

・ピークの資産額:17.5億円
・最大ドローダウン:-60%程度
・最終利益:10.0億円

すべての要素が大幅に改善されました。このパラメータ調整は有望そうです。PとQの値を色々変えてみましょう。

閾値±0.01=±1.0%のときの損益グラフ

同様にP=Q=±1.0%に設定した場合の損益グラフです。

・利益合計 190.39%
・1取引あたりの平均利益:0.243%
・ピークの資産額:17.0億円
・最大ドローダウン:-60%程度
・最終利益:11.2億円

閾値±0.5%の時に比べて利益合計が大きく減少しました。
一方、平均利益は大きく増加しました。
ピーク時の資産やドローダウンはほぼ変わりませんが、最終利益は増えています。
これぞまさに「平均利益が大きいほど複利投資が有利になる」好事例です。

閾値をさらに大きくしてみましょう。

閾値±0.02=±2.0%のときの損益グラフ

同様にP=Q=±2.0%に設定した場合の損益グラフです。

・利益合計 38.48%
・1取引あたりの平均利益:0.149%
・ピークの資産額:340万円程度
・最大ドローダウン:-70%程度
・最終利益:200万円

おや…?なんだか一気に残念な結果になってしまいましたね。
この原因は閾値を厳しくしすぎたせいで取引回数が減りすぎてしまったことです。
要するに機会損失が多発したのです。
P=Q=±0.5%の取引回数は1359回、 P=Q=±1.0%の時は782回だったのに対し、
P=Q=±2.0%では取引回数はわずか259回です。
取引回数が減りすぎると利益合計減少の影響が大きくなってしまいます。
したがって、機会損失を避けながら適切な閾値を探す必要があります。

閾値別 取引回数・損益合計・平均利益の一覧表

次の表は閾値別の一覧です。

このように、閾値が大きくなるにつれて取引回数はどんどん減っていきます。
取引回数が減るにつれて最初のうちは合計利益や平均利益が徐々に上がっていきますが、途中から下がっていきます。こんな感じで模索しながらちょうどいい値を見つける必要があります。

上記の中では利益再投資(複利投資)をする場合、±1.0%が最もいい感じでした。
±0.5%や±0.75%も悪くありません。

次回はこの指標が実際に使えるのか検証してみます。

今回の記事の内容を実際にエクセルで試してみたい方のために

こちらが今回の記事で使ったエクセルの詳細です。
【参考画像】

【計算式

A-E列:HyperSBIからダウンロードしたヒストリカルデータです。これがないとどうにもならないのでエクセルでクオンツしたい方はぜひSBI証券の口座を作ってください。

F列:「Δ始値」=【前日の始値】-【当日の始値】です。
騰落は差額表示ではなく%表示にしています。
F3=(B3-B2)/B2 以下、一番下の行までコピー
です。
※F2は前営業日の前年末12/29の株価から計算しています。

G列:「見えないローソク」=【前日の終値】-【当日の始値】です。
騰落は差額表示ではなく%表示にしています。

G3=(B3-E2)/E2 以下、一番下の行までコピー
※G2は前営業日の前年末12/29の株価から計算しています。

H列:始値で買って終値で売った場合の騰落率です。
H2は前営業日の前年末12/29の株価から計算
H3=(E3-B3)/B3 以下、一番下の行までコピー

I列:H列の反対売買に相当するものです。
I2は前営業日の前年末12/29の株価から計算
I3=-(E3-B3)/B3 以下、一番下の行までコピー

K、LはHとIを「値として貼り付け」を使ってコピペで付けたものです。

G3=(B3-E2)/E2 以下、一番下の行までコピー
※G2は前営業日の前年末12/29の株価から計算しています。

買いと売りの騰落率%をそれぞれそのまま足したものがM列、N列で、M列とN列を足したものがO列です。
M2=K2   M3=M2+K3 以下、一番下の行までコピー
N2=L2 N3=N2+L3 以下、一番下の行までコピー
O2=M2+K2 以下、一番下の行までコピー

これで買いと売りそれぞれの損益率%を合計した値が出ます。

ただし、最初からM、N、O列がある状態でマクロを動かすと1ループごとに再計算を繰り返すので非常に動作が重くなってしまいます。この列を作るのは先にマクロを動かし終わってからにしましょう。

売買判断では
・F>閾値かつG>閾値が正ならKを消す(=買い)
・F<閾値かつG<閾値ならLを消す(=売り)
・上記のいずれにも当てはまらなければ見送り(KもLも消す)
という作業を行います。こんなものをいちいち手作業でやっていては頭が疲れるだけで効率がとても悪いので、マクロを使いましょう。
VBAのスクリプトは表現すると下記のようになります。

Pは「Δ始値」の閾値、Qは「見えないローソク」の閾値です。

***************** VBAスクリプト ******************
Sub buysell()

P = 0.005
Q = 0.005

For カウンタ変数 = 2 To 4000

If Range(“F” & カウンタ変数).Value > P And Range(“G” & カウンタ変数).Value > Q Then
Range(“K” & カウンタ変数).Clear
ElseIf Range(“F” & カウンタ変数).Value < -P And Range(“G” & カウンタ変数).Value < -Q Then
Range(“L” & カウンタ変数).Clear

Else
Range(“K” & カウンタ変数).Clear
Range(“L” & カウンタ変数).Clear

End If
Next

End Sub

*************** VBA ここまで*****************

上記のスクリプトのようにP=0.005、Q=0.005を入れた場合は
・「Δ始値」と「見えないローソク」が0.5%より上昇すれば寄り売り引け買い
・「Δ始値」と「見えないローソク」が-0.5%より下落すれば寄り買い引け売り
という売買判断がなされることになります。

上記のスクリプトでは「Δ始値」の閾値に±P、「見えないローソク」の閾値に±Qを当てていますが、
P、Q、R、Sと4要素に分けて別々に設定するといったことも可能です。