信用取引(制度信用)の場合、6カ月以内に反対売買により決済するというルールがある。
買いポジションがあるなら半年以内に必ず売らなければいけない。売りポジションなら買戻し決済をする必要がある。
この時、
- 買い残と売り残が同数であれば、信用倍率は1倍
- 買い残 > 売り残であれば、1倍より大きくなる
- 買い残 < 売り残であれば、1倍より小さくなる
そして忘れちゃいけないのが
株式マーケットは機関投資家や海外投資家、一部の資金が潤沢にある大口投資家が動かしている。
彼らの思惑と反対にいくと、大抵やられてしまう。
彼らは需給が一方に偏っている時に稼ぎに来る。
だからターゲットにしているのは信用取引をしている人。
という事を先月書いた。
他のサイトでも同じような事が沢山書かれている。
これだけは覚えておこう!
信用倍率が1倍を切っている銘柄(空売りが多い)
→株価上昇が継続
→空売りしている投機筋が耐えられなくて買い戻しする可能性
→「踏み上げ」をねらって「買い」を入れるのが有効なことも
で、先月「逆張り手法」「順張り手法」に信用倍率を組み込んでみたけど、全く結果は良くなかった。
今回は「信用倍率」だけで「買い」の判断することで、どれだけの期待値があるのか?を実験してみた。
「信用倍率が1倍を切っている銘柄」の「買い」の期待値検証
上で紹介したダイヤモンドオンラインに次の図が掲載してある。
この図を参考に手法を次のように決めてみた。
【銘柄抽出】
- 売買代金1千万円以上&終わり値200円以上の銘柄
- プライム銘柄(借貸銘柄)
【買いルール】
- 本日の買い残 < 本日の売り残(信用倍率1.0より小さい)
- 一週間前の買い残 > 一週間前の売り残(信用倍率1.0より大きい)
- 一週間前の信用倍率 < 二週間前の信用倍率
- 一週間前の終値 < 本日の終値
- 翌日の寄付きで買いを仕掛ける
【手仕舞いルール】
- 終値が買値より10%以上になる(利益確定)
- 保有日数が10日以上になる
- 翌日の寄付きで決済売り
バックテスト結果
計算時間はプライムの貸借銘柄だけで5時間。
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/01/17~2023/01/05における成績です。 ---------------------------------------- 全トレード数 3670 勝ちトレード数(勝率) 1824(49.70%) 負けトレード数(負率) 1846(50.30%) 全トレード平均利率 0.20% 勝ちトレード平均利率 3.66% 負けトレード平均損率 -3.22% 勝ちトレード最大利率 46.89% 負けトレード最大損率 -24.50% 全トレード平均期間 8.63 勝ちトレード平均期間 8.53 負けトレード平均期間 8.73 ---------------------------------------- 必要資金 ¥3,051,400 最大ポジション(簿価) ¥3,000,000 最大ポジション(時価) ¥3,159,900 純利益 ¥3,293,600 勝ちトレード総利益 ¥29,384,700 負けトレード総損失 -¥26,091,100 全トレード平均利益 ¥897 勝ちトレード平均利益 ¥16,110 負けトレード平均損失 -¥14,134 勝ちトレード最大利益 ¥232,400 負けトレード最大損失 -¥123,000 プロフィットファクター 1.13 最大ドローダウン(簿価) -¥884,300 最大ドローダウン(時価) -¥938,200 ---------------------------------------- 現在進行中のトレード数 4 ---------------------------------------- 平均年利 4.50% 平均年利(直近5年) -1.18% 最大連勝 13回 最大連敗 12回 ---------------------------------------- [年度別レポート] 年度 取引回数 運用損益 年利 勝率 PF 最大DD 2023年 2回 -¥14,800円 -0.49% 0.00% 0.00倍 -2.18% 2022年 174回 -¥144,400円 -4.73% 44.83% 0.86倍 -12.00% 2021年 174回 ¥202,600円 6.64% 52.87% 1.23倍 -9.93% 2020年 186回 -¥298,300円 -9.78% 44.09% 0.84倍 -21.81% 2019年 192回 ¥74,900円 2.45% 47.92% 1.07倍 -14.86% 2018年 160回 -¥285,900円 -9.37% 47.50% 0.78倍 -20.80% 2017年 169回 ¥214,900円 7.04% 56.21% 1.26倍 -11.35% 2016年 187回 ¥491,000円 16.09% 59.89% 1.49倍 -11.18% 2015年 138回 ¥107,000円 3.51% 58.70% 1.12倍 -23.24% 2014年 167回 -¥13,500円 -0.44% 52.69% 0.99倍 -15.72% 2013年 144回 ¥208,200円 6.82% 54.86% 1.21倍 -14.94% 2012年 181回 ¥433,100円 14.19% 60.22% 1.43倍 -14.05% 2011年 168回 -¥93,900円 -3.08% 54.76% 0.94倍 -24.44% 2010年 156回 ¥496,300円 16.26% 57.69% 1.51倍 -13.64% 2009年 170回 ¥766,500円 25.12% 50.00% 1.56倍 -13.28% 2008年 180回 -¥139,800円 -4.58% 47.78% 0.94倍 -24.50% 2007年 134回 -¥114,100円 -3.74% 47.76% 0.88倍 -11.45% 2006年 105回 -¥275,900円 -9.04% 43.81% 0.73倍 -22.12% 2005年 165回 ¥545,100円 17.86% 53.33% 1.79倍 -6.70% 2004年 166回 ¥645,600円 21.16% 59.64% 1.65倍 -15.10% 2003年 165回 ¥408,500円 13.39% 53.94% 1.35倍 -13.50% 2002年 173回 ¥156,200円 5.12% 54.34% 1.10倍 -15.38% 2001年 142回 -¥172,400円 -5.65% 51.41% 0.85倍 -15.19% 2000年 72回 ¥96,700円 3.17% 59.72% 1.19倍 -19.72% |
利益曲線は次のとおり。
……すごく惜しい結果となった。
結局この手法も2018年から下降している。
でも20年間で見ると全体的には増加傾向にあったんだな。
ただ平均トレードが「897円」だから手数料負けしそうだね。
おわりに
「信用倍率が1倍を切っている銘柄」の「買い」は有効か……という問いには
2018年までは有効だった
と言える。
ただRSIや他のテクニカル指標とあまり変わらない利益曲線で新鮮感が全くない。
今回の信用倍率に関しては次の書籍に書かれている。この書籍は2021年発売なので、2018年までのバックテストを参考に書籍化したのであれば間違ってない。
ソースコード
バックテストには無料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 |
# 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 = 0 // 購入順序 昇順(0) / 降順(1) $udcount = 0 // 騰落レシオ利用数 $pre_pre_serialdate = 1 $pre_serialdate = 1 Init() //------------------------------------------------ // $MA25 = [$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 $hold[i] = 0 end //================================================== // 保有してない→購入 //================================================== if (! $hold[i]) //================================================== // 売買(買い) //================================================== if ! (Volume && {-1}Volume && {-2}Volume && Close && {-7}Close) return end // 終値が50円以上、売買高が500以上 flag1 = ! (SalesValue()/3 + {-1}SalesValue()/3 + {-2}SalesValue()/3 > 100000 && Close > 200) if ! (flag1) return end // 買い残 < 売り残で1倍より小さい // 二週間前より信用倍率は下がっている // 一週間前より株価が上昇している flag2 = $pre_serialdate != 1 && $pre_pre_serialdate != 1 flag3 = GetSHINYO($serialdate) < 1.00 flag4 = GetSHINYO($pre_serialdate) > 1.00 flag5 = GetSHINYO($pre_pre_serialdate) > GetSHINYO($pre_serialdate) flag6 = Close > {-7}Close if (flag2 && flag3 && flag4 && flag5 && flag6) PrintLog("購入予定") $buyflag[i][0] = 1 // 好きなパラメータをもとにソート $buyflag[i][1] = GetSHINYO($serialdate) $buyflag[i][2] = $buyflag[i][0] // 呪文(複数ロジック用) $buyCnt = $buyCnt + 1 end //================================================== // 保有している→売却 //================================================== elsif ($hold[i]) if $set[i] < 1 $set[i] = 1 return end $set[i] = $set[i] + 1 //================================================== // 売買(売り) //================================================== // 2) 利食い:含み益が10%を上回った if (Close >= 1.10 * $buy[i]) PrintLog("利食い") $sellflag[i] = 1 $set[i] = 0 // 3) 損切り:実働20日経過 elsif ($set[i] > $MaxHoldDay) PrintLog("手仕舞い") $sellflag[i] = 1 $set[i] = 0 end end end //==================== // 買い処理 //==================== def SortBuy() if ! (HasPricedata(Close)) return end $long = 0 $long = Num($buyUnit, Close) codeset = $order[(int)Code] Buying(codeset) end //==================== // 売り処理 //==================== def Sell_(i) if ($sellflag[i]) Selling(i) $sellflag[i] = 0 end // 使用した$buyflag 配列を初期化 if ($buyflag[i][0]) $buyflag[i][0] = 0 $buyflag[i][1] = 0 end end //==================== // 銘柄コードを変えながらMain関数,BuySell関数を実行 //==================== Print("-------------------------------------------------") Print("日付 = "+ Year + "/" + Month + "/" + Day) $serialdate = DMYToExcelSerialDate() $pre_pre_serialdate = $serialdate - 14 $pre_serialdate = $serialdate - 7 $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 |