Python x SPY500でシストレ作るならこんな構成
資金投資を考えた時に、プログラミングと機械学習の知識を使って一定自動化できないかな?と考えたので、考えている構成などをメモメモ。
最初は長期投資枠で資金の8割くらい当てておいて、残り2割でアグレッシブな運用利かせたい想定。 ↓Udemyの講座で勉強した内容を使って、実際に手を動かしたくなった。
理論面の勉強ばかりで、ちょっと飽きて来たので、Kaggleと2本立てで実際のデータ分析のトレーニングになればと。 www.udemy.com
概念マップ
対象とする金融商品
SPY500系のレバレッジ3倍ETF --> 市場全体が相手なので、騙しが少ないらしい。(酒井さん談) --> レバレッジが効いているのでボラは大きいが、利幅は取れる --> 追証の心配なし
ロードマップ
- デモの開発
- バックテストの実行
- デモトレードを1ヶ月実行
- 実戦投入!
アルゴリズムと基本戦略
基本的なテクニカル指標 / 時系列(ARIMA・ARCH・GARCHあたり) / DLベースの予測を特徴量とした、2クラス分類を想定。以下のような本で、他に使えそうな特徴量があったら、そいつも使う。どなんだろ、ほとんどテクニカル指標が使われそうな気がする。
"〇〇以内に、損切りせずに、一定の利幅で利確可"が正解ラベルかな。
- トレンドフォローで順張り。確実に勝てそうな時に、コツコツ利確していく感じ。損切りは必ず設定する。
運用している時のイメージ
- 基本API Gatewayで叩き口を用意しておいて、GASで特徴量の計算と予測を実行。(GASじゃなく、Vueの方が楽しいのでそちらにするかも)
- バックテストで有効なしきい値を設定しておいて、特定の値を超えた場合は、Slackに通知(# 買い時)
ライブラリ群
- numpy / pandas / altair (基本ライブラリ)
- statsmodels (時系列分析に使用)
- XGBoost / LightGMB (最終的な予測に使用)
- pyti(テクニカル指標の計算)
- keras(ディープニューラルネットワークでの特徴量生成に使用。LSTM。)
- backtesting.py (バックテストの実行)
バックテストのハイパーパラメーター
- モデルの更新期間
- 採用しきい値
残り色々
- ETFをAPI経由で売買できるのか?? 契約してる証券会社によるが、国内証券会社だと難しい気がする
- そもそもレバ3倍のSPY500 ETFをどこで買えるかまだ調べてない
- 試験対策 & アプリケーション実装という意味で、実際に手を動かすフェイズになってきたかなという感じ。