その結果、バグが発覚したため一度非公開にしました。
今はバグを改修したバックテストのシステムを公開しています。
はじめの公開時に閲覧された方には申し訳ないです。
はじめに
以下の記事を参考に、実現できるか検証してみようと思います。
メガヴィンさんは、元手100万円を10年間のデイトレードで4億円の資産を築いてきたということで、同じようにシストレできないか検証してみようと思います。
ギャップダウン(GD)を利用した投資手法ですが、いわゆる窓埋め理論と同じようなものですね。
私は窓埋めに関しては、FXでさんざん調査したのですが、うまくいきませんでした。
*本ブログを開設する前なので記事がありません。いずれ再調査したら掲載します。
投資手法
以下の手法に関する内容は引用しています。
前提
- 日本株は前日の米国株市場の動きに連動しやすい。
- 米国株が大きく下げると翌日の東京市場も全体として下げて始まり、多くの銘柄が前日終値から大きくGDした状態で寄り付く。
- だが、本来上昇の勢いがある銘柄は、一時的に米国株に連れ安しても、前日終値付近まではすぐに値を戻すことが多い。
私はIB証券では日本株のデータを取得できないため、米国株で試そうと思います。
逆もまた真なりということで。。。
銘柄
- 狙い目は株価が右肩上がりで出来高が多く、勢いのある新興銘柄。
- 信用売り銘柄は対象外。
米国株で、新興銘柄とかよくわからないので、ランダムに選択しました。また信用売り銘柄という考えがアメリカにはないかも知れません。
勢いのあるってところは時期により銘柄を選択すべきですが、今回は固定で検証します。
たぶんメガヴィンさんもどの銘柄に投資するか検討されていると思います。
大御所からベンチャーまでというところです。ちょっとNASDAQに偏っています。新興ってことで!?
取引所 コード | 銘柄名 | 業種 | |
---|---|---|---|
NASDAQ | TSLA | テスラ | 自動車 |
NASDAQ | AAPL | アップル | コンピュータ関連 |
NYSE | MCD | マクドナルド | レストラン & バー |
NASDAQ | SBUX | スターバックス | 外食 |
NASDAQ | EXPE | エクスペディア・グループ | レジャー・オンライン旅行 |
NASDAQ | BYND | ビヨンド・ミート | 食品 |
NYSE | DIS | ウォルト・ディズニー | 娯楽 |
戦略1:GDの反転を取る
- 寄り付きが前日終値より下落した場合に仕込む。
- その後、上がれば前日終値で利確。下がれば9時50分まではナンピンし、10時には決済(利確または損切り)
アメリカのNYSEとNASDAQの開始時間は9:30です。30分繰り上げて考えます。
戦略2:1泊2日の持ち越しの取引
- 14時30分頃から引けにかけて急上昇したもの、チャートに大きな上ひげを付けた陽線が出ているなどの銘柄。
- 引け間際の14時30分から15時に仕込む。
- 翌日の寄り付きの始値が上回れば利確。下がった場合は戦略1と同様に9時50分まではナンピンするが早めに利確。
アメリカのNYSEとNASDAQの終了時間は16:00です。1時間繰り下げて考えます。
投資内容
目標
メガヴィンさんは、10年間のデイトレードで4億円の資産を築いてきたということで、複利効果を使う前提で、およそ年利95%(約2倍)だと100万円が約4億円になります。
かなりハードルが高いです。というかメガヴィンさん、すごい。
投資の神様のウォーレン・バフェットは、複利計算で約21%のリターンを約50年間も出しているそうです。
95%を10年間のメガヴィンさんと21%を50年間のウォーレン・バフェットは比べようがないですが、メガヴィンさんもこのままいけば神の域ですね。
年利95%(約2倍)と言いたいところですが、極力それに近ければ大成功です!!
私は庶民の凡人です。
投資手法
金融商品 | *上記のとおり | ||
金融機関 | IB証券(インタラクティブ・ブローカーズ証券) | ||
資金 | 各株式を10万米ドル | ||
売買 | 買いのみ | ||
売買数量 | 複利効果で自動計算(資金をロットと株価で割った数量) よってナンピンはできません。 | ||
投資判断 | 買い | 発注 | 戦略1を採用 前日の終値より始値が安い (手数料を差し引く、かつギャップ幅は調整で設定する) かつ、単純移動平均線5日が25日を上回っている (勢いがある判断として) |
利確 | 10時30分までに前日の終値に達したら場合 ー>10分足を利用していたため10時40分までとなっています。 | ||
損切 | 10時30分までに前日の終値に達しなければ決済 ー>10分足を利用していたため10時40分までとなっています。 | ||
売り | 発注 | ー | |
利確 | ー | ||
損切 | ー |
システム対応の可否
以下の2つがシステムで可能なのか調べました。
- 「前日の終値より始値が安い場合」というところで、指値+始値が可能か?
- 複数銘柄の発注で一つが約定すれば他をキャンセルできるか?
- 1と2を組み合わせた発注は可能か?
1.「前日の終値より始値が安い場合」というところで、指値+始値が可能か?
IB証券ではLimit-on-Open (LOO) Ordersという発注の方法があり、指値+始値で取引が可能です。
詳しくはIB証券の公式サイトを参照してください。
サンプルコード
# Limit-on-Open (LOO) Orders contract = Stock('SBUX', 'SMART', 'USD') looOrder = Order( orderType = 'LMT', tif = "OPG", action = 'BUY', totalQuantity = 1, lmtPrice = 85 ) ib.placeOrder(contract, looOrder)
2.複数銘柄の発注で一つが約定すれば他をキャンセルできるか?
複数の銘柄を調査していますが、複数銘柄の発注で一つが約定すれば他をキャンセルできるようにならないと資金不足になります。
IB証券では、OCA(One-Cancels-All)注文という発注の方法があり、対応が可能です。
詳しくはIB証券の公式サイトを参照してください。
サンプルコード
# OCA(One-Cancels-All)注文 contracts = [ Stock('TSLA', 'SMART', 'USD'), Stock('AAPL', 'SMART', 'USD') ] ocaOrders = [ LimitOrder('BUY', 1, 115), LimitOrder('BUY', 1, 348) ] ib.oneCancelsAll(ocaOrders, "Test", 1) for index, order in enumerate(ocaOrders): ib.placeOrder(contracts[index], order)
3.1と2を組み合わせた発注は可能か?
最後の問題は、上記の2つを組み合わせて発注できるかというところですが、調査した結果、駄目なようです。
以下のようなエラーが発生しました。
Error 201, reqId 20: 発注が拒否されました-理由:無効なOCA操作方法です。
サンプルコード
*上記のエラーになります。
# OCA & LOO contracts = [ Stock('EXPE', 'SMART', 'USD'), Stock('BYND', 'SMART', 'USD') ] ocaOrders = [ Order( orderType = 'LMT', tif = "OPG", action = 'BUY', totalQuantity = 1, lmtPrice = 99 ), Order( orderType = 'LMT', tif = "OPG", action = 'BUY', totalQuantity = 1, lmtPrice = 134 ) ] ib.oneCancelsAll(ocaOrders, "Test3", 1) for index, order in enumerate(ocaOrders): ib.placeOrder(contracts[index], order)
システム対応の可否の結論
複数銘柄の発注で一つが約定すれば他をキャンセルできるOCA注文のみを活用して、寄り付きの間際に指値で注文するしかないようです。この発注で初値になるかは不明ですが普通で考えれば大丈夫だと思います。
ただし、このOCA注文の他の注文をキャンセルにする機能については自動で処理されますが、キャンセルを保障している訳ではないようで、100%ではないということです。
資産を100%使って投資する場合は大きなリスクになります。資産の配分を考えるか、ティックデータを取得して初値直後でトレードするなどの方法を検討する必要があります。
本番のシステムを構築する際は後者の方で検討したいと思います。
システム
システム要件
- OS:macOS Carolina 10.15.6
- 言語:Python 3.7.2
- 開発ツール:Jupyter Notebook 1.0.0
システム要件外でも動作すると思います。
システム
以下はGithubにアップしていますので、ダウンロードして利用してください。
(左下のファイル名をクリックするとGithubのサイトに遷移します。「Download ZIP」をクリックするとダウンロードできます。)
システムにはIB証券からヒストリカルデータ(過去データ)のダウンロードも含まれています。
ヒストリカルデータは10分足を利用しています。
シストレのバックテストの結果
年度別の結果
- actNum:投資回数
- days:対象期間日数
- wonPips:利益PIPS
- termPips:対象期間の上昇PIPS
- portfolio:資金
- tickets:残建玉
- cntWin:勝った回数
- cntLoss:負けた回数
- last_portfolio:残建玉の評価額
2020年(1月〜8月末までの8ヶ月間)
上下は単純移動平均線の有無です。
0.97というのは、ギャップ幅の調整として、前日の終値から往復の手数料を引いた値に掛けた結果を投資判断に指定mす。
要は始値の3%が概ねの利益となります。
0.97 With SMA symbol actNum days per wonPips termPips per portfolio per tickets cntWin cntLoss pre last_portfolio 0 TSLA 3 166 1.8% 3.948457 411 1.0% 101,963 102.0% 0 3 0 100% 0 1 AAPL 1 166 0.6% 2.879486 57 5.1% 104,731 104.7% 0 1 0 100% 0 2 MCD 1 166 0.6% 5.439485 15 36.3% 102,867 102.9% 0 1 0 100% 0 3 SBUX 2 166 1.2% -0.341029 -3 11.4% 99,004 99.0% 0 1 1 50% 0 4 EXPE 3 166 1.8% -1.591543 -9 17.7% 97,552 97.6% 0 1 2 33% 0 5 BYND 5 166 3.0% -4.852572 62 -7.8% 92,640 92.6% 0 1 4 20% 0 6 DIS 2 166 1.2% -3.931029 -13 30.2% 96,319 96.3% 0 0 2 0% 0 Portfolio average 99296.57142857143 0.97 Without SMA symbol actNum days per wonPips termPips per portfolio per tickets cntWin cntLoss pre last_portfolio 0 TSLA 21 166 12.7% -7.620804 411 -1.9% 92,728 92.7% 0 12 9 57% 0 1 AAPL 8 166 4.8% 7.905884 57 13.9% 113,080 113.1% 0 7 1 88% 0 2 MCD 6 166 3.6% 14.076913 15 93.8% 109,136 109.1% 0 4 2 67% 0 3 SBUX 9 166 5.4% -0.694630 -3 23.2% 98,398 98.4% 0 2 7 22% 0 4 EXPE 15 166 9.0% -9.387717 -9 104.3% 83,610 83.6% 0 6 9 40% 0 5 BYND 18 166 10.8% 1.120739 62 1.8% 99,978 100.0% 0 8 10 44% 0 6 DIS 8 166 4.8% -10.694116 -13 82.3% 90,406 90.4% 0 1 7 12% 0 Portfolio average 98190.85714285714
やはり、いい感じに利益は出ませんね。
単純移動平均線がある方が成績はいいですね。しかし当たり前ですが投資回数が少ないです。
ギャップを緩めると投資回数は増えますが、勝率も下がり、余計に悪くなります。
ナンピンをイメージして、初値でダメな場合は、10分足の安値でエントリーできるか検証しました。
他の条件は同じです。
0.97 With SMA symbol actNum days per wonPips termPips per portfolio per tickets cntWin cntLoss pre last_portfolio 0 TSLA 27 166 16.3% -71.720014 411 -17.5% 51,759 51.8% 0 12 15 44% 0 1 AAPL 12 166 7.2% -3.205884 57 -5.6% 95,618 95.6% 0 5 7 42% 0 2 MCD 12 166 7.2% 2.143416 15 14.3% 100,403 100.4% 0 7 5 58% 0 3 SBUX 15 166 9.0% -7.092130 -3 236.4% 90,105 90.1% 0 4 11 27% 0 4 EXPE 32 166 19.3% -43.885591 -9 487.6% 47,753 47.8% 0 9 23 28% 0 5 BYND 31 166 18.7% -52.270574 62 -84.3% 54,276 54.3% 0 12 19 39% 0 6 DIS 17 166 10.2% -16.951161 -13 130.4% 85,324 85.3% 0 4 13 24% 0 Portfolio average 75034.0
余計に悪くなりました。。。
2019年
単純移動平均線の判断ありで、ギャップも0.97と同じです。ナンピンイメージはなしです。
0.97 With SMA symbol actNum days per wonPips termPips per portfolio per tickets cntWin cntLoss pre last_portfolio 0 TSLA 0 252 0.0% 0 23 0.0% 100,000 100.0% 0 0 0 0% 0 1 AAPL 0 252 0.0% 0 35 0.0% 100,000 100.0% 0 0 0 0% 0 2 MCD 0 252 0.0% 0 22 0.0% 100,000 100.0% 0 0 0 0% 0 3 SBUX 0 252 0.0% 0 24 0.0% 100,000 100.0% 0 0 0 0% 0 4 EXPE 0 252 0.0% 0 -2 -0.0% 100,000 100.0% 0 0 0 0% 0 5 BYND 0 169 0.0% 0 29 0.0% 100,000 100.0% 0 0 0 0% 0 6 DIS 0 252 0.0% 0 36 0.0% 100,000 100.0% 0 0 0 0% 0 Portfolio average 100000.0
投資回数は0になりまた。。。
2018年
BYNDは上場の前のため、除外しています。
symbol actNum days per wonPips termPips per portfolio per tickets cntWin cntLoss pre last_portfolio 0 TSLA 0 251 0.0% 0.000000 4 0.0% 100,000 100.0% 0 0 0 0% 0 1 AAPL 1 251 0.4% -1.050514 -3 35.0% 98,025 98.0% 0 0 1 0% 0 2 MCD 0 251 0.0% 0.000000 3 0.0% 100,000 100.0% 0 0 0 0% 0 3 SBUX 0 251 0.0% 0.000000 6 0.0% 100,000 100.0% 0 0 0 0% 0 4 EXPE 0 251 0.0% 0.000000 -9 -0.0% 100,000 100.0% 0 0 0 0% 0 5 DIS 0 251 0.0% 0.000000 0 0% 100,000 100.0% 0 0 0 0% 0 Portfolio average 99670.83333333333
全体で、1回しかトレードができず、それも損失になっています。
まとめ
メガヴィンさんの10年間のデイトレードで4億円の資産を築いてきた株式トレードをシストレで再現してみたのですが、再現は難しそうです。
今回は、ところどころで仕様を変更しています。
- 米国株
- 勢い*メガヴィンさんは何で判断しているのでしょうか??神のみぞ知る感覚でしょうか!?
- 新興銘柄
- 空売りの株を対象から外す
- ナンピン
- ロスカットの時間*10時30分までではなく10時40分までになっている。
- 複利効果
- など
また戦略2に関しては調査できていません。別の機会に調査します。
今回も残念ながらボツ案にしました。
はじめバグで利益が出ると思って本番のシステムを開発したのですが、バグが発覚したので公開はやめようと思います。
コメント