エンジニアが片手間にシステムトレードできそうな対象(投資生活3年生 ①)

# (はじめに)コードを書いて取引を自動化しやすい投資対象は？

最近、片手間投資作業が増えてきたのである程度は自動化できないかなと思ってます。ということで、取引を自動化して安定的に資産を増やせそうな投資対象として投資信託(投信)を選定し、半年ほどかけて人力で取引して得られた知見に基づいて、コードに落としていくことにしました。今回は何をしようとしているのかを書いて、次回以降、ちょこちょこ書いてるコードを公開していきます。目指すところは、投信への自動売買で、平均年リターン30%超え(年リターン50%～10%程度)。

使用(予定)の技術スタックは以下のような感じ:

- python(with pandas/seaborn etc.)
- web API(FRED / eMAXIS Web API /kabu.com API etc.)
- streamlit(可視化用のwebフレームワーク)

データの永続化はどうするか未定ですが、当初はpython組込のsqliteと(pyarrowでアクセスする)parquetファイルかな、と。

> (付記)　以下、投資タームが解説無しでいろいろ出てきますが、ググれば出で来るタームばかりですので、ご容赦を。自動投資を始めてしばらくたったら、投資対象と結果を自動投稿する仕組みを作りたいなと思っているので、その際には、ブログを立ち上げて投資タームなどなどの解説を書きたいな。

# 自動化対象として投資信託を選んだ経緯
さてさて、これまで僕がいろいろ試した投資対象と成果(当人の感想)は概ね以下の通り:

- FX(レバレッジあり為替トレード) : 大損
- ETFオートトレード(レバレッジあり) : 勝ち
- 投資信託(1日1回の金融商品投資) : 勝ち
- CFD(レバレッジあり株式・証券等のトレード) : ちょい勝ち
- 個別株(ミニ株で挑戦中) : ちょい勝ち

簡単に言うと、FXでの大損(計4回で100万円以上)を株式・債券系のトレードで取り戻してちょっとだけプラスというのがこの3年弱の成果。まぁ、しょぼい成果なのだけれど、なんとか勝ちパターンは見えてきたところ。
ということで、自分なりの勝ちパターンを自動化したいと考え始めた。システムトレードをネットで調べると、FXの情報が一番多いように思えるけれど、自分はFXのセンスがないらしいので、FXのシステムトレードは手出ししないことする:fearful:。

では、どれを自動化対象とするのが良さそうか？現時点で僕が考えていることは以下の通り:

- 値動きが激しいレバレッジをかけた取引(FX/CFD)は完全自動化は厳しそう(市場の動向が変った時に大きく損する可能性がある) 
- 業績で価格が上下動する個別株の取引きの自動化も厳しそう(PERなどの指標は過去の業績から推測された値に過ぎない)
- 複数の株式等を組み合わせて組成されている投資信託は値動きが比較的緩やかで、リバランスなどを自動的に無理なく行えそう。
- 投信は100円から１円単位の指値で売買できるので、投資資金が少ない人間(≒自分:relaxed:)には、取り組みやすい。

ということで、今年の目標は、投資信託(投信)を対象に自動化を試みることとしている。

※なお、現時点での僕の投資ポートフォリオの中で、投資信託が占める割合は多くはない。

2021年6月時点の投資ポートフォリオの概要:

- レバレッジETF(TQQQ/TMF/EDCなどなど) : 45%
- 投資信託(投信) : 25%(詳細は後述)
- 個別株と普通のETF : 20% (債券ETF : グロース株 : バリュー株　≒ 1:1:2)
- CFD : 10%(グロース : バリュー : 商品 : 各国株式市場ETF　≒ 1:2:2:2)

今年に入ってハイテク株が下がった2月、3月にグロース系のセクター別ETF(情報通信、一般消費財など)をレバレッジかけて買いすぎてしまい、ちょっとレバレッジETFに偏ってしまっているので、レバETFを利益確定するたびに、投信等に資金を振り向けなおそうとしているところ。

