ラーメン二郎に十年ぶりに行った(二郎系ラーメンは数年ぶり)。
だから忘れてた。
ボリューム感を・・・
二郎はラーメンではなく、「二郎」と言う名の食べ物なのだ。
完全に忘れていた私は・・・
食券機を見ると「大」「小」しかなく・・・・・
同僚「俺、パン食ってきたし「小」で」
という言葉を受け・・・
じゃ、俺は(普通がないし)「大」で。
と間違った選択をし、
カウンターに並ぶ食券の色は
一人だけ黄緑(大盛り)
トッピングの返答も「ましまし」しか知らなかったため・・・
出てきた「丼ぶり」も
ひと回り大きい・・・・
で、案の定
食べ切れない・・・
ようやく色々と思い出し、脳裏にニュースが浮かぶ。
2017年3月
大盛り注文して半分残した客に「クソ野郎、二度と来ないで」ラーメン二郎がツイート
いや、冷や汗と汗かきながら頑張りましたよ・・・
でも無理でした・・・ごめんなさい。
というか、途中から味が急に単調にならない?いや、残した俺が言うのも何だけど・・・。
丼ぶりをカウンターに戻し、コソッと逃げるように店を後にした。
で、翌日以降・・
お腹痛すぎ
翌日の夕方まで・・・腹痛に苦しんだ・・・。
例えるなら、バラムツ食べて尻から油が出続けるあの感覚。
食べたことないけどさ。
本当の意味で
クソ野郎
になった。
・・・「負い目」を感じた日だった。
ということで、
「押し目」の有効性検証してみる。
定番?の押し目戦略の有効性検証
ストラテジーを公開しているブログは、片っ端からバックテストしているので、ほとんど存在しない。
「Protra」を使ったバックテスト例なんて皆無だ・・・と思ったら、一人だけ見つかった。
Protraで押し目戦略を組んでみる! – 専科!
おおーーーーー!
ただ、リンク先は「はてなブックマーク」だった。
で、既にリンク先のサイトはNot Found・・。
そして、Webアーカイブを探しても、ヒットしなかった。
なんだよ、クソ!
と思ったら、「はてなブックマーク」のページの右端に文書のコピペが!
とりあえず、押し目戦略を組んでみたいと思います。 いろんなブログや書籍でも紹介されていますが、勝率も利益率もよろしいので、是非ご活用ください。
必要なストラテジーが、コピペされてた。
はてなブックマーク・・・お前は偉かった。
売買ルール
結局のところ「押し目買い」とは、逆張り投資手法の一つ。
[買い条件]
以下の条件がそろったときに翌日の始値で100万円分買う
- ①75日移動平均線とのかい離率が0%以上
- ②5日移動平均線とのかい離率が-5%以下
- ③終値が500円以上
- ④出来高が10000株以上
[売り条件]
以下の条件がそろったときに翌日の始値で全部売る
- ① 5日移動平均線とのかい離率が0%以上
実装したコードでは、保有期間が伸びるので、10日営業日保有したら強制売却している。
また、他の検証結果との比較のため50万円を1銘柄の購入上限とした。
なんだ。中身に目新しいものはない・・・。
クソ時間をかけて情報探したのに。
バックテスト結果
実行時間は1.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 |
株価データ: 日足 銘柄リスト: TOPIX 1998/01/05~2020/09/04における成績です。 ---------------------------------------- 全トレード数 4587 勝ちトレード数(勝率) 2714(59.17%) 負けトレード数(負率) 1873(40.83%) 全トレード平均利率 0.91% 勝ちトレード平均利率 5.82% 負けトレード平均損率 -6.20% 勝ちトレード最大利率 70.77% 負けトレード最大損率 -59.70% 全トレード平均期間 7.02 勝ちトレード平均期間 5.11 負けトレード平均期間 9.79 ---------------------------------------- 必要資金 ¥2,861,500 最大ポジション(簿価) ¥3,000,000 最大ポジション(時価) ¥3,354,300 純利益 ¥17,769,800 勝ちトレード総利益 ¥66,359,200 負けトレード総損失 -¥48,589,400 全トレード平均利益 ¥3,874 勝ちトレード平均利益 ¥24,451 負けトレード平均損失 -¥25,942 勝ちトレード最大利益 ¥276,000 負けトレード最大損失 -¥280,000 プロフィットファクター 1.37 最大ドローダウン(簿価) -¥1,429,700 最大ドローダウン(時価) -¥1,630,200 ---------------------------------------- 現在進行中のトレード数 3 ---------------------------------------- 平均年利 29.57% 平均年利(直近5年) 2.20% 最大連勝 12回 最大連敗 9回 ---------------------------------------- [年度別レポート] 年度 取引回数 運用損益 年利 勝率 PF 最大DD 2020年 165回 -¥640,700円 -22.39% 47.88% 0.73倍 -30.23% 2019年 242回 ¥545,100円 19.05% 60.33% 1.24倍 -18.23% 2018年 257回 -¥714,800円 -24.98% 53.31% 0.78倍 -26.35% 2017年 238回 ¥611,100円 21.36% 51.68% 1.25倍 -31.11% 2016年 233回 ¥514,100円 17.97% 59.23% 1.18倍 -29.52% 2015年 237回 -¥491,700円 -17.18% 51.90% 0.84倍 -31.92% 2014年 242回 ¥313,300円 10.95% 55.79% 1.11倍 -37.04% 2013年 257回 ¥1,918,200円 67.03% 61.09% 1.83倍 -19.11% 2012年 212回 ¥671,800円 23.48% 65.57% 1.27倍 -34.81% 2011年 176回 ¥454,000円 15.87% 63.64% 1.22倍 -23.83% 2010年 155回 ¥565,700円 19.77% 65.16% 1.39倍 -24.52% 2009年 230回 ¥2,290,300円 80.04% 65.65% 2.10倍 -27.78% 2008年 236回 -¥95,300円 -3.33% 58.90% 0.97倍 -55.10% 2007年 200回 ¥1,433,800円 50.11% 60.50% 1.77倍 -28.96% 2006年 165回 -¥531,800円 -18.58% 56.97% 0.76倍 -27.79% 2005年 216回 ¥1,683,200円 58.82% 68.98% 2.20倍 -18.67% 2004年 214回 ¥1,759,400円 61.49% 65.42% 2.08倍 -24.80% 2003年 242回 ¥3,060,000円 106.94% 68.18% 2.61倍 -26.27% 2002年 191回 ¥532,200円 18.60% 62.83% 1.25倍 -48.94% 2001年 227回 ¥1,926,300円 67.32% 71.37% 1.78倍 -59.70% 2000年 252回 ¥1,965,600円 68.69% 66.67% 2.03倍 -33.33% |
利益曲線は次のとおり。
色々と試したが、TOPIX(スモール含む)株に適用するのが最も曲線がキレイだった。
ただし、大型株は2014年の日銀の量的緩和政策からトレンドが変わり寝てしまう。
まとめ
「二郎」の日記なのか「ストラテジーの検証」日記なのか、よく分からない。
いや、どっちだって良いんだよ。
昔から、このスタンスなんだ!
会議でも、脱線だらけなんだ!
昨日は、脱糞だらけなんだ!
まったくもって、良いストラテジーとラーメンには巡り会えない。
くそったれ!
いや、くそったれは俺か・・・。
・・・なんだ、このクソだらけの日記。
日記の記事をマッシュアップしてみた。
【参考】ソースコード
今後は、ソースコードに誰も興味もってないので巻末に移動する。
いつも通り独自ライブラリの取り込みが必要。
実装は次のようになります。
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 |
# loop-type: date-only //============================== require "TIlib" require "Utility" require "TrendCheck" //============================== // 押し目戦略 //============================== // // [買い条件]( 以下の条件がそろったときに翌日の始値で100万円分買う ) // ① 75日移動平均線とのかい離率が0%以上 // ② 5日移動平均線とのかい離率が-5%以下 // ③ 終値が500円以上 // ④ 出来高が10000株以上 // // [売り条件] ( 以下の条件がそろったときに翌日の始値で全部売る ) // ① 5日移動平均線とのかい離率が0%以上 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 = 10 // 最大保有日数 $shortSelling = 0 // 空売り戦略 Yes(1)/No(0) $Interest = 1 // 無制限(0) / 単利(1) / 複利(2) $reverse = 0 // 購入順序 昇順(0) / 降順(1) $udcount = 0 // 騰落レシオ利用数 Init() //------------------------------------------------ $DiffMA75 = [$code_num] $DiffMA5 = [$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 ! ($DiffMA75[i] && $DiffMA5[i]) //銘柄ごとのグローバル変数を初期化する $DiffMA75[i] = DiffMA_new(75) $DiffMA5[i] = DiffMA_new(5) $hold[i] = 0 return end //指標の計算を1日進める DiffMA_next($DiffMA75[i]) DiffMA_next($DiffMA5[i]) // ここまで ======================================== //================================================== // 保有してない→購入 //================================================== if ! ($hold[i]) diffma75 = DiffMA_value($DiffMA75[i]) diffma5 = DiffMA_value($DiffMA5[i]) if ! (diffma75 && diffma5 && {-1}Close && Close && {-2}Close && {-3}Close) return end // 出来高が10000株以上 if ! (Volume && (Volume * 1000 >= 10000)) return end // 株価500円以下は省く if (Close <= 500) return end // ①75日移動平均線とのかい離率が0%以上 flag1 = diffma75 >= 0 // ②5日移動平均線とのかい離率が-5%以下 flag2 = diffma5 <= -5 if (flag1 && flag2) $buyflag[i][0] = 1 // 購入フラグ $buyflag[i][1] = diffma5 // 好きなパラメータをもとにソート $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 //================================================== // 売買(売り) //================================================== diffma5 = DiffMA_value($DiffMA5[i]) // 5日移動平均線とのかい離率が0%以上 if (diffma5 >= 0) PrintLog("利益確定") $sellflag[i] = 1 $set[i] = 0 elsif ($set[i] >= $MaxHoldDay) PrintLog("損切り") $sellflag[i] = 2 $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(i) if (PricedataExistCheck(Close)) return end $long = 0 $long = Num($buyUnit, Close) codeset = $order[(int)Code] if (HasPricedata({1}Open)) Buying(codeset) 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 // ストラテジーによって買いの優先度を変える ---- if ($buyCnt) BuyLoop(1, 1, codes) end //---------------------------------------------- i = -1 while i + 1 < $code_num i = i + 1 {codes[i]}Sell_(i) end |