釣りの日記はローカル話題も多くアクセス数は高くない。
ましてやボウズや釣具紹介だと人は皆無だ。
最近の記事でアクセス数が多いのが
コロナ陽性
やっぱり、これかww
流行りものは、乗っておかないとね!
世界的ですもんね 乗るしかない このビッグウエーブに
スマートテレビの時代に、protra(無料OSSのシステムトレードソフト)はアナログテレビ使ってるようなものだ。
アナログなので仕組みも分かりテレビは映るが、ネットとテレビの融合のような新たな可能性は誕生しにくい。
そして、私は今 アナログテレビにネット機能を追加しようと努力している感じがする……。
田村祐一氏の空売りデイトレの代表的な戦略の期待値検証
田村祐一氏はフェアトレード株式会社に所属しており、同社内の調査本部アナリストらしい。
フェアトレード株式会社といえば「システムトレードの達人」「斉藤正章」「西村剛」などのキーワードでおなじみだ。
本も4年前に出版してる。
今は消えてしまっているけど、サイトに手法が載っていた。
検証対象:東証1部貸借銘柄
検証期間:2000/01/01~2014/07/31
1銘柄当たりの投資金額:20万円勝率は55%と高いですが、平均損益は0.16%と若干低めです。
しかし、その分トレード回数がとても多いので、
結果として合計損益も大きなプラスとなっています。
ストラテジーは次のとおり。
【売り条件】
- 平均売買代金(30日)が1,000,000,000円以上(条件式①)
- 終値と移動平均(5日)の乖離率が3%以上(条件式②)
上記2つの条件を満たした翌日に、成行売り
【買い戻し条件】
- 空売りした当日の大引けに買い戻し
全く難しくないので、ちょっとバックテストをやってみよう。
バックテスト結果
計算時間は借貸銘柄(東証一部)だけで1時間。
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 |
株価データ: 日足 銘柄リスト: 借貸(東一) 2000/01/06~2021/07/21における成績です。 ---------------------------------------- 全トレード数 12245 勝ちトレード数(勝率) 6308(51.51%) 負けトレード数(負率) 5937(48.49%) 全トレード平均利率 0.09% 勝ちトレード平均利率 1.79% 負けトレード平均損率 -1.71% 勝ちトレード最大利率 21.35% 負けトレード最大損率 -28.47% 全トレード平均期間 1.49 勝ちトレード平均期間 1.48 負けトレード平均期間 1.50 ---------------------------------------- 必要資金 ¥2,960,700 最大ポジション(簿価) ¥2,986,400 最大ポジション(時価) ¥3,074,100 純利益 ¥5,145,200 勝ちトレード総利益 ¥46,981,500 負けトレード総損失 -¥41,836,300 全トレード平均利益 ¥420 勝ちトレード平均利益 ¥7,448 負けトレード平均損失 -¥7,047 勝ちトレード最大利益 ¥82,000 負けトレード最大損失 -¥136,000 プロフィットファクター 1.12 最大ドローダウン(簿価) -¥577,400 最大ドローダウン(時価) -¥577,400 ---------------------------------------- 現在進行中のトレード数 2 ---------------------------------------- 平均年利 7.90% 平均年利(直近5年) 6.26% 最大連勝 13回 最大連敗 11回 ---------------------------------------- [年度別レポート] 年度 取引回数 運用損益 年利 勝率 PF 最大DD 2021年 331回 -¥171,200円 -5.78% 47.13% 0.85倍 -10.37% 2020年 568回 ¥436,400円 14.74% 52.82% 1.21倍 -8.94% 2019年 568回 ¥43,400円 1.47% 53.87% 1.03倍 -11.37% 2018年 581回 ¥547,400円 18.49% 54.91% 1.31倍 -11.57% 2017年 588回 ¥70,000円 2.36% 56.46% 1.04倍 -16.85% 2016年 579回 ¥130,400円 4.40% 51.64% 1.06倍 -9.88% 2015年 576回 ¥412,200円 13.92% 55.90% 1.24倍 -11.41% 2014年 566回 ¥202,800円 6.85% 56.36% 1.11倍 -11.93% 2013年 559回 ¥161,300円 5.45% 56.71% 1.08倍 -11.60% 2012年 548回 ¥306,400円 10.35% 54.74% 1.16倍 -13.70% 2011年 543回 ¥521,100円 17.60% 58.20% 1.28倍 -10.74% 2010年 543回 ¥527,100円 17.80% 58.75% 1.29倍 -28.47% 2009年 550回 ¥697,500円 23.56% 58.91% 1.39倍 -12.91% 2008年 571回 -¥261,200円 -8.82% 53.77% 0.91倍 -21.27% 2007年 590回 -¥100,500円 -3.39% 53.73% 0.95倍 -19.72% 2006年 592回 ¥625,800円 21.14% 59.63% 1.37倍 -11.10% 2005年 574回 -¥153,300円 -5.18% 55.75% 0.91倍 -11.38% 2004年 570回 ¥107,200円 3.62% 59.65% 1.06倍 -14.42% 2003年 556回 ¥476,000円 16.08% 59.35% 1.25倍 -13.04% 2002年 557回 ¥253,900円 8.58% 55.66% 1.13倍 -8.06% 2001年 565回 -¥120,900円 -4.08% 53.10% 0.95倍 -13.93% 2000年 570回 ¥433,400円 14.64% 58.95% 1.21倍 -11.63% |
利益曲線は次のとおり。
単調増加だね。少し予想外だ。
「デイトレードの場合“売り“から入ったほうが有利」と言われるのは、この結果から来ているらしい。
でも、逆張りのデイトレも何度か紹介しているけど、そっちも単調増加だったけどね。
純粋にデイトレが良いだけだろう。
まとめ
「全トレード平均利益」が420円だから、手数料が無料じゃなければ赤字になる手法だ。
毎年必ず勝てる……という訳でも無いが、古典手法にしては未だに動作しているのは評価できるポイントだろう。
ただ、負ける年は負け続けるので注意を。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[2008年] 月度 取引回数 運用損益 勝率 PF 最大DD 12月 46回 -¥41,200円 54.35% 0.82倍 -10.32% 11月 41回 ¥45,500円 53.66% 1.27倍 -4.95% 10月 50回 -¥211,500円 46.00% 0.55倍 -21.27% 9月 47回 -¥24,000円 59.57% 0.91倍 -19.85% 8月 49回 -¥20,900円 46.94% 0.90倍 -8.04% 7月 53回 ¥32,800円 56.60% 1.19倍 -4.31% 6月 50回 ¥5,300円 56.00% 1.03倍 -7.34% 5月 47回 -¥152,700円 42.55% 0.42倍 -7.21% 4月 53回 -¥36,500円 52.83% 0.83倍 -7.86% 3月 44回 ¥122,800円 63.64% 1.77倍 -5.21% 2月 48回 -¥44,200円 52.08% 0.81倍 -8.48% 1月 43回 ¥63,400円 62.79% 1.32倍 -6.34% |
ソースコード
バックテストには無料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 |
# loop-type: date-only //============================== require "TIlib" require "Utility" require "TrendCheck" //========================================== // // 1) 平均売買代金(30日)が1,000,000,000円以上(条件式①) // 2) 終値と移動平均(5日)の乖離率が3%以上(条件式②) // //========================================== 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 = 0 // 購入順序 昇順(0) / 降順(1) $udcount = 0 // 騰落レシオ利用数 Init() //------------------------------------------------ $DiffMA = [$code_num] //------------------------------------------------ InitDone() // 騰落レシオ初期化 $__INIT__ = 1 end def Main(i) //================================================== // 条件(買条件, 売条件共通部分) //================================================== //まだ上場していない銘柄は株価データがないためnullが返る if (Index == null) return end if ($order[(int)Code] == -1) $order[(int)Code] = i end if ! ($DiffMA[i]) // 銘柄ごとのグローバル変数を初期化する $DiffMA[i] = DiffMA_new(5) $hold[i] = 0 return end //指標の計算を1日進める DiffMA_next($DiffMA[i]) //================================================== // 保有してない→購入 //================================================== if (! $hold[i]) diffma = DiffMA_value($DiffMA[i]) if ! (diffma && Close) return end //================================================== // 売買(買い) //================================================== // 平均売買代金(30日)が1,000,000,000円以上 tv = TradingValume(30) flag1 = tv >= 100000 // 終値と移動平均(5日)の乖離率が3%以上 flag2 = diffma >= 3 if (flag1 && flag2) // PrintLog("買い候補") $buyflag[i][0] = 1 $buyflag[i][1] = diffma $buyflag[i][2] = 1 $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 CheckHighLow2(t) t = Yobine(t, 0) if ! ({1}High > t && t > {1}Low) return 0 end return 1 end //==================== // 買い処理 //==================== def SortBuy() if ! (HasPricedata({1}Open)) return end $long = 0 $long = Num($buyUnit, Close) codeset = $order[(int)Code] Buying(codeset) end //==================== // 売り処理(デイトレ模倣) //==================== def Sell_(i) if (HasPricedata(Open)) if ($sellflag[i]) if ({-1}Close) SellingLimitedPrice(i, 0, {-1}Close) else PrintLog("売れない") end $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) $buyCnt = 0 // 購入数初期化 i = -1 while (i + 1 < $code_num) i = i + 1 {codes[i]}Main(i) end i = 0 if ($buyCnt) sortList = SelectionSort(10, 0) cnt = $buyCnt if ($buyCnt > 10) cnt = 10 end while i < cnt {sortList[i]}SortBuy() i = i + 1 end end //---------------------------------------------- i = -1 while (i + 1 < $code_num) i = i + 1 {codes[i]}Sell_(i) end |