1年で口座残高が8倍に増えるEAをつくりたい②-退場確率-
1. 退場確率
前回までで日平均1%の利益を出すために満たすべき不等式⑥’[$N\leq2R(pr+p-1)$]が得られましたが、”安定して”利益を上げ続けるには他にも考慮すべきものがあります。例えば1ロットあたり6万円を口座に入れておくとして、1回のトレードごとに負ければ-30[pips](-3000円)、勝てば+120[pips](+1万2000円)となるように設定するなら$N=5, R=30, r=4$を代入して、
$6\leq2×30(4p+p-1)$ すなわち $0.22\leq p$
となるので不等式⑥’だけを見れば勝率22%以上を目指せばいいということになります。
……が、FXには前回3.節および4.節で述べたように必要証拠金というものが存在するため、幾度か負けが連続するなどして口座残高がこれを下回ると新たなトレードができなくなってしまいます。1ロットあたりの必要証拠金はおよそ4万6000円であるため、上記の例(口座に1ロットあたり6万円、1回のトレードごとに負ければ-30[pips])だと5回連続で負けトレードになれば 30[pips]×10000[通貨]×5[回]=1万5000[円] を失って残高が4万5000円となり退場(※8)です。
勝率22%だと初手5連続負けの確率は (1-0.78)5=0.288… となりおよそ29%も発生します。また初手5連続負け以外でも途中で負けがこむことがあれば退場となるので、実際には29%よりも高い確率で必要証拠金を保てなくなり退場します。これでは全く安定しているとは言えません。
よって勝率など不等式⑥’の目標パラメータを設定するには制約条件として【退場の可能性を十分に低くする】を加える必要があります。
(※8 投機に回す種銭が足りなくなってこれ以上戦えなくなること。ここでは同じロット数のままでは新規トレードができなくなることを指しています。)
2. 退場確率の計算式
退場の可能性を十分に低くするには、退場する確率を計算してそれが特定の値(例えば1%)を下回るようにパラメータを調整すればOKです。
簡単のため、まずトレード1回ごとに負ければ-C円(これをコストと呼ぶことにします)、勝てば+C×r円となるように設定し、その勝率をp(0<p<1)、口座残高がコストCのb倍すなわちC×b円のときの退場確率(その後何度もトレードをつづけたとき最終的に残高が0円になって退場してしまう確率)をQ(bC)とおけば非隣接3項間漸化式⑦が組めます(状態遷移図は以下の通り)。
$$1-Q(bC)=p×\{1-Q(bC+rC)\}+(1-p)×\{1-Q(bC-C)\} -⑦$$

