2014/06/12

具体的な最適化手法(1) 目的関数



(2014/6/25 19:20 計算式修正)
さて前回は、システム評価・最適化をマネージメントに絡めて考察しました。  今回はその考察結果を元に、最適化やシステム評価(≒パフォーマンス評価)の具体的な手法について書いてみます。



1.おさらい


前回、資産の最大化を目指す「目的関数(≒パフォーマンス評価方法)」として、「オプティマルfにおける幾何平均」がよい、と考えましたが、付随して配慮すべき点もありましたので、どういったシステムを良い、と考えるのかを、一旦整理します。


  ■ 目的関数の特性

  1. オプティマルfにおける幾何平均が高いほどよい
  2. 同じ「オプティマルfにおける幾何平均」であれば、オプティマルfは低いほどよい
  3. オプティマルfにおける幾何平均」÷オプティマルfが同じでも、「オプティマルfにおける幾何平均」が高いほどよい
「オプティマルf」については、過去ブログ記事の「ロット数を決める方法(資金管理)について」を参照ください。 この記事での、複利運用で資産を最大化するリスク量(初期リスク%)が、「オプティマルf」です。 (リスク量が一定以上大きくなると、リターンが減少していきます)



2.目的関数の計算式


評価値(年率オプティマルfレシオ) =
 平方根[ { (オプティマルfにおける複利年率+100%)^2-1 } ÷ オプティマルf ]   (式1)
(2014/6/25 計算式修正)

ずばり、これがいいのではないか、と思っています。  例えば、オプティマルfが初期リスク10%で、その時の複利年率が+30%であった場合は、以下の様に計算されます。


   評価値 = 平方根[ {(30%+100%)^2-1} ÷ 10% ]
         = 平方根[ { (0.3+1)^2-1 } ÷ 0.1 ]
         = 平方根[ (1.3^2-1) ÷ 0.1 ] (2014/9/27 修正)
         = 平方根(0.69÷0.1) (2014/9/27 修正)
         = 2.6268 (2014/9/27 修正)


便宜上、この目的関数(パフォーマンス評価指標)を命名したいので、「年率オプティマルfレシオ」(略してAROFレシオ:Annual rate at Optimal-f Ratio、あろっふれしお?
という名前にしてみました(笑)    

最適化の為だけの評価であれば、同一期間のパフォーマンスを比較できればよいので、以下の計算式でも問題ないと思います。 自分が最近見直した最適化作業では、簡便的にこの式を使っています。
#むしろ、下記(式2)が先に思いついて、ブログを書きながら、前述の(式1)に変形させた、といった流れです(笑)


   評価値(T2OFレシオ) = (最終資産倍率^2-1) ÷ オプティマルf   (式2)
   (2014/6/25 計算式修正)

さきほどと同じ条件で、かつ、検証結果が3年分の評価結果だとすると、評価値は以下の様になります。

   評価値 = {( 1.3倍/年^3年 )^2 -1} ÷0.3
         = (2.197^2-1) ÷ 0.3
         = (4.8268-1) ÷ 0.3 
         = 12.756

ついでにこれも、「T2OFレシオ」(TWR^2 at Optimal-f Ratio)と、命名しました(笑)



3.計算式の背景


もし条件が「オプティマルfにおける幾何平均」であれば話は簡単なのですが、冒頭「目的関数の特性」にある、他の2つの条件を表現する必要があります。  単純に考えると、「幾何平均÷オプティマルf」が思いついたのですが、3番目の条件を満たせなくなります。

なので、倍率で表現した「幾何平均」を2乗すれば、条件をクリアできる、と思いついたわけです。 要は、前述の(式2)です。
#幾何平均が「+10%」であれば、1.1を2乗する

そして、(式2)を、もうちょっと意味がありそうな値として年率換算し、平方根をとることで、レベルをあわせ、(式1)に変形しました。 

「じゃあ、2乗じゃなくて、3乗や1.5乗じゃだめなのか?」 という疑問も、当然湧いてくると思うのですが、ダメな理由は何も思いつきません(笑)



4.考察


このパフォーマンス評価方法の欠点は、期待値がマイナスのシステムを評価できない点にあります。  これは、そもそも「オプティマルf」を求める際、期待値がマイナスだと、オプティマルfはゼロ(つまりトレードしない)がベストですので、実質的にオプティマルfが求まらないためです。

あと、「オプティマルf」を求めるのが面倒、という欠点もあります。  エクセルであれば「ソルバー」を使えば、簡単に求まります。  プログラムで求める場合は、「2分探索木」のアルゴリズムを使って、任意に決めた一定レベルの精度にたどり着くまで計算する、という方法があり、私はそうしています。

ちなみに、「オプティマルfなんて、ケリーの公式で簡単に求まるじゃないか」という意見もありそうですが、ラルフ・ビンスの資金管理大全」では、以下の様に、実質的に否定されています。


「 利益が常に同額でないとき、かつ/または、損失が常に同額でないときにはケリーの公式は適用できない。 適用しても正しいオプティマルfの値は得られない。 」 (「ラルフ・ビンスの資金管理大全」より

なので、裏をかえすと、固定値幅でTP/SLを指定して、他に決済ルールが無い場合は、「ケリーの公式」が使えるという事だと思います。



5.最後に


ここまでで、前回ブログ記事でいう「資産を最大化してくれるか?」という観点で評価するための、目的関数の計算方法について書いてきました。  つまり、パラメータ値の最適化時は、この「年率オプティマルfレシオ」(もしくはT2OFレシオ)が最大になるパラメータ値を選ぶ事になります。 

ただし実際には、「堅牢なパラメータ値か?(局所解に陥っていないか?)」という配慮も必要になり、その取組みが、オーバー・フィッティングを避けれるかどうかを左右するのだと思います。

次回は、この方法を具体的に書いてみたいと思います。 たぶん(笑)




ではでは~



0 件のコメント:

コメントを投稿