イザナミの販売会社は「ツクヨミ」。
サイトを見る限り、資本金300万円の有限会社だ。
会社法が施行された2006年以前である2005年に設立しているようで、今では珍しい有限会社。
有限会社には、
- 取締役の任期の期限がない
- 決算の公告義務がない
などといったメリットがあるため、未だ有限会社を名乗っていると思われる。
しかし逆にイザナミでどれだけ利益を出しているのか我々からは全く分からない。
ビジネスとしてはイザナミ販売(関係するツール、サイト運営)を除くと受注生産的な事もやっているようだ。
- サービスソフトウェアの設計/開発
- Webアプリケーション設計/開発
- ホームページ設計/開発
どちらにせよ、何年経っても規模は大きくならなそうなビジネス展開。
イザナミ利用者は、自分の人生をこの会社に預けている事を覚えておいた方が良い。
イザナミはセミナーや広報活動に余念がない。
ストラテジーのサンプルも公開している。
超定番!だけど右肩上がりの逆張り戦略
今回検証したいのは イザナミHP で2009年から公開中の逆張り戦略。
公開してからずーっと右肩上がりなんですよ。
初めてシステムトレードを行うにはもってこいの使えるお手本ルールです!
「初めて」とか「初心者」とか株式投資では無意味な言葉。
全員が同じフィールドに立ち、世界中でプロや機関、AIと個人投資家が金のむしり取り合いをする。
初心者コースとかランクとかハンデとか、そんなものは一切存在しないガチンコ戦。
常にデッド・オア・アライブ
それが株式投資。
脱線したが、この手法はOSSのProtraで初期にバックテストをやってみた事がある。
改めてバックテストをやってみた。
イザナミのサンプル手法の有効性検証
【買いルール】
- 1) 15日移動平均線より株価が10%より下にあった場合
イザナミの設定を見ると「[終値]が[移動平均(終値)(15)(-10.00%)]より[小さい(同じ含む)]」となっている
【手仕舞いルール】
- 1) 10日以上持っていた場合
- 2) 5%以上の含み損が出た場合
- 3) 5%以上の含み益が出た場合
バックテスト結果
バックテスト時間は東証一部で45分。
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 |
株価データ: 日足 銘柄リスト: 東証1部 2000/01/06~2021/11/25における成績です。 ---------------------------------------- 全トレード数 5698 勝ちトレード数(勝率) 2783(48.84%) 負けトレード数(負率) 2915(51.16%) 全トレード平均利率 0.95% 勝ちトレード平均利率 8.94% 負けトレード平均損率 -6.68% 勝ちトレード最大利率 1,151.06% 負けトレード最大損率 -61.11% 全トレード平均期間 6.23 勝ちトレード平均期間 6.06 負けトレード平均期間 6.39 ---------------------------------------- 必要資金 ¥2,975,800 最大ポジション(簿価) ¥3,511,300 最大ポジション(時価) ¥10,346,350 純利益 ¥24,332,940 勝ちトレード総利益 ¥112,207,300 負けトレード総損失 -¥87,874,330 全トレード平均利益 ¥4,270 勝ちトレード平均利益 ¥40,319 負けトレード平均損失 -¥30,146 勝ちトレード最大利益 ¥6,055,413 負けトレード最大損失 -¥500,000 プロフィットファクター 1.28 最大ドローダウン(簿価) -¥1,988,400 最大ドローダウン(時価) -¥1,991,200 ---------------------------------------- 現在進行中のトレード数 6 ---------------------------------------- 平均年利 37.17% 平均年利(直近5年) 6.89% 最大連勝 13回 最大連敗 10回 ---------------------------------------- [年度別レポート] 年度 取引回数 運用損益 年利 勝率 PF 最大DD 2021年 159回 ¥398,000円 13.37% 52.20% 1.25倍 -10.44% 2020年 182回 ¥9,000円 0.30% 51.65% 1.00倍 -50.00% 2019年 161回 ¥995,900円 33.47% 55.28% 1.64倍 -17.89% 2018年 212回 -¥894,800円 -30.07% 42.45% 0.73倍 -42.29% 2017年 219回 ¥517,000円 17.37% 50.68% 1.18倍 -61.11% 2016年 270回 -¥45,000円 -1.51% 46.67% 0.99倍 -16.44% 2015年 240回 -¥685,000円 -23.02% 42.08% 0.79倍 -16.92% 2014年 255回 ¥596,500円 20.05% 53.73% 1.17倍 -20.13% 2013年 252回 ¥1,466,100円 49.27% 54.76% 1.41倍 -22.86% 2012年 273回 ¥982,300円 33.01% 51.65% 1.21倍 -33.33% 2011年 264回 ¥1,423,625円 47.84% 49.62% 1.28倍 -50.00% 2010年 238回 ¥525,900円 17.67% 54.62% 1.13倍 -50.00% 2009年 286回 ¥8,200,713円 275.58% 55.94% 2.62倍 -33.33% 2008年 332回 ¥668,400円 22.46% 50.60% 1.10倍 -32.64% 2007年 310回 -¥351,000円 -11.80% 44.52% 0.94倍 -30.34% 2006年 291回 ¥1,131,700円 38.03% 51.89% 1.26倍 -24.28% 2005年 220回 ¥545,500円 18.33% 49.55% 1.20倍 -18.97% 2004年 256回 ¥1,387,400円 46.62% 53.91% 1.40倍 -16.98% 2003年 292回 ¥3,197,700円 107.46% 61.30% 1.77倍 -22.77% 2002年 301回 ¥965,800円 32.46% 48.84% 1.21倍 -27.30% 2001年 328回 ¥1,012,000円 34.01% 50.61% 1.20倍 -21.52% 2000年 357回 ¥2,285,200円 76.79% 52.94% 1.38倍 -23.64% |
利益曲線は次の通り。
うーん、サイトで紹介されている結果とは全く異なる。
近年の利益もあまり良くない。
とはいえ多くのイザナミユーザは、このサンプルを改造するかストラテジーを購入していると思うので、ちょっと修正してみた。
1 2 3 4 5 6 7 8 9 10 11 |
//================================================== // 売買(買い) //================================================== // 1) 15日移動平均線より株価が10%より下にあった場合 flag1 = diffma < 10 // 2) 株価が100円以上 flag2 = Close >= 100 // 3) 20日平均売買代金が2億円以上 tv = TradingValume(20) flag3 = tv >= 20000 if (flag1 && flag2 && flag3) |
利益曲線は次のとおり。
多少サンプルに似たグラフになった。
でもパラメータをグリグリ動かして調整するのは私の性分に合わないわ。
まとめ
1~3日後に利益が出る銘柄選びばかりしてたけど、塩漬けが得意な私としては長期保有の銘柄選びにシステムトレード使うほうが良いんじゃないか?と思い始めた。
一生下がり続けるような銘柄ばかり購入してしまう私は市場ではカモにしかなってないわ。
また、イザナミが初心者向けとしている逆張り戦略は実は資金管理が難しくあまり初心者向けじゃない気がするので注意を。
ソースコード
バックテストには無料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 |
# loop-type: date-only //============================== require "TIlib" require "Utility" require "TrendCheck" // ====================================== // イザナミのサンプル手法 // ====================================== // //【仕掛けのルール】 // 1) 15日移動平均線より株価が10%より下にあった場合 // //【手仕舞いのルール】 // 1) 10日以上持っていた場合 // 2) 5%以上の含み損が出た場合 // 3) 5%以上の含み益が出た場合 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 = 7 // 最大保有日数 $shortSelling = 0 // 空売り戦略 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(15) $hold[i] = 0 return end //指標の計算を1日進める DiffMA_next($DiffMA[i]) //================================================== // 保有してない→購入 //================================================== if (! $hold[i]) diffma = DiffMA_value($DiffMA[i]) if ! (diffma && Close) return end //================================================== // 売買(買い) //================================================== // 1) 15日移動平均線より株価が-10%より下にあった場合 flag1 = diffma <= -10 if (flag1) $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 //================================================== // 売買(売り) //================================================== // 1) 利食い:5%以上の含み益が出た場合 if (Close >= 1.05 * $buy[i]) PrintLog("利食い") $sellflag[i] = 1 $set[i] = 0 // 2) 損切り:5%以上の含み損が出た場合 elsif (Close <= 0.95 * $buy[i]) PrintLog("損切り") $sellflag[i] = 1 $set[i] = 0 // 2) 損切り:10日以上持っていた場合 elsif ($set[i] >= $MaxHoldDay) PrintLog("損切り") $sellflag[i] = 1 $set[i] = 0 end end 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 ($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 //==================== // 銘柄コードを変えながら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 |