元証券マンのユーチューバーは信用倍率を順張りで利用していた。
信用倍率を使った3点チャージ法の期待値検証(システムトレード)
「信用取引残高」は 相場の先行きを予測するのに活用できる。という事で前回システムトレードソフト「Protra」で使えるように試みた。自分の用途にデータを限定して「400MB」というサイズまで落とすことができたけど、こ...
逆張りでは利益曲線が悪くなったので今回は順張りで試してみる。
でも順張り手法ってあまり実装した経験がないな。
数年前に555hn氏というイザナミ利用者がYouTube上にシステムトレードの順張り手法を説明していた。
555hn氏の逆張り・順張り複合法有効性検証(システムトレード)
目的を完全に見失ってますが・・555hn氏というイザナミを利用されている方がYouTube上にシステムトレードの順張り・逆張りの統合方法を説明されているので、バックテストします。555hn氏の逆張り・順張り複合法有効性検証...
既にYouTube動画は削除されたようだが今回はこれを使ってみる。
結論を先に書くと、バックテストの結果は良くなってない。
このような場合は、日記を書くのも適当になるなーー。
555hn氏の順張り手法+信用倍率の期待値検証
ストラテジーは次の通り。
【銘柄抽出】
- 全銘柄&売買代金1千万円以上&300円以下&50円以上の銘柄
【買いルール】
- 日足終値が75日間の最高値を超えた
- 【今回追加】信用倍率が3.0より小さい
- 翌日の寄付きで買いを仕掛ける
【手仕舞いルール】
- 終値が買値より5%以上になる(利益確定)
- 終値が買値より-5%以下になる(損切)
- 保有日数が10日以上になる
- 翌日の寄付きで決済売り
「300円以下の全銘柄」となっている点から、オリジナルは中小企業狙いの手法に感じる。
バックテスト結果
555hn氏の順張りオリジナル結果
計算速度は約50分。
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
株価データ: 日足 銘柄リスト: プライム貸借20230110 2000/02/04~2023/01/06における成績です。 ---------------------------------------- 全トレード数 2041 勝ちトレード数(勝率) 969(47.48%) 負けトレード数(負率) 1072(52.52%) 全トレード平均利率 0.76% 勝ちトレード平均利率 7.62% 負けトレード平均損率 -5.44% 勝ちトレード最大利率 56.91% 負けトレード最大損率 -39.18% 全トレード平均期間 5.66 勝ちトレード平均期間 5.56 負けトレード平均期間 5.76 ---------------------------------------- 必要資金 ¥3,582,700 最大ポジション(簿価) ¥2,994,200 最大ポジション(時価) ¥3,255,300 純利益 ¥7,678,900 勝ちトレード総利益 ¥37,115,000 負けトレード総損失 -¥29,436,100 全トレード平均利益 ¥3,762 勝ちトレード平均利益 ¥38,302 負けトレード平均損失 -¥27,459 勝ちトレード最大利益 ¥307,500 負けトレード最大損失 -¥202,500 プロフィットファクター 1.26 最大ドローダウン(簿価) -¥1,107,100 最大ドローダウン(時価) -¥1,091,500 ---------------------------------------- 現在進行中のトレード数 1 ---------------------------------------- 平均年利 8.93% 平均年利(直近5年) -3.76% 最大連勝 10回 最大連敗 11回 ---------------------------------------- [年度別レポート] 年度 取引回数 運用損益 年利 勝率 PF 最大DD 2023年 4回 -¥11,900円 -0.33% 25.00% 0.54倍 -2.52% 2022年 71回 -¥96,100円 -2.68% 43.66% 0.87倍 -13.92% 2021年 44回 ¥45,200円 1.26% 47.73% 1.10倍 -10.81% 2020年 24回 -¥275,600円 -7.69% 41.67% 0.35倍 -19.61% 2019年 27回 -¥335,400円 -9.36% 25.93% 0.32倍 -19.75% 2018年 14回 ¥1,300円 0.04% 42.86% 1.01倍 -11.45% 2017年 67回 ¥91,700円 2.56% 55.22% 1.11倍 -29.06% 2016年 96回 ¥843,500円 23.54% 59.38% 2.00倍 -14.12% 2015年 86回 ¥80,500円 2.25% 52.33% 1.07倍 -18.60% 2014年 121回 ¥1,456,700円 40.66% 60.33% 1.92倍 -25.22% 2013年 171回 ¥1,828,300円 51.03% 54.97% 1.62倍 -29.56% 2012年 194回 ¥1,441,400円 40.23% 59.28% 1.71倍 -30.43% 2011年 142回 ¥54,300円 1.52% 48.59% 1.02倍 -26.94% 2010年 123回 ¥206,300円 5.76% 54.47% 1.11倍 -30.81% 2009年 157回 ¥765,200円 21.36% 43.95% 1.26倍 -35.55% 2008年 46回 ¥32,900円 0.92% 50.00% 1.04倍 -20.16% 2007年 43回 -¥10,700円 -0.30% 44.19% 0.98倍 -25.94% 2006年 24回 ¥0円 0.00% 50.00% 1.00倍 -23.00% 2005年 102回 ¥1,020,600円 28.49% 58.82% 1.85倍 -19.39% 2004年 101回 -¥61,300円 -1.71% 53.47% 0.96倍 -29.51% 2003年 180回 ¥1,307,900円 36.51% 54.44% 1.55倍 -23.48% 2002年 81回 -¥355,300円 -9.92% 38.27% 0.69倍 -20.74% 2001年 72回 -¥312,400円 -8.72% 40.28% 0.77倍 -39.18% 2000年 51回 -¥38,200円 -1.07% 47.06% 0.96倍 -20.09% |
利益曲線は次の通り。
2017年頃から急に挙動がオカシクなる。日銀が株に介入した時期だ。
これ昨年も今年も結果が良くないね。
利用していたら発狂レベルだわ……。
555hn氏の順張りに信用倍率を追加してみる。
計算速度は約2時間。
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
株価データ: 日足 銘柄リスト: プライム貸借20230110 2000/06/05~2023/01/06における成績です。 ---------------------------------------- 全トレード数 617 勝ちトレード数(勝率) 289(46.84%) 負けトレード数(負率) 328(53.16%) 全トレード平均利率 0.63% 勝ちトレード平均利率 6.10% 負けトレード平均損率 -4.20% 勝ちトレード最大利率 35.11% 負けトレード最大損率 -35.55% 全トレード平均期間 6.12 勝ちトレード平均期間 5.82 負けトレード平均期間 6.39 ---------------------------------------- 必要資金 ¥2,826,700 最大ポジション(簿価) ¥2,953,300 最大ポジション(時価) ¥3,116,600 純利益 ¥1,822,500 勝ちトレード総利益 ¥8,695,000 負けトレード総損失 -¥6,872,500 全トレード平均利益 ¥2,954 勝ちトレード平均利益 ¥30,087 負けトレード平均損失 -¥20,953 勝ちトレード最大利益 ¥168,300 負けトレード最大損失 -¥202,500 プロフィットファクター 1.27 最大ドローダウン(簿価) -¥622,200 最大ドローダウン(時価) -¥676,800 ---------------------------------------- 現在進行中のトレード数 0 ---------------------------------------- 平均年利 2.69% 平均年利(直近5年) -1.85% 最大連勝 10回 最大連敗 10回 ---------------------------------------- [年度別レポート] 年度 取引回数 運用損益 年利 勝率 PF 最大DD 2023年 3回 -¥25,900円 -0.92% 0.00% 0.00倍 -2.52% 2022年 15回 -¥62,100円 -2.20% 53.33% 0.64倍 -13.92% 2021年 24回 ¥58,200円 2.06% 50.00% 1.28倍 -8.67% 2020年 11回 -¥62,600円 -2.21% 45.45% 0.65倍 -19.61% 2019年 11回 -¥168,400円 -5.96% 9.09% 0.07倍 -8.80% 2018年 2回 ¥73,900円 2.61% 50.00% 8.25倍 -2.11% 2017年 22回 -¥119,700円 -4.23% 54.55% 0.65倍 -29.06% 2016年 27回 ¥200,800円 7.10% 59.26% 2.16倍 -8.70% 2015年 3回 ¥104,000円 3.68% 66.67% 10.12倍 -2.33% 2014年 8回 ¥98,300円 3.48% 62.50% 3.86倍 -3.54% 2013年 39回 ¥867,300円 30.68% 71.79% 4.26倍 -9.55% 2012年 83回 ¥388,400円 13.74% 53.01% 1.52倍 -10.53% 2011年 54回 -¥448,200円 -15.86% 40.74% 0.45倍 -25.91% 2010年 54回 ¥198,100円 7.01% 59.26% 1.47倍 -8.65% 2009年 68回 -¥5,900円 -0.21% 42.65% 1.00倍 -35.55% 2008年 17回 ¥2,900円 0.10% 52.94% 1.02倍 -6.53% 2007年 15回 -¥30,700円 -1.09% 46.67% 0.82倍 -7.18% 2006年 5回 ¥26,900円 0.95% 60.00% 2.27倍 -2.59% 2005年 26回 ¥67,100円 2.37% 57.69% 1.36倍 -6.46% 2004年 17回 ¥129,200円 4.57% 58.82% 1.81倍 -13.74% 2003年 64回 ¥490,000円 17.33% 50.00% 1.76倍 -11.30% 2002年 28回 -¥87,400円 -3.09% 42.86% 0.68倍 -9.50% 2001年 18回 ¥55,600円 1.97% 50.00% 1.15倍 -26.14% 2000年 3回 ¥72,700円 2.57% 100.00% ∞倍 0.00% |
利益曲線は次の通り。
あれ……、悪くなってしまった……。
ボロボロじゃん。
おわりに
結局、信用倍率を使っても逆張り・順張りどちらでも勝率が落ちてしまった。
プロフィットファクターは多少良くなっているけど実用には耐えれるレベルではなかった。
信用倍率の使い方が間違っているのかな?
もう少し考察してみるか……。
ソースコード
バックテストには無料OSSの「Protra」を利用した。
TIlib、Utility、TrendCheck、TOPIXライブラリはGitHubに置いている。
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 |
# loop-type: date-only //============================== require "TIlib" require "Utility" require "TrendCheck" require "Sinyo2023v2" //============================== codes = CodeList if $code_num && $code_num != Length(codes) Print("前回と異なる銘柄リストでは実行できません。") Dummy end $code_num = Length(codes) //グローバル変数を初期化 if (!$__INIT__) $budgetIni = 3000000 $buyUnit = 500000 // 1回の購入資金 (100万円) $MaxHoldDay = 5 // 最大保有日数 $shortSelling = 0 // 空売り戦略 Yes(1)/No(0) $Interest = 1 // 無制限(0) / 単利(1) / 複利(2) $reverse = 1 // 購入順序 昇順(0) / 降順(1) $udcount = 0 // 騰落レシオ利用数 Init() //------------------------------------------------ // 3点チャージ法 $HL75 = [$code_num] // 値上がり銘柄のカウント ------------------------ InitDone() // 騰落レシオ初期化 $__INIT__ = 1 end // シリアル値を年、月、日に変換する def DMYToExcelSerialDate() l = (int)(( 1461 * ( Year + 4800 + (int)(( Month - 14 ) / 12) ) ) / 4) m = (int)(( 367 * ( Month - 2 - 12 * ( ( Month - 14 ) / 12 ) ) ) / 12) n = (int)(( 3 * ( (int)(( Year + 4900 + (int)(( Month - 14 ) / 12) ) / 100) ) ) / 4) serialDate = l + m - n + Day - 2415019 - 32075; return serialDate end def Main(i) //================================================== // 条件(買条件, 売条件共通部分) //================================================== //まだ上場していない銘柄は株価データがないためnullが返る if (Index == null) return end if ($order[(int)Code] == -1) $order[(int)Code] = i end //================================================== if ! ($HL75[i]) // 銘柄ごとのグローバル変数を初期化する $HL75[i] = HighLow_new(75) // グローバル変数を初期化 $hold[i] = 0 return end // 指標の計算を1日進める HighLow_next($HL75[i]) // ここまで ======================================== //================================================== // 保有してない→購入 //================================================== if ! ($hold[i]) // 1) 株価の高い場合はランキングしない[300]円以下 // 2) 売買代金の少ない場合はランキングしない(売買代金の[3]日間平均が[1]千万円以下の場合) if ! (Volume && Close && {-1}Volume && {-1}Close && {-2}Volume && {-2}Close) return end if ! (SalesValue()/3 + {-1}SalesValue()/3 + {-2}SalesValue()/3 > 10000) return end if ! (300 >= Close && Close >= 50) return end // 購入ロジック high = HighLow_high($HL75[i]) if (high && Close >= high) if (GetSHINYO($serialdate) < 3.00) PrintLog("購入") $buyflag[i][0] = 1 // 購入フラグ $buyflag[i][1] = high // 好きなパラメータをもとにソート $buyflag[i][2] = $buyflag[i][0] // 呪文(複数ロジック用) $buyCnt = $buyCnt + 1 end end //================================================== // 保有している→売却 //================================================== elsif ($hold[i]) if $set[i] < 1 $set[i] = 1 return end $set[i] = $set[i] + 1 //================================================== // 売買(売り) //================================================== if (Close >= 1.05 * $buy[i]) PrintLog("利益確定") $sellflag[i] = 1 $set[i] = 0 elsif (0.95 * $buy[i] >= Close) PrintLog("利益確定") $sellflag[i] = 1 $set[i] = 0 elsif ($set[i] >= $MaxHoldDay) PrintLog("手仕舞い") $sellflag[i] = 3 $set[i] = 0 end end end //==================== // 売り処理 //==================== def Sell_(i) if ($sellflag[i]) Selling(i) $sellflag[i] = 0 $buyflag[i][2] = 0 end // 使用した$buyflag 配列を初期化 if ($buyflag[i][0]) $buyflag[i][0] = 0 $buyflag[i][1] = 0 end end //==================== // 買い処理 //==================== def SortBuy() if ! (HasPricedata(Close)) return end $long = 0 $long = Num($buyUnit, Close) codeset = $order[(int)Code] Buying(codeset) end //==================== // 銘柄コードを変えながらMain関数,BuySell関数を実行 //==================== Print("-------------------------------------------------") Print("日付 = "+ Year + "/" + Month + "/" + Day) $serialdate = DMYToExcelSerialDate() $buyCnt = 0 // 購入数初期化 i = 0 while (i < $code_num) {codes[i]}Main(i) i = i + 1 end if ($buyCnt) sortList = SelectionSort(10, 1) cnt = 0 while (cnt < $buyCnt) if ! (sortList[cnt]) break end cnt = cnt + 1 end i = 0 while i < cnt {sortList[i]}SortBuy() i = i + 1 end end //---------------------------------------------- i = 0 while i < $code_num {codes[i]}Sell_(i) i = i + 1 end |