さて前回までの記事では、BitflyerのBTCFXで自動売買BOTの勝率、リターンやリスク(ドローダウン)を検討する方法を解説しました。
これで過去においてプラスの期待値を持つ売買ロジックを見つけることができましたね。プラスの期待値を持つ売買ロジックを見つけたら、次に考える必要があるのは資金管理です。
1.資金管理とは?
資金管理(マネーマネジメント)とは、簡単にいうと「1回のトレードで何枚のポジションを持つのが数学的に正解なのか?」を追求する分野です。
今までの章では、売買システムの期待値を正しく評価するために、敢えて「ずっと1BTCだけ売買する」というpythonコードを書いていました。バックテストで売買ロジックを検証する段階では、これが正しい検討方法だと思います。
しかし実践でリターンを最大化しようと思ったら、当然、勝って資金が増えてきたら1トレードの枚数は増やしたほうが合理的です。同様に負けて資金が減ってきたら1トレードの枚数を減らすのが正しいリスク管理です。
このような計算は、pythonを使えば効率的に自動化できます。
何BTCでトレードするのが適切なのか?
資金管理でやるべきことは、シンプルにまとめると以下の2点です。
1)口座資金が増えたら1トレードの枚数を増やす
2)ドローダウンが大きくなったら1トレードの枚数を減らす
1のペースを速くすると、複利効果でどんどん利益が膨らみます。しかし大きな負けトレードで資金を1度で失う可能性も高くなります。逆に1のペースを慎重にすると利益の伸びは減るものの、運悪く連敗が続いても利益を大きく失う可能性は低くなります。
上記を考慮してポジションサイズを自動的に計算するアルゴリズムを考えます。
2.資金管理アルゴリズム
資金管理のアルゴリズムには、様々な手法があります。
興味がある方は、ラリーウィリアムズの「短期売買法」の13章や、ペンフォールドの「システムトレード 基本と原則」の8章、ジョンヒルの「究極のトレーディングガイド」の11章などに詳しい説明があります。
この章では、もっとも基本的な以下のような方法を使うことにします。
Fund … 口座資金
n% … 1回のトレードで失ってもいい口座資金の割合
stop … 1BTC当たりの損切(ストップ)の設定額
購入枚数 = (Fund × n%) ÷ stop
例えば、以下のような条件でトレードをしていると仮定します。
・口座残高 100万円
・1BTCの価格 75万円
・1回のトレードあたりの許容できる損失 3%
・損切りライン / エントリー価格の2%下(-15000円)
・レバレッジ3倍
この場合、次のエントリーシグナルが出たときの注文枚数は、(100万円 × 3%) / 15000円 = 2BTCまで、と計算できます。最大2BTCまでなら1回のトレードで口座の3%以上の資金を失うことはありません。
このような数式をBOTに組み込んで、注文をするたびに自動的にサイズ(注文数量)をBOTに計算させるのがこの章の目的です。
3.レバレッジが必要な理由
レバレッジというのは、必ずしも「リスクとリターンを同じ比率で増幅するもの」ではありません。上記の式から資金管理を考えれば、レバレッジが有効な場面が存在することがわかります。
例えば、もう1度さっきの例を考えてみましょう。
・口座資金 100万円
・1トレードあたりの許容できる損失 3%
・1BTCの価格 75万円
・1BTCの損切り幅 1万5000円
資金管理上は1トレードあたり3万円(口座の3%)までリスクを取ることが許されています。また売買ロジックの性質上、ストップはエントリー価格の1万5000円下に置くのが最適だということもバックテストの検証の結果、わかっているとします。
このとき、理論上は最大2枚(BTC)までポジションを取るのが最も合理的です。しかし1BTCは75万円なので、レバレッジを掛けなければ、1.33BTCまでしかポジションを取ることができません。つまり1トレードのリスク量が口座資金の2%以下に制限されてしまうことになります。
資金管理の目的は「リスクを許容範囲におさえながらリターンを最大化すること」です。本来、取っていいはずのリスクを取れないことは機会損失になり、パフォーマンスの低下に繋がります。
4.この章で勉強すること
この章では、前回までの章で勉強したドンチャン・チャネルブレイクアウトBOTを使って、以下のようなpythonコードを追加していきます。
(1)口座資金に応じて注文サイズを自動的に変更する
(2)BOTで自動的に損切りを入れられるようにする
(3)市場の値幅(ボラティリティ)に応じたストップを計算する
(4)トレイリングストップを入れられるようにする
(5)1トレードの資金を数回に分けてエントリーする
(6)破産確率から適切な1トレードあたりのリスクを計算する
(7)損切り・資金管理の設定による総利益の違いをシミュレーションする
かなり高度なbotになりそうですね!まだまだ勉強中の自分にとって素晴らしい教材を与えてくださり感謝しています。
コメントありがとうございます!^^
そう言っていただけると嬉しいです、わかりやすく実践的な内容になるように頑張ります!