以前も記載しましたが、システムトレードツールの人気は次のような順序だと思ってます。
ツール名 | コメント | 利用者名 |
---|---|---|
トレードステーション | マネックス証券で利用できる。海外で主流。全銘柄を対象にできない | テスタ氏、 |
イザナミ | 日本では最もポピュラーなツール。ユーザも多い | koz-kay氏、ニッパー氏、hamhamseven氏、アイアン鉄氏、Sand氏、シスヤ氏、トレシズ氏、スカイダイヤ氏・・多数 |
システムトレードの達人 | 斎藤正章氏が製作。機能は一番豊富 | 夢幻氏(年利104%)、紫苑氏、ゆうし、中原良太氏、スカイダイヤ氏 |
シストレ魂 | 中村義和氏が製作。ブラウザで動作し完全自動化。 | ゆう氏、Mariku氏、スカイダイヤ氏 |
iTRADE | 重鎮 野川徹氏が製作。運営交代(保田望の相棒?)で悪名高く・・・ | 押田庄次郎氏、スカイダイヤ氏 |
OmegaChart | 岡嶋大介氏が製作。後に第1回カブロボ・コンテストで野村総研特別賞受賞 | 2ちゃんねらー? |
Protra | Daisuke Arai氏が作成。panacoran氏がメンテナンス | かぶみ氏、 |
パイロン | 小次郎氏とN氏(中村氏との噂)。後のシストレ魂との噂 | Hiro氏、 |
Tactico (タクティコ) | 岡嶋大介氏が製作。「OmegaChart」の後継。最近はストップ? | |
検証くん | 保田望氏が製作。管理会社のせいで悪名高くなった |
基本的に、ストラテジーを販売している人がストラテジーの販売促進目的でブログなどを書いている・・・というのが多いです。
私のような利益もないのに日記でストラテジー公開している人は今は皆無ですね・・・。自分の目的もよく分かりません・・・。
システムトレードで成功している方に共通して言える事は、
「傾向を徹底的に検証して調べている」
のようです。
私は、まだ何もできていないです・・・・。
なお、人に真似されると優位性が減るので、ヒッソリとやっている人が多いのだろうと予測します。
是非とも、皆様の利用ツールと年利とシステムトレード歴を教えて欲しいです!!
保田望氏の過去180日間の高値更新・順張り手法有効性検証
前回に引き続き、今度は「順張り」のバックテストをprotraで実装してみます。
なお、この書籍の「あとがき」に次のように記載されています。
本書は、私が書く最初で最後の本になるかも知れないと思っています。
ですから、本書には、私のすべてを書き込めました。ですから、本書にあいまいな話は一切ないはずです。
にも関わらず、書籍自体のAmazonの評価は☆が低いです。糞のような素人が「自分が理解できない」ために「☆1」にしているだけで、この書籍は良書です。
今後のストラテジー検討のために、
今は難しいかもしれませんが、やがてこのアイデアの価値を分かる日が必ず来ますので、その時まで大切に本書を保管していただければと思います。
と、いう説明と一緒に掲載されている売買ルールを書き残しておきます。
【売買ルールの例】
- 当日の値動きが強かった銘柄を、大引けで買って、翌日の寄付きで売却する。当日の値動きが弱かった銘柄を大引けで売って、翌日の寄付きで買い戻す。
- 本書で紹介したような過剰に売り込まれた銘柄に対する逆張りではなく、上昇トレンドにある銘柄が、一時的に下落した、つまり押し目を作ったところを逆張りで仕掛ける。
- 年初来安値を更新しているような弱い銘柄を、寄りで売って、引けで買い戻す。その逆もしかり。
- 日経225採用銘柄のうち、売り込まれすぎた銘柄を買って、同じだけ日経先物を売り建てる。
- NYダウが強い時は逆張りで仕掛け、NYダウが弱い時は逆張りの売りで仕掛ける。
- 日本株だけではなく、同様のコンセプトで構築した売買ルールを、アメリカ、ヨーロッパ各国の株式市場で運用する。
さて本題です。
保田望氏によれば「順張り手法」は次のように記載されています。
順張り型の場合は勝率が低くなるため「損切りが続くことを覚悟しなければならない」ということ、そして「上手く行ったときには、かなり大きな利益を取ることができなければならない」ということが必要となります。
また「年単位で負けなし」というルールを作ることは難しいかもしれません。
との事です。
【資金管理条件】
- 1) 初期資金 500万円
- 2) 最大レバレッジ 2倍
- 3) ポジションサイズ 資金の20分の1
- 4) 突入タイミング 過去120日平均サイン点灯数の3倍以上
【買いルール】
- 1) 過去180日間の高値を更新
- 4) 当日終値が100円以上
- 5) 10日間平均売買代金が1000万円以上
【手仕舞いルール】
- 1) 過去20日間の安値を更新
ソースコード
書籍では初期資金500万円、最大リバレッジ1.5倍、ポジションサイズは資金の10分の1で実装されています。
ここでは、1000万円の資金でポジションサイズは10部の1で実装しています。
Utility、TrendCheckライブラリは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 |
# loop-type: date-only //============================== require "TIlib" require "Utility" require "TrendCheck" //============================== // 株式投資「システムトレード」の極意(保田望 著) //============================== // // 下記のルールに従い、10日間平均売買代金が大きい順に仕掛ける // // 【資金管理条件】 // 1) 初期資金 500万円 // 2) 最大レバレッジ 2倍 // 3) ポジションサイズ 資金の20分の1 // 4) 突入タイミング 過去120日平均サイン点灯数の3倍以上 // // 【買いルール】 // 1) 過去180日間の高値を更新 // 4) 当日終値が100円以上 // 5) 10日間平均売買代金が1000万円以上 // //【手仕舞いルール】 // 1) 過去20日間の安値を更新 codes = CodeList if $code_num && $code_num != Length(codes) Print("前回と異なる銘柄リストでは実行できません。") Dummy end $code_num = Length(codes) //グローバル変数を初期化 if ! ($__INIT__) $budgetIni = 10000000 $budget = $budgetIni // 投資総額 (1000万円) $buyUnit = 500000 // 1回の購入資金 (50万円) $MaxHoldDay = 45 // 最大保有日数 $Interest = 1 // 無制限(0) / 単利(1) / 複利(2) $reverse = 1 // 購入順序 昇順(0) / 降順(1) $ratiodate = 0 // 騰落レシオ日数 //------------------------------------------------ $signal = [120] // 過去120日平均サイン $sflag = 0 // 平均サインのフラグ i = 0 while (i < 120) $signal[i] = -1 i = i + 1 end Init() $__INIT__ = 1 end // 過去X日間の高値 def CheckPastHigh(num) i = 1 high = {-1}High while (i < num) high = Max({-1 * i}High, high) i = i + 1 end return high end def Main(i) //================================================== // 条件(買条件, 売条件共通部分) //================================================== //まだ上場していない銘柄は株価データがないためnullが返る if (Index == null) return end if ! ($order[(int)Code]) $order[(int)Code] = i end // ここまで ======================================== if (1 == PricedataExistCheck(Close)) return end //================================================== // 保有してない→購入 //================================================== if ! ($hold[i]) tv = TradingValume(10) // 4) 当日終値が100円以上 // 5) 10日間平均売買代金が1000万円以上 if ! (Close >= 100 && tv >= 10000) return end // 1) 過去180日間の高値を更新 if (CheckPastHigh(180) < Close) $buyflag[i][0] = 1 // 10日間平均売買代金(株価 x 出来高)が大きい順に仕掛ける $buyflag[i][1] = tv $buyCnt = $buyCnt + 1 end //================================================== // 保有している→売却 //================================================== elsif ($hold[i]) if ($set[i] < 1) $set[i] = 1 return end $set[i] = $set[i] + 1 //================================================== // 売買(売り) //================================================== // 2) 株価(終値)が買値よりも2%以上上昇 if (Close >= 1.02 * $buy[i]) PrintLog("利食い") $sellflag[i] = 1 $set[i] = 0 // 1) 買い付けた日から60日が経過 elsif ($set[i] >= $MaxHoldDay) PrintLog("損切り") $sellflag[i] = 1 $set[i] = 0 end end end //==================== // 買い処理 //==================== def SortBuy(i) if (PricedataExistCheck(Close)) return end $long = 0 $long = Num($buyUnit, Close) codeset = $order[(int)Code] Buying(codeset) end //==================== // 売り処理 //==================== def Sell_(i) if (PricedataExistCheck(Close)) return end if ($sellflag[i]) Selling(i) $sellflag[i] = 0 end end // ========================================= // 過去の平均サイン点灯数を返す // ========================================= def SignalCount(num) $signal[$sflag] = $buyCnt $sflag = ($sflag + 1) % num i = 0 sum = 0 while (i < num) if ($signal[i] == -1) return 9999 end sum = sum + $signal[i] i = i + 1 end return sum / num 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 // 4) 突入タイミング 過去120日平均サイン点灯数の4倍以上 sg = SignalCount(120) Print("過去120日平均サイン点灯数 =" + sg + " $buyCnt=" + $buyCnt) if ($buyCnt >= sg * 3) 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 |
バックテスト結果
計算時間は3.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 |
株価データ: 日足 銘柄リスト: 全銘柄 1998/01/05~2019/08/09における成績です。 ---------------------------------------- 全トレード数 2103 勝ちトレード数(勝率) 1660(78.93%) 負けトレード数(負率) 443(21.07%) 全トレード平均利率 0.92% 勝ちトレード平均利率 4.69% 負けトレード平均損率 -13.21% 勝ちトレード最大利率 42.47% 負けトレード最大損率 -51.65% 全トレード平均期間 24.55 勝ちトレード平均期間 14.09 負けトレード平均期間 63.74 ---------------------------------------- 必要資金 ¥9,858,300 最大ポジション(簿価) ¥9,998,500 最大ポジション(時価) ¥10,435,700 純利益 ¥8,329,030 勝ちトレード総利益 ¥32,189,860 負けトレード総損失 -¥23,860,830 全トレード平均利益 ¥3,961 勝ちトレード平均利益 ¥19,391 負けトレード平均損失 -¥53,862 勝ちトレード最大利益 ¥164,400 負けトレード最大損失 -¥251,200 プロフィットファクター 1.35 最大ドローダウン(簿価) -¥2,476,730 最大ドローダウン(時価) -¥2,207,080 ---------------------------------------- 現在進行中のトレード数 8 ---------------------------------------- [年度別レポート] 年度 取引回数 運用損益 勝率 PF 最大DD 2000年 46回 ¥111,900円 76.09% 1.18倍 -23.91% 2001年 120回 ¥503,100円 81.67% 1.41倍 -38.70% 2002年 113回 -¥305,300円 74.34% 0.84倍 -34.08% 2003年 199回 ¥2,691,400円 82.91% 2.97倍 -45.59% 2004年 76回 ¥482,710円 82.89% 1.58倍 -35.46% 2005年 182回 ¥1,666,000円 85.71% 2.11倍 -43.94% 2006年 73回 ¥330,400円 79.45% 1.66倍 -19.63% 2007年 93回 ¥505,400円 79.57% 1.65倍 -21.65% 2008年 99回 ¥425,160円 80.81% 1.37倍 -37.27% 2009年 140回 -¥997,600円 58.57% 0.64倍 -37.32% 2010年 125回 ¥494,480円 83.20% 1.31倍 -31.11% 2011年 100回 -¥890,910円 67.00% 0.51倍 -41.63% 2012年 154回 ¥501,900円 78.57% 1.25倍 -39.29% 2013年 175回 ¥2,236,560円 89.71% 2.54倍 -51.64% 2014年 143回 -¥18,120円 74.83% 0.99倍 -50.04% 2015年 7回 -¥305,900円 14.29% 0.01倍 -27.16% 2016年 103回 ¥932,610円 96.12% 2.96倍 -51.65% 2017年 85回 ¥126,010円 78.82% 1.16倍 -46.84% 2018年 31回 -¥240,930円 64.52% 0.52倍 -26.55% 2019年 39回 ¥80,160円 76.92% 1.25倍 -30.73% |
利益曲線は次のとおりです。
グラフを見ると結構ガタガタです。
まとめ
年利4.4%で、最大DDは-51.65%です。最大DD(時価)も大きそうです。
ただし、順張りにしては勝率は78.93%と高いです。ただ、63.74日の保有期間は今の時代には合いません。