# 投信取引をどのように自動化すると良さそうか？　試行結果

これは、いわゆる要求開発にあたるところ。ただし、昨年までは投資信託は(企業年金で毎月積み立ててるMSCIコクサイを補充する程度に)適当にやってきたので、僕にさしたる知見はない。ということで、試験取引をしてまずは仮説を立てられることを目指すことにした。

そのために、(これまで使っていたマネックス証券、GMOクリック証券等に加え)投信取引用の口座を2つ開設。選択したのは、auカブコム証券と松井証券。共に投信商品が豊富に用意されており、以下の利点もある。

auカブコム証券を選んだ理由:

・web API経由で投資信託取引を自動化できる
・pontaポイントが貯まる(お得ポイント)

松井証券を選んだ理由:

・毎日積立ができる
・信託報酬の現金還元がある(お得ポイント)
・投信の自動リバランスサービスがある(使ってないけど)

投信取引を自動化するには、今のところauカブコム証券一択なので外せない。
他方、毎日定額積立に勝てるかどうかを自動取引のベンチマークにしたいと考えたので毎日積立ができる証券会社として松井証券を選んだ。

当初の感触では、UIは松井証券の方が分かりやすい。特に3月頃の株価下落時に松井証券の毎日積立を主に使い、auカブコム証券は月に1～2回リバランスする程度で放置気味だった(レバレッジをかけた投信商品などでは値動きが読みにくいため、毎日少額を積み立てる戦略が良さそうに思えた)。

ということで、こまめに日々人力でメンテし続けた松井証券と、お得感がありそうな時にピンポイントで売買したauカブコム証券。半年間での投資成果はどうかというと、どうもauカブコム証券でのピンポイント売買が優勢である。
ラフな試算では、毎日積立+リバランスあり戦略の松井証券のリターンが年換算で23.0%ほど。ピンポイント・リバランス戦略のauカブコム証券のリターンが年換算で30.9%ほど。毎日松井証券にアクセスしいろいろと投信の目論見書を読んで、ベストな積立戦略を追求し続けた自分としてはちょっと微妙な結果だね。

さて、これらの試行から得られた知見を確認しておこう。
はじめにトライアル勝者のピンポイント・リバランス戦略@auカブコム証券。
![au1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16455/8d457304-b145-ed44-7fab-fea2de0aceec.png)



こちらは良さげな投信を買って放置。3か月以内に10%以上の上昇をした投信は解約して利益確定し、その時々に良さげな投信に乗り換えるという戦略をとっている。リターンに大きく寄与したのが、ハイテク株にテーマ毎(ドローン、VR、ウェアラブル)に投資するeMaxis Neoシリーズの売買(↑の緑)。こうしたテーマ別の投信商品は値動きが大きい(月に数十%動くことも)ため、こまめな利益確定がリターンに寄与した。後は、底値に近いところでレバレッジ型投信(上ではNasdaqの新興ハイテク株(NXTQ)に投資する紫色の奴)もしばしの忍耐期間を経て、そこそこのリターンを上げつつある。これらを下支えしているのが債券を中心に株・REITなども併せてレバレッジをかけるレバレッジバランスファンド(↑の黄色)。一般にハイテク株と債券との値動きは結構違うので個々に利益を上げることができるハイテク株投信と債券系投信を組み合わせ、適宜リバランスすることで、より高いリターンを追求できる。

高いリターンの追求にレバレッジ投信商品を活用するアイデアは、以下の
「ROKOHOUSE式 可変レバレッジド・ポートフォリオ」を参考にしている。感謝。
http://www.rokohouse.net/archives/1921


 利益計算は当初少額から始めて、買いましたことを考慮して、
>(評価益5583円+売却益5156円)/現在価値104035円*12か月/平均投資期間4か月≒30.967%

