drag overflow

溢れ出た考え事を、まとめるために

Python + Backtrader + Bitcoin

Python + Backtrader + Bitcoin

Protraでいろいろと試行錯誤していたけれど、あるとき実行エラーにひっかかった。

エラーの原因を探ろうにも、どこでひっかかってるのか.....。

おそらくコンパイルの段階でひっかっているのはわかるけど、せめてどの行かくらい....。

困り果てたので、一旦Protraを離れて、Python + Backtrader の勉強を始めた。

とゆわけで、どこかで集めてきたビットコインの値動きを反映させたのが以下。

f:id:i19nano:20210127214212p:plain

夏に、ビットコイン買っておけばよかったなぁ。

f:id:i19nano:20210127214208p:plain

ちゃんと移動平均も表示されてる。

Backtraderのコードについてはまた別の機会に。

移動平均を使った仕組み

システムトレードの勉強で、1つ本を買った。

そのなかで例として出てきた、買い条件を参考に一つ作って比べてみた。 所謂、逆張り系のシステムだそうで、日本株逆張りのほうが効果が高いとか。

買い条件

終値移動平均を下回った時

売り条件

終値移動平均を上回った時

「下回った」や「上回った」を判断するために、乖離率Rを計算する。

R = 100 * (Close - MA) / MA

Closeは終値、MAは同日の移動平均線(5日)の値を意味する。 仮に終値が90、移動平均が100とすれば、

R = 100 * (90 - 100) / 100 = -10

で 10% 下回ったことを意味する。

Protraを使って、次のパターンでシミュレーションさせた。

買い条件

終値が -10 % ~ -5 % 下回ったとき買う。

売り条件

終値が 2 % 上回ったとき売る。

結果を表にした。

買い条件:R -10% -9% -8% -7% -6% -5%
全トレード数 5279 7234 10035 14294 20930 30949
勝ちトレード数(勝率) 3604(68.27%) 4881(67.47%) 6663(66.40%) 9366(65.52%) 13637(65.16%) 19935(64.41%)
負けトレード数(負率) 1675(31.73%) 2353(32.53%) 3372(33.60%) 4928(34.48%) 7293(34.84%) 11014(35.59%)
全トレード平均利率 3.40% 2.90% 2.29% 1.83% 1.49% 1.15%
勝ちトレード平均利率 9.52% 8.75% 8.03% 7.35% 6.73% 6.13%
負けトレード平均損率 -9.77% -9.23% -9.05% -8.66% -8.31% -7.87%
純利益 ¥154,531,500 ¥181,011,300 ¥198,619,600 ¥225,211,300 ¥264,270,000 ¥299,930,200
勝ちトレード総利益 ¥294,014,500 ¥365,783,600 ¥458,314,700 ¥589,593,200 ¥783,128,100 ¥1,040,877,000
負けトレード総損失 -¥139,483,000 -¥184,772,300 -¥259,695,100 -¥364,381,800 -¥518,858,100 -¥740,947,100
プロフィットファクター 2.11 1.98 1.76 1.62 1.51 1.4
最大ドローダウン(簿価) -¥7,621,312 -¥11,731,150 -¥20,627,600 -¥30,811,010 -¥42,954,690 -¥56,081,330
最大ドローダウン(時価) -¥36,130,790 -¥44,942,540 -¥56,840,420 -¥65,853,260 -¥74,345,870 -¥85,043,350

(綺麗な表にならないな...)

「下回った」の判断を浅くすると、トレード回数が増え、勝ちトレードの総利益が増えている反面、 早く買いすぎたために損失も増えているように見える。

結局買ったときの値段>売ったときの値段になったことが多いのだろう。

-10 % まで深くするとトレード回数が減るものの、損失は大きく減っている。

下に利益曲線もつけておく。

- 10 % で買い、+ 2 % で売る f:id:i19nano:20210109153554p:plain

- 5 % で買い、+ 2 % で売る f:id:i19nano:20210109153607p:plain

リーマンショックや、新型コロナの大暴落のときに、 如何に「底」で買うことができるか、判断させられれば、 他の下落時にも、いいタイミングで買えるんだろうね?

つぎは、売るタイミングについて、検討してみようかな。

目指すところ。

考えの整理

投資システムトレードをやろうと思った根本には、 大仰な理由なんてものはなくて、結局のところ以下のようにまとまる。

  1. 収入を増やしたい
  2. 手に技術をつけたい
  3. 頭を使いたい

どうせやるなら、3つまとめて達成できる課題に取り組むのが効率的になる。 加えて、1番目と2番めの理由は次の一言にまとまると思う。 金銭的な依存先を増やしたい

衣食住に加えて、心の安定を保つための娯楽、生きている限り支出は発生する。

f:id:i19nano:20201227181425p:plain
収入と支出のグラフ1

雇われである以上、この流れになるのが普通であるが、 収入が一箇所しかない状況では、そこが止まれば自分の生活が止まる。

好景気な時代なんて経験したことなんてない世代なもんだし、 そもそも会社なんてものを信じてもいないし。

ちょうど新型コロナで、(よくない話ではあるが)仕事が暇になったので、 せめて今のうちに色んな手段を確保しておきたいと思い至った次第。

あとは、去年(2019年)の今頃に投資用の口座を作ったものの、 なにを基準に株を売り買いすればいいのかさっぱりで放置してしまっていたのもある。

せめて、

f:id:i19nano:20201227181519p:plain
収入と支出のグラフ2

の形にできるのが理想ではある。 ただし、週末は休めるように...。

労働は悪なのでじぶんを削って働いてはいけない。

手段について

ファンダメンタル分析、いっさい向いていないと自信持って言える。 テクニカル分析を軸にして、自分の意志を最小限反映させない システムトレードに取り組みたい。

ツールは、最小限動かせるPythonを軸になんとかしたいと考えている。 いろいろ調べた感触としては、Python + Backtraderを利用する方向が良さそう。

とはいえ、手探りのなか、いきなりプログラムを書いていくのも難しいので、 バックテストができるフリーソフトProtraを試しに使ってみて、 全体像を掴んでみようと思う。

つまり?

このブログをメモ帳がわりに、やったことをまとめていこうとおもう。 まずはProtraの使い方や、手法の比較をしていきたい。

ローカルのメモ帳にでもまとめておけばいいのだろうけど、 似たことをやろうとしているひとの参考にでもなれば。

ただ、所詮自分用のメモ帳なので、 実用に足るストラテジの公開はしないよう。

なにを考えて行き着いたのか、通り道を記録したいだけ。 そこは気をつけたい。