何の展望もなくじりじりと枯れていくように日々が過ぎてゆく……。
まるで家畜のように、ただ漫然と日々を過ごしているだけ。
それはそうと、ZOZO創業者である前澤友作氏が年末に露ソユーズ宇宙船でISSへ行くそうですね。
民間人宇宙飛行士として日本人初だそうです。
因みに、彼の新築は私のウサギ小屋のような賃貸マンションのすぐ近くにある。
なので休みの日などはよく目に入る……。
まぶしすぎる日の光が無性に腹が立つ事があるが、何だろな このモヤモヤ感。
モヤモヤしても飯は食えないので、私は淡々とシステムトレードの検討を続けよう……。
でも、ずっと解けないパズルをやってるだけ……
シストレに何十年も費やしたのが人生の失敗原因だと思えてきた この頃……。
最近は「Protra」のキーワードで検索して私のサイトに来る人がもっとも多い。
ありがたいことです。
って、だからPVが低いんだろうが!!
2,3日に1回日記を書いてもマイナーなツールを使って、マイナーな内容を発信し続けてるからPVも増えず……。
ここ最近で増えたのはストレスと上司からの罵声と白髪とシワと夫婦喧嘩ぐらいだわ……
……結構あるね、畜生め!
2014年02月23日のcosisin氏の最後の戦略公開。
そしてこの一ヶ月後から日記更新が一切ない。
買いが主体で、資金が多い人(最低1000万以上)は売りストラテジーをヘッジとしてシステムに組み込んでおくと、DDが抑制される可能性が高い。
と記載されている。
目的は利益を上げることではなくて、下げ相場でのDDを抑制するためだけのストラテジーです。
私はまだ使う気全然ないですからね。もっとシストレ資金が大きくなったら、導入しようかと思っています。
スイングトレード逆張り、デイトレのストラテジーばかりバックテストをやっていたので、久しぶりに売りも作ってみる。
cosisin氏のDD抑制の売りストラテジーの有効性検証
彼の手法はほとんどワンパターンだ。
【基本設定】
- 1) 株価の低い場合はランキングしない[250]円以下
- 2) 売買代金の少ない場合はランキングしない(売買代金の[75]日間平均が[100]千万円以下の場合)
- 3) 単利利用、通年
- 4) 全ての銘柄対象
【ランキング条件(ヘッジ)】
- 1) [期間高値(高値)(25)]が[期間安値(安値)(25)(+30%)]より[小さい]
【買いルール】
- 1) [ヘッジ(順位)]が[3]より[小さい(同じ含む)]
- 2) [翌日寄付]で[売り]を仕掛ける
【手仕舞いのルール】
- 1) [翌日寄付]で手仕舞いする
【優先順設定】
- 1) 移動平均乖離率(終値)(25) 大きい順
パッと見ても難しいところは何もないのでサクッと作ってみよう。
バックテスト
実行時間は4時間程度……だけど全銘柄でバックテストを行ってしまった。
空売りは貸借銘柄だけで良かったので、実際は2,3時間程度だろう。
因みにイザナミだと77秒。圧倒的な差を感じる……。
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 |
株価データ: 日足 銘柄リスト: 貸借(東証一部+二部) 1998/01/05~2021/05/17における成績です。 ---------------------------------------- 全トレード数 7632 勝ちトレード数(勝率) 3930(51.49%) 負けトレード数(負率) 3702(48.51%) 全トレード平均利率 0.18% 勝ちトレード平均利率 2.14% 負けトレード平均損率 -1.90% 勝ちトレード最大利率 26.15% 負けトレード最大損率 -23.74% 全トレード平均期間 1.49 勝ちトレード平均期間 1.47 負けトレード平均期間 1.52 ---------------------------------------- 必要資金 ¥1,465,400 最大ポジション(簿価) ¥1,489,600 最大ポジション(時価) ¥1,574,800 純利益 ¥5,303,100 勝ちトレード総利益 ¥34,654,300 負けトレード総損失 -¥29,351,200 全トレード平均利益 ¥695 勝ちトレード平均利益 ¥8,818 負けトレード平均損失 -¥7,928 勝ちトレード最大利益 ¥122,000 負けトレード最大損失 -¥118,400 プロフィットファクター 1.18 最大ドローダウン(簿価) -¥610,300 最大ドローダウン(時価) -¥689,100 ---------------------------------------- 現在進行中のトレード数 3 ---------------------------------------- 平均年利 16.45% 平均年利(直近5年) -7.01% 最大連勝 11回 最大連敗 14回 ---------------------------------------- [年度別レポート] 年度 取引回数 運用損益 年利 勝率 PF 最大DD 2021年 103回 -¥223,900円 -15.28% 43.69% 0.62倍 -23.74% 2020年 246回 -¥86,900円 -5.93% 54.88% 0.92倍 -14.02% 2019年 284回 -¥112,200円 -7.66% 48.94% 0.90倍 -12.18% 2018年 278回 ¥153,600円 10.48% 55.76% 1.15倍 -8.44% 2017年 331回 -¥244,300円 -16.67% 48.04% 0.82倍 -15.29% 2016年 361回 ¥267,000円 18.22% 52.08% 1.20倍 -11.72% 2015年 342回 ¥248,400円 16.95% 54.97% 1.21倍 -12.02% 2014年 402回 ¥526,400円 35.92% 55.97% 1.41倍 -11.58% 2013年 405回 ¥177,600円 12.12% 50.62% 1.08倍 -13.96% 2012年 430回 -¥42,500円 -2.90% 56.05% 0.97倍 -9.21% 2011年 410回 ¥458,400円 31.28% 56.59% 1.35倍 -6.87% 2010年 417回 ¥8,000円 0.55% 53.24% 1.01倍 -8.70% 2009年 394回 ¥368,100円 25.12% 54.31% 1.20倍 -22.16% 2008年 381回 ¥684,500円 46.71% 59.32% 1.45倍 -11.91% 2007年 314回 ¥787,200円 53.72% 58.60% 1.75倍 -8.33% 2006年 322回 ¥831,000円 56.71% 64.29% 2.17倍 -5.37% 2005年 356回 -¥186,000円 -12.69% 56.74% 0.89倍 -16.54% 2004年 336回 ¥169,200円 11.55% 56.25% 1.14倍 -18.69% 2003年 433回 ¥355,900円 24.29% 56.58% 1.20倍 -15.08% 2002年 410回 ¥385,500円 26.31% 56.34% 1.27倍 -8.40% 2001年 363回 ¥555,500円 37.91% 56.47% 1.49倍 -6.46% 2000年 314回 ¥222,600円 15.19% 53.18% 1.16倍 -11.21% |
利益曲線は次のとおり。
うーん、微妙な結果だ……。
「下げ相場でのDDを抑制するためだけのストラテジー」と言うだけあり、2017年頃からの黒田バズーカーによる読めない上昇相場には通用しなかったようだ。
とはいえ、2005年も負けているね。
上記がcosisin氏の結果だけど、氏の結果も2005年は負けているような……。
氏のサイトには利益曲線が一切載ってないんだよなーー。
あと気になったのが氏の取引回数は私の2倍ある。間違って全銘柄でやってるなじゃないかな……?
まぁ引っ張るほどのネタじゃないな。
まとめ
「翌日寄付」の買い手法は今までも多く作ってきたけど、売りでも似たようなグラフになった。
指値を使うのが最近の主流だけど、バックテストと同じ結果を実践で得るのは難しそう。
バックテストばかりやっている間に、システムトレーダーの旨みがどんどん減っている気がするよ……。
どうでもよいけど、処理時間が表示されるように対応を考えてみるかな。
ソースコード
バックテストには無料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 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 |
# loop-type: date-only //============================== require "TIlib" require "Utility" require "TrendCheck" // ====================================== // cosisin氏の高スペックデイトレ戦略 // ====================================== // // 【基本設定】 // // 1) 株価の低い場合はランキングしない[250]円以下 // 2) 売買代金の少ない場合はランキングしない(売買代金の[75]日間平均が[100]千万円以下の場合) // 3) 単利利用、通年 // 4) 全ての銘柄対象 // // 【ランキング条件(ヘッジ)】 // // 1) [期間高値(高値)(25)]が[期間安値(安値)(25)(+30%)]より[小さい] // // 【買いルール】 // // 1) [ヘッジ(順位)]が[3]より[小さい(同じ含む)] // 2) [翌日寄付]で[売り]を仕掛ける // // 【手仕舞いのルール】 // // 1) [翌日寄付]で手仕舞いする // // 【優先順設定】 // // 1) 移動平均乖離率(終値)(25) 大きい順 codes = CodeList if ($code_num && $code_num != Length(codes)) Print("前回と異なる銘柄リストでは実行できません。") Dummy end $code_num = Length(codes) //グローバル変数を初期化 if (!$__INIT__) $budgetIni = 3000000 $buyUnit = 500000 // 1回の購入資金 (50万円) $MaxHoldDay = 0 // 最大保有日数 $shortSelling = 1 // 空売り戦略 Yes(1)/No(0) $Interest = 1 // 無制限(0) / 単利(1) / 複利(2) $reverse = 1 // 購入順序 昇順(0) / 降順(1) $udcount = 0 // 騰落レシオ利用数 Init() //------------------------------------------------ $HLB = [$code_num] $MA = [$code_num] //------------------------------------------------ InitDone() // 騰落レシオ初期化 $__INIT__ = 1 end def Main(i) //================================================== // 条件(買条件, 売条件共通部分) //================================================== //まだ上場していない銘柄は株価データがないためnullが返る if (Index == null) return end if ! ($order[(int)Code]) $order[(int)Code] = i end if ! ($MA[i]) //Tilibのオブジェクト生成 $HLB[i] = HLBand_new(25) $MA[i] = MA_new(25) //銘柄ごとのグローバル変数を初期化する $hold[i] = 0 return end //指標の計算を1日進める HLBand_next($HLB[i]) MA_next($MA[i]) //================================================== // 保有してない→購入 //================================================== if (! $hold[i]) if ! ($HLB[i][1] && $HLB[i][3] && $MA[i] && Close) return end ma = MA_value($MA[i]) if ! (ma) return end r = 100 * (Close - ma) / ma //================================================== // 選定 //================================================== // 1) 株価の低い場合はランキングしない[250]円以下 // 2) 売買代金の少ない場合はランキングしない(売買代金の[75]日間平均が[100]千万円以下の場合) if (TradingValume(75) <= 1000000 || Close <= 250) return end //================================================== // 売買(買い) //================================================== // [期間高値(高値)(25)]が[期間安値(安値)(25)(+30%)]より[小さい] check = $HLB[i][3] * 1.3 > $HLB[i][1] if (check) $buyflag[i][0] = 1 // 購入フラグ $buyflag[i][1] = r // 移動平均乖離率(終値)(25) 大きい順 $buyflag[i][2] = 1 // 売却フラグ(2日後の寄付) $buyCnt = $buyCnt + 1 end //================================================== // 保有している→売却 //================================================== elsif ($hold[i]) if ($set[i] < 1) $set[i] = 1 return end $set[i] = $set[i] + 1 //================================================== // 売買(売り) //================================================== if ($set[i] >= $MaxHoldDay) PrintLog("利益確定") $sellflag[i] = 1 $set[i] = 0 end end end //==================== // 買い処理 //==================== def SortBuy(i) PrintLog("購入予定") if ! (HasPricedata(Close)) return end $long = 0 $long = Num($buyUnit, Close) codeset = $order[(int)Code] // 購入日の翌日の寄付 Buying(codeset) end //==================== // 売り処理(翌日買い) //==================== def Sell_(i) if (HasPricedata(Open)) if ($sellflag[i]) SellingLimitedPrice(i, 0, Open) $sellflag[i] = 0 $buyflag[i][2] = 0 end // 使用した$buyflag 配列を初期化 if ($buyflag[i][0]) $buyflag[i][0] = 0 $buyflag[i][1] = 0 end end end //==================== // 銘柄コードを変えながらMain関数,BuySell関数を実行 //==================== Print("-------------------------------------------------") Print("日付 = "+ Year + "/" + Month + "/" + Day) SortInit() // ソート初期化 i = -1 while (i + 1 < $code_num) i = i + 1 {codes[i]}Main(i) end i = -1 while (i + 1 < $code_num) i = i + 1 {codes[i]}Sort(i) end i = -1 if ($buyCnt) // 1) [ヘッジ(順位)]が[3]より[小さい(同じ含む)] $buyCnt = $buyCnt % 3 + 1 while i + 1 < $buyCnt i = i + 1 {$sortList2[i]}SortBuy(i) end end //---------------------------------------------- i = -1 while (i + 1 < $code_num) i = i + 1 {codes[i]}Sell_(i) end |