FXにおける、EA自動売買で運用ロット数を決定するときに利用しているバルサラの破産確率の算出についてまとめています。
今回の事例では、破産確率が0.5%以下となる、リスクに晒すことが可能な限界の資産割合を算出します。
(※なお、私は統計学等について素人ですので、いたるところで過誤がある可能性がある点をご了承下さい)
以下、制約等
- 今回は、Excelを利用して破産確率の計算をします (標準機能である、ゴールシークを利用します)
- 各トレードの統計情報(勝率とペイオフレシオ)は、事前に集計済みであることとし、今回の記事でその方法は割愛
<< 今回のゴール地点は、下記ピクチャの赤枠で囲われた、0.5%の破産確率となるリスクに晒す資産割合を算出するところです >>
全体を通じて、予め必要な情報は、各EA(各通貨)毎の
- トレード勝率
- ペイオフレシオ (平均利益/平均損失 (今回はpipsで計算))
です。
上記が分かっていれば、いきなりですが、下記の手順で”算出”です。
T01
Excelのゴールシークを利用しますので、解(逆算値)のセルに適切な初期値を設定します。
今回は、0としました。
計算式は、左記のピクチャを参考にして下さい。なお、L列のように計算式を用意したセルが必ず必要です。
(いろいろ調べたところ、このような方程式になります)
T02
続いて、Excelのゴールシークを利用します。方程式の解は0になって欲しいので、そうなるような値Xを逆算します。
先ほどの計算式のセルと、解(0)、更に方程式=0となるXを逆算させるセルを指定し、
ゴールシーク開始です。
T03
うまく行きましたか?
解答は収束している必要があります。
収束しない場合、式に問題があるか、そのEAでトレードする限り
統計上、必ず破産することを指し示している可能性があります。
T04
これで、第1段階の計算は完了です。
T05
続いて、破産確率が0.5%となる限界のリスク資産の割合を算出します。
ここでもゴールシークを利用して、”0.5%となる”の部分を逆算します。
計算式は、左記ピクチャを参照して下さい。
T06
先ほどの方程式の解と、0.5%という情報と、逆算結果のセルを指定して
ゴールシーク開始です。
なお、今回の逆算値の初期値は、0.1を入力します。
ここの数値が大きいと、逆算結果が発散し、結果が不正になります。
T07
今回、BandCross3を例に挙げて計算してきましたが、
私の運用上、バルサラの破産確率0.5%以下となる、リスクに晒す限度の資産割合が、
8.46%であると算出されました。
T08
さて検算?ということで、有名?な破産確率の計算アプリとの結果を比較しましょう。
先ほど算出された資産割合8.46%を入力し、破産確率が0.5%以下の水準となっているかチェックします。
どうでしょう。いい感じに0.5%程度の破産確率であることが計算されました。
(ので、今回のExcelの試行は、そんなに的外れでも無いようですね)
T09
で、EAや運用通貨が増えてくると、ちまちま手動計算するのが指数関数的に面倒になってきます。
そこで、マクロを組んで、ゴールシーク2連発計算を自動化しましょう。
そのコードはこの通りです。
マクロ:: Excel VBA ゴールシークを利用して、破産回避のリスク資産割合を算出する
Sub doTask() Dim i As Integer Dim lastRow As Integer With ThisWorkbook.Sheets("CalcBalsara") lastRow = Worksheets("CalcBalsara").Range("A1").End(xlDown).Row 'init For i = 2 To lastRow '初期値を設定 (特に資産割合の列の初期値は小さくしないと収束値が不正になる) Range("M" & i) = 0 Range("P" & i) = 0.1 Next 'calc For i = 2 To lastRow '計算式-方程式の解-チャレンジ変数セルの順 .Range("L" & i).GoalSeek Goal:=0, ChangingCell:=.Range("M" & i) .Range("O" & i).GoalSeek Goal:=0.5, ChangingCell:=.Range("P" & i) Next End With End Sub
マクロ実行で、このように一気に計算されます。
楽だー。
ちなみに、EasyWalkerFX の GBPCHFのような結果となる場合、
計算上は、運用を継続する限り、必ず破産することを指し示していいます。
この後の手順としては、運用ロット数の算出になるかと思いますが、リスクに晒す資産割合が既に算出されています。
その割合と、EA毎にどのぐらい損失を出すかの情報を組み合わせ、比率計算することで運用ロット数が簡単に算出されるかと思います。
というわけで、今回はここまでです。
ご参考まで。
すばらしいです!
私はエクセルはまったく使いこなせていません
勉強しなければ…
monyuさん
コメントありがとうございます。
この記事に帰着するまで、数ヶ月の経験がありましたが、一旦記録として残してみました。
お褒めの言葉を頂けて、内心、大変嬉しいです。
ExcelとAccessは大変便利ですよ。
トレード成績の分析をするとき等に、いちど定型的なものを作っておくと、三日坊主にならずに継続しやしくて、且つ作業時間をセーブして自分の時間を確保できます。
Microsoft社の製品で、Windowsはあまり好きではないんですけど、Officeは素晴らしいと思っています。