IB証券(インタラクティブ・ブローカーズ証券)にてCFDのダウ30と日経225をMACDでデイトレードするシストレを紹介します。Pythonで構築したシステムは、コピペだけでほとんどそのままシストレを開始できます。状況次第ですが年利10%は固いです。
本ページのシストレについて、IB証券でこのCFDは取引できないことが判明しました。
先物であれば取引ができますので、先物で再検討します。少々お待ち下さい。
前提
投資の考え方
今回の投資手法の指針は、以下のように考えました。
「勝つためには負けないこと」
馬鹿じゃねえか。当たり前だろう。という皆様、私もそう思いました。
しかし、ある時、あるハイレバでガンガン儲けているYouTubeの動画で言っていた以下のことを思い出しました。
「FXのUSD/JPYは、極端な価格のポジションでは無く、且つレバレッジが大きく無ければいつか勝てる」
そうだ!これだ!
ということは、トレンドが並行か、右肩上がりの買い、もしくは右肩下がりの売りを仕掛ければ、いつかは利食いできる。
でも、これに近いことというか、これをやっていたのですが、それでも負けました。というか大負けです。
VIXという恐怖指数の投資ですが、いつかは世の中は安定するから下がるという投資です。
上記の条件に当てはめると、13ドルくらいの売り(極端というほどでもないかと。。)、レバレッジというより70ドルに暴騰してもいいようにたっぷりの証拠金を積んでいました。が、なんと歴代1位になる高騰を見せ、あっさりと玉砕しました。。。
これらを踏まえ、今回の投資の方向性の考え方です。
- DOW30、日経225を買いで仕掛ける。
- 現在の価格は最高値の8割くらい。あがる余地は十分ある。
- 下がるリスクも最大2割と考える。(3月に最高値の6割くらいになったから。
- 買いのみ。売りはやらない。
- 今よりは世の中良くなると考えるから。
- インジゲーターMacdの1分足と5分足が買いクロスになったら買い。
- 根拠は弱いのですが、私が手動でトレードしているときに、概ねその動きに合わせると利益が出そうな気がしたからです。
- 上昇トレンドの時だけトレードする。
- 下げ相場で逆張りはうまくいかないです。
- 上げ相場の下げを狙うスタンスです。
目標
同期間のそれぞれの株価上昇率より10%以上、上回るパフォーマンスを出せること。
(特に意味はないのですが、同じパフォーマンスだったらシストレでなく普通に買えばいいだけになります。ではどれくらい以上のパフォーマンスがいいのかというと、これは個人の感覚かと思います。ということで10%くらいはなんとかしたいと。
シストレの投資手法
金融商品 | CFD(ダウ30、日経225) | ||
金融機関 | IB証券(インタラクティブ・ブローカーズ証券) | ||
資金 | DOW30:5万米ドル、日経225:500万円(これらはバックテスト用という意味です。 | ||
売買 | 買いのみ | ||
売買数量 | DOW30:5枚、日経225:500枚の固定(複利効果を使わず | ||
投資判断 | 買い | 発注 | インジゲーターMacdの1分足と5分足、日足が買いクロス(バックテストの結果、日足を含めない方がパフォーマンスが良かった。 |
利確 | インジゲーターMacdの1分足か5分足のどちらかが買いクロスを外れた場合、且つ利益が100pips以上 | ||
損切 | しない | ||
売り | 発注 | ー | |
利確 | ー | ||
損切 | ー |
投資対象の商品情報
IB証券のCDFはイギリスのIB証券の商品となっており、欧州証券市場監督局(ESMA)によるルールが適用されるようです。
ダウ30 | 日経225 | |
シンボル | IBUS30 | IBJP225 |
通貨 | USD | JPY |
取引数量(枚 | 1〜20 | 1〜850 |
手数料*片道 (最低手数料) | 0.01% ($1.00) | 0.01% (¥40) |
取引時間 (BST、英国時間 | 通常取引時間 08:00~21:00 取引可能時間 03:00~16:00 | 通常取引時間 01:00~07:10 取引可能時間 20:00~02:10 |
*手数料は約定レートに対してのパーセントです。片道となっています。決済時の約定レートで手数料が発生します。
オーバーナイトの借入金利はベンチマークの± 1.5%となっています。
とあるので注意しましょう。現時点では買いの場合は金利をもらえます。
その他、詳しくは以下を参照してください。
証拠金は以下を参照してください。
システム要件
開発環境
- OS:macOS Carolina 10.15.4
- 言語:Python 3.7.2
- 開発ツール
- バックテスト用システム:Jupyter Notebook 1.0.0
- 本番用システム:Visual Studio Code 1.45.1
本番環境
- OS:Windows Server 2012 R2(AWS
- 言語:Python 3.7.4
あれ。Pythonのバージョンがあっていませんね。。。気にしない気にしない。。。
バックテスト
システム
以下はGithubにアップしていますので、ダウンロードして利用してください。
(左下のファイル名をクリックするとGithubのサイトに遷移します。「Download ZIP」をクリックするとダウンロードできます。)
過去データはIB証券からダウンロードしたものを利用しているのですが、それは再配布禁止とIB証券の規約になっていたと思いますので、手間ですが、ご自身でダウンロードしてください。
過去データは、1分足、5分足、日足を使っています。
ファイル名は投資対象のシンボル名+足(1分足:M1、5分足:M5、日足:D1)になっています。
例)IBJP225_D1.csv
ソースにゴミがあったりしますが、すいません。
注意
- バックテストに手数料は含まれていません。
- スプレッドは固定でテストしていますが、実際には変動します。
結果
当初の投資手法の通り
シンボル | 投資回数 | 期間日数 | 回数/日数 | 損益PIPS | 期間PIPS | 損益/期間PIPS | 資金残 | 上昇率 | 利益回数 | 損失回数 | 勝率 |
IBUS30 | 7 | 22 | 31.80% | 1120.85 | 627 | 178.80% | 55,604 | 111.20% | 7 | 0 | 100% |
IBJP225 | 13 | 18 | 72.20% | 1085.03 | 1112 | 97.60% | 5,542,515 | 110.90% | 12 | 0 | 100% |
投資判断から日足のmacdの判断を除く
シンボル | 投資回数 | 期間日数 | 回数/日数 | 損益PIPS | 期間PIPS | 損益/期間PIPS | 資金残 | 上昇率 | 利益回数 | 損失回数 | 勝率 |
IBUS30 | 12 | 22 | 54.50% | 1637.27 | 627 | 261.10% | 58,186 | 116.40% | 11 | 0 | 100% |
IBJP225 | 20 | 18 | 111.10% | 1476.42 | 1112 | 132.80% | 5,738,210 | 114.80% | 19 | 0 | 100% |
日足のmacdの判断を除いたものに、投資判断に1分足のmacdが0以上の場合に実行するを追加
シンボル | 投資回数 | 期間日数 | 回数/日数 | 損益PIPS | 期間PIPS | 損益/期間PIPS | 資金残 | 上昇率 | 利益回数 | 損失回数 | 勝率 |
IBUS30 | 12 | 22 | 54.50% | 1586.05 | 627 | 253.00% | 57,930 | 115.90% | 11 | 0 | 100% |
IBJP225 | 20 | 18 | 111.10% | 1457.4 | 1112 | 131.10% | 5,728,700 | 114.60% | 19 | 0 | 100% |
まとめ
- 投資方針に下降トレンド時に対策として日足のmacdの判断を付けたがパフォーマンスが落ちた。
(上記の投資手法など訂正済み。ソースには残骸があります。
以下は、投資判断から日足のmacdの判断を除いた場合です。
- 約1ヶ月間のテストとなったがパフォーマンスは月利15%ほどだった。
- 期間の株価(CFD)の上昇率より、ダウ30は約2.6倍、日経は約1.3倍となった。
- 日経225よりダウ30の方がパフォーマンスが良かった。多分、ボラティリティが大きいということだと思います。
- 作りながら1分足のMACDが1以上という追加の条件を考えたが、パフォーマンスは少し落ちた。
(上記のソースに残骸があります。
課題
- 長期間などのテストを再実施する。
- 上記ともつながるが、今回のようなショックで天井で掴むリスクがある。この回避方法はないか。
- 期間中の最大の含み損はいくらになるのか。またロスカットされないのか。
今後の方針
基本的に良い結果を得られたので、課題事項を確認した上で、本番に入りたいと思います。
課題の対応
以下の2つをバックテストしました。
- 長期間などのテストを再実施する。
- 期間中の最大の含み損はいくらになるのか。またロスカットされないのか。
2020年の年初から
シンボル | 投資回数 | 期間日数 | 回数/日数 | 損益PIPS | 期間PIPS | 損益/期間PIPS | 資金残 | 上昇率 | 利益回数 | 損失回数 | 勝率 | 含み損PIPS | 左記の価格 |
IBUS30 | 12 | 101 | 11.90% | 1262.84 | -4008 | -31.50% | 56,314 | 112.60% | 11 | 0 | 100% | -11208 | 29460 |
IBJP225 | 3 | 78 | 3.80% | 139.02 | -3680 | -3.80% | 5,069,510 | 101.40% | 2 | 0 | 100% | -7849 | 24090 |
まとめ
- 今回のコロナショックがあったので想定通りだったが、天井を掴んでそのままトレードがストップ。
- それでも途中までは、DOW30は112.6%の利益を出しています。
最大含み損の時のロスカットの検証
IBUS30 | IBJP225 | |||
建玉時 | 貸付資産を含む資産価値 | 現金 | 0 | 0 |
貸付 | -97,300 | -7,045,000 | ||
金融資産 | 147,300 | 12,045,000 | ||
ELV | 50,000 | 5,000,000 | ||
維持証拠金 | 金融資産 | 147,300 | 12,045,000 | |
維持証拠金率 | 25% | 25% | ||
MM | 36,825 | 3,011,250 | ||
証拠金余力 | ELV – MM | 13,175 | 1,988,750 | |
最大含み損の時 | 貸付資産を含む資産価値 | 現金 | 0 | 0 |
貸付 | -97,300 | -7,045,000 | ||
金融資産 | 91,260 | 8,120,500 | ||
ELV | -6,040 | 1,075,500 | ||
維持証拠金 | 金融資産 | 91,260 | 8,120,500 | |
維持証拠金率 | 25% | 25% | ||
MM | 22,815 | 2,030,125 | ||
証拠金余力 | ELV – MM | -28,855 | -954,625 |
ぶっちぎりのロスカットですね。資金を増やすか、数量を減らさないとダメですね。
2019年のデータ
シンボル | 投資回数 | 期間日数 | 回数/日数 | 損益PIPS | 期間PIPS | 損益/期間PIPS | 資金残 | 上昇率 | 利益回数 | 損失回数 | 勝率 | 含み損 | 左記の価格 |
IBUS30 | 51 | 252 | 20.20% | 5793.6 | 5451 | 106.30% | 78,968 | 157.90% | 50 | 0 | 100% | -2073.01 | 27314.01 |
IBJP225 | 42 | 241 | 17.40% | 4744.14 | 4230 | 112.20% | 7,372,070 | 147.40% | 41 | 0 | 100% | -2226.34 | 22289.8 |
まとめ
- 2019年は上昇トレンドでしたが、株価の上昇よりも本シストレの方が少しに高かったです。10%前後ですね。まぁ目標は達成していると判断しましょう。
- 年利はきたーって感じです。約1.5倍に資産が増えています。
- ダウ30:年利157.9%
- 日経225:年利147.4%
- 回数/日数が20%弱くらいなので週に1回くらいの投資になります。
最大含み損の時のロスカットの検証
IBUS30 | IBJP225 | |||
建玉時 | 貸付資産を含む資産価値 | 現金 | 0 | 0 |
貸付 | -86,570 | -6,144,500 | ||
金融資産 | 136,570 | 11,144,500 | ||
ELV | 50,000 | 5,000,000 | ||
維持証拠金 | 金融資産 | 136,570 | 11,144,500 | |
維持証拠金率 | 25% | 25% | ||
MM | 34,142 | 2,786,125 | ||
証拠金余力 | ELV – MM | 15,858 | 2,213,875 | |
最大含み損の時 | 貸付資産を含む資産価値 | 現金 | 0 | 0 |
貸付 | -86,570 | -6,144,500 | ||
金融資産 | 126,205 | 10,031,500 | ||
ELV | 39,635 | 3,887,000 | ||
維持証拠金 | 金融資産 | 126,205 | 10,031,500 | |
維持証拠金率 | 25% | 25% | ||
MM | 31,551 | 2,507,875 | ||
証拠金余力 | ELV – MM | 8,084 | 1,379,125 |
ロスカットされなかったようです。
しかし、もう少し資金を増やすか、数量を減らさないと危険ですね。
2018年のデータ
シンボル | 投資回数 | 期間日数 | 回数/日数 | 損益PIPS | 期間PIPS | 損益/期間PIPS | 資金残 | 上昇率 | 利益回数 | 損失回数 | 勝率 | 含み損 | 左記の価格 |
IBUS30 | 16 | 251 | 6.40% | 1894.41 | -1620 | -116.90% | 59,472 | 118.90% | 15 | 0 | 100% | -5245 | 26935 |
IBJP225 | 10 | 245 | 4.10% | 831.86 | -3270 | -25.40% | 5,415,930 | 108.30% | 9 | 0 | 100% | -5477 | 24427 |
まとめ
- 株価は、年初からは少し下げていますが、ほぼ横ばいのトレンドだったようです。
- そんな中のシストレですが、どうやら天井を掴んだようで、投資回数が著しく少ないです。
- それまでの利益は良かったようです。
- DOW30:年利18.9%
- 日経225:年利8.3%
最大含み損の時のロスカットの検証
IBUS30 | IBJP225 | |||
建玉時 | 貸付資産を含む資産価値 | 現金 | 0 | 0 |
貸付 | -84,675 | -7,213,500 | ||
金融資産 | 134,675 | 12,213,500 | ||
ELV | 50,000 | 5,000,000 | ||
維持証拠金 | 金融資産 | 134,675 | 12,213,500 | |
維持証拠金率 | 25% | 25% | ||
MM | 33,669 | 3,053,375 | ||
証拠金余力 | ELV – MM | 16,331 | 1,946,625 | |
最大含み損の時 | 貸付資産を含む資産価値 | 現金 | 0 | 0 |
貸付 | -84,675 | -7,213,500 | ||
金融資産 | 108,450 | 9,475,000 | ||
ELV | 23,775 | 2,261,500 | ||
維持証拠金 | 金融資産 | 108,450 | 9,475,000 | |
維持証拠金率 | 25% | 25% | ||
MM | 27,112 | 2,368,750 | ||
証拠金余力 | ELV – MM | -3,338 | -107,250 |
ほんの少しですが、資金を増やすか、数量を減らさないとロスカットされます。
もしかするとそれまでの利益でギリギリですが、ロスカットされなかったかも知れません。
日経でいうと、上記では10万円強足りずにロスカットですが、それまでに40万円ほどの利益を出していますので、助かっていたようです。DOW30は同じですね。
しかし、タイミングの問題で、この頂点の時にこのシストレを初めていたら利益はないのでロスカットされます。アウトです。
課題のまとめ
- 資金の余裕がなかったり、ロスカットされてしまいます。
2020年の初期からのデータで、以下の設定で、軽くバックテストしました。
- DOW30:数量を3枚
29,460米ドル × 3枚 = 88,380米ドル – 現金50,000米ドル = 38,380米ドル × 1.33 = 51,045米ドル
29,460米ドル -11,208pips = 18,252米ドル × 3枚 = 54,756米ドル - 日経225:数量を300枚
24,090円 × 300枚 = 7,227,000円 – 現金5,000,000円 = 2,227,000円 × 1.33 = 2,961,910円
24,090円 -7,849pips = 16,241円 × 300枚 = 4,872,300円
- DOW30:数量を3枚
上記のように減らせば、今回のショックでも耐えうることがわかりました。
- 天井掴みは仕方ないですね。ただ、基本的には右肩上がりだと信じるしかないかも知れません。
あとはいつ始めるかのタイミング次第ですね。
本番
作成しました。こんな感じかなと思います。
本来であれば、バックテストと本番のシステムは同じものがいいと思うのですが、いろいろ面倒なので別に作りました。
その他、所々、ちょっとと思うところはありますが。。。
インポートしている独自のライブラリが2つあります。
import cls_db
import cls_line
:self.access_token
のところは設定してください。
シストレの本体
CFDs
のところで、購入する数量を変更してください。現状はバックテストに合わせています。# System
のコメント以下のところのIPやポート、クライアントIDは自身の仕様に変更してください。# 通知
のコメント以下のところは不要でしたら削除してください。- 通常取引時間のみ取引しています。時間外取引は停止します。
コメント