漸化式⑦を変形すれば、
$$Q(bC)=p×Q(bC+rC)+(1-p)×Q(bC-C) -⑦'$$
残高及びトレード1回あたりの損益を1/R倍に縮小して考えても問題ないので、
$$Q(b)=p×Q(b+r)+(1-p)×Q(b-1) -⑦''$$
とできます。これより口座残高が0円になって退場する確率の計算式が得られます。さらに全項を左辺に移項して-1をかけると、
$$p×Q(b+r)-Q(b)+(1-p)×Q(b-1)=0 -⑦'''$$
となるので、ここから特性方程式
$$px^{r+1}-x+(1-p)=0 -⑧$$
が得られます。この特性方程式⑧の左辺をf(x)とおき、以下のようにxで微分して0<x<1の範囲での増減を考えます。xで微分して、
$$f'(x)=(r+1)px^r-1 -⑨$$
⑨式より$0<x$の範囲で$f’(x)$は単調増加(※9)であり、また
$x=\{p(r+1)\}^{-r}=ε$とおけば$f'(ε)=0$ $(0<ε<1)$
です。よって次の増減表を得ます。
x | 0 | … | ε | … | 1 |
f’(x) | / | - | 0 | + | / |
f(x) | 1-p | ↘ | 極小値 f(ε) | ↗ | 0 |
また、これらに加えて$f(1-p)$を計算しておくと、
$$f(1-p)=p(1-p)^{r+1}-(1-p)+(1-p)=p(1-p)^{r+1}>0$$
であることから、$y=f(x)$のグラフは次のようになります。

増減表とグラフより、特性方程式⑧の実数解は$x=1$以外に$1-p<x<ε(<1)$の範囲に1個あるとわかります(他に$r-1$個の複素数解がある)。この1でない実数解を$α$、$r-1$個の複素数解を$C_1 , C2 ,…, C_{r-1}$とおきます。
このとき漸化式⑦’’’の一般項$Q(b)$は、$A_0, A_α, A_1, A_2 …, A_{r-1}$を定数として、
$$Q(b)=A_01^b+A_αα^b+A_1C^b_1+A_2C^b_2+…+A_{r-1}C^b_{r-1} -⑩$$
となります(※10)。
口座残高が無限大のとき退場はありえないので Q(∞)=0 であることを考慮すると、
$$Q(∞)=A_01^∞+A_αα^∞+A_1C^∞_1+A_2C^∞_2+…+A_{r-1}C^∞_{r-1}=0$$
$$∴ A_0=A_1=A_2=…=A_{r-1}=0$$
$$∴ Q(b)=A_αα^b -⑩'$$
また、口座残高が0円のとき明らかに退場なので$Q(0)=1$より
$$Q(0)=A_α=1$$
$$∴ Q(b)=α^b -⑩'’$$
⑩’’式の指数部分は【口座残高がbで負ければ1失うときb】すなわち【退場に至るまでの最少回数】を表しています。これをユニット数 u と呼ぶことにすれば、金額をC倍(コスト倍)に戻しても uは変わらないので、口座残高が0円になって退場する確率は、
$$Q(bC)=α^u [ただし u は退場に至る最少回数] -⑩'''$$
となります。
実際には口座残高が0円になる前の必要証拠金を下回った段階で退場なので、この必要証拠金額をD万円とおきます。更に前回6.節の不等式⑥’にあわせて口座残高をN万円とします。またコストC円は負けトレード時の変動値幅R[pips]を用いて、
$$C=R[pips] × 10000[通貨]=10000R[銭]=100R[円]$$
と書けるので、退場に至るまでの最少回数ことユニット数 u は、
$$u=\frac{10000×(N-D)}{100R}=\frac{100(N-D)}{R} -⑪$$
です。以上より退場確率は、
$$Q=α^u -⑫$$
$$[ただし u=\frac{100(N-D)}{R} 、 α は px^{r+1}-x+(1-p)=0 の 1でない実数解]$$
となります。長期的な安全性を考えるなら退場確率は1%以下、 $Q\leq0.01 -⑬$は満たしたいところです。(可能なら本当は0.1%以下にしたい。)
(※9 もう一度微分すれば$f''(x) = (r+1)rpx^{r-1}>0$ ($0<x$のとき) となり、より明らか)
(※10 一般項を⑩式のように定め、そこから$Q(b+r)$と$Q(b-1)$を用意して漸化式⑦’’’に代入してみると等式は成立するので、漸化式⑦’’’ の一般項は⑩式で問題ないといえます。これが証明となら「十分条件は満たしていない」とか言われそうな気がしますがまぁそこらへんは数学屋さんがやってくれてるということで。)
3. 退場確率に登場する特性方程式の実数解α
前節2. で退場確率の式は出ましたが、途中で特性方程式の実数解αを求める必要がありました。これについてはPCに頑張ってもらうという力技を使います。

まず⑧式左辺をf(x)とした y=f(x) のグラフより 1-p<α<1 であることがわかるので、x=1-p+0.0001 × i ( i=0, 1, 2, …) をループで小さい順に代入して f(x)<0 となった段階で終了。最後のf(x)の値とその直前のf(x)の値のうちより0に近い方のxをαとして採用します。これをC言語で記述するとつまりこうです↓

そしてこれを回して得られたαの分布がこちら↓

色掛けしてある部分は参考としてユニット数uを10と仮定したときに退場確率が 0.1%以下、0.1%~0.5%、0.5%~1% となる部分を表しています。
仮にユニット数10だとPOR3.0でも勝率44%ないと退場確率1%切れないですね。このような設定だとなかなか1回のトレード条件が厳しくなりそうです。
ユニット数は退場確率の指数部に相当するので、ここを15や20などに大きくできるとPORと勝率についてもう少しゆるい条件にできます。初期口座残高Nを大きくするか負けトレードあたりの損失幅Rを小さくしてユニット数をもう少し大きくしたいところです。
考慮すべき変数も多くややこしくなってきたので次回でそのあたり整理します。
参考文献:"破産確率" ( http://www.kogures.com/hitoshi/webtext/or-hasan-kakuritu/index.html )