とした。2017年時点の投資環境で算出された↑の「ROKOHOUSE式 可変レバレッジド・ポートフォリオ」(リスク許容度・大)の年リターン26.3%と同等以上の成果を上げつつあるようで、ピンポイント・(人力)リバランス戦略は満足いく成果を上げることができた。

次いで、トライアル敗者の毎日積立＆多数の商品をリバランス戦略の松井証券の方の結果。
![松井1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16455/d2280f01-d07e-d3f0-ada7-e597d15d93b3.png)

こちらは、トータルリターンをより分かりやすく表示してくれている。

リターン計算は、 同様に
>(全収益17324円/現在価値225934)*12か月/平均投資期間4 *100≒23.003%

と算出した。

毎日積立戦略が若干残念な結果となってしまったのは、当初の3か月くらい、レバレッジをかけずに日本株と債券を積み立てたためである。
日本株が昨年末の上昇の反動で不調であったため、積立を止めた後も評価損を抱えている。また、レバレッジをかけない債券のリターンはいずれも微妙。つまりは、毎日積立がいけないのではなく、僕が選んだ投資対象が間違っていた可能性が高いということ。

ということで、3月のNasdaq下落を受けて戦略を変更。レバレッジ投信を中心に、下落時にハイテク株投信を毎日積み立てる戦略とした(下図)。

![松井2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16455/04b2bd49-048e-02bc-2ba3-c999365e77aa.png)

結果、10%以下の年リターンに低迷していた3月時点から、6月に入って年20%以上の年リターンへと大きく改善することができている。

# 人力試行で得られた投資ルールとは？

僕が試行で得た仮説を以下に列挙しておく(仮説それぞれの関係はコードに落とすときに考察する):

- 値動きが激しいテーマ別ハイテク株投信(自動運転、遺伝子工学、VR　などなど)の間でのリバランス(値上がりしたものを売って、値下がりしたものを買う)は、投資リターンを向上させる。
- 株式指数レバレッジ投信が一定以上価格が下落した際には、価格が戻るまで(例、5%値を戻す)まで毎日積立を行うことは、投資リターンを向上させる。
- 債券中心のレバレッジバランス投信(↑で黄色にしたもの)を毎日積立てそこそこのリターンを得つつ、値下がりしたハイテク株投信・レバレッジ投信へとリバランスすることは投資リターンを向上させる。

投信の値動き情報はAPI経由で取得できるからこれらはコードに落とせそうである。

加えて、投資家たちが長年かけて蓄積してきた経験値(以下に例示)を加えることができればなお良さそうだ。

- 経験的なシーズナリティ(例　株が下がりやすいのは2月と8月。あと、夏枯れ相場があるので5月に売っておくと良い。)を利益確定のルールに盛り込む。
- 長期金利(≒米国長期国債(10年債)の相場の逆数)の変動(一回微分？)と逆相関しがちなハイテク株のための、利益確定ルールを作る。
- 先進国とは別の値動きをする途上国株、シクリカルな日本株も売買対象に加え、値動きを安定化させる。

まぁ、あまり複雑なルールをコードに落とすのは割に合わない気もするから、こうした個別の考慮は、人力でメンテする形で良いかもだけれど。

# 今後は。

APIの仕様書を読んでセキュリティの考察をしてから、コードをそこそこちゃんと書こう。
ほんとはFXでも利益を上げたいな。

# 追記:現在の毎日・毎週積立設定
ぁ、そうだ。参考までに、半年間の試行錯誤の末の松井投信の積立設定を貼っておこう。現時点ではこれをちょこちょこ人力リバランスすることで年リターン30%超えできるのかな、と期待している。当然、auカブコムAPIに仕込む自動売買ではこの設定に勝ちに行くなり:stuck_out_tongue:。

![松井3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16455/90030f97-fbdb-849c-6939-e3b3805234e3.png)

![松井4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16455/0a4ba1c3-95d9-f666-accc-d4955ebb74c4.png)

ちなみに、毎週少額積立ているのは、下落時に買い増すためのブックマーク用途。