SSブログ

エクセルを用いたトレーディングシステムにおける売買シグナルの設定 [システムトレード]

エクセルでトレーディングシステムを作成するに当たって、最も基本的なことの一つは、ポジションや売買シグナルをどのように表すかということです。
KFシステムクリエイターにおいては、買い持ちを"1"、売り持ちを"-1"、キャッシュポジションを"0"としています。

この方法のメリットは、トレード中のポジションが一目瞭然であることに加えて、前後の差分を取ることで容易に売買シグナルを得ることができるという点です。
また、うねり取りシステムへの対応も容易で、数値を実数まで拡張すれば、ポジションの大きさを表現することが出来ます。

今、簡単な事例として、nをパラメータとしたn日移動平均を用いたシステムを考えます。株価が終値で移動平均を上回ったら買い持ちで"1"、下回ったら売り持ちで"-1"とします。
すなわち、株価が移動平均の上にいる間は"1"が、下にいる間は"-1"が続くわけです。

エクセルで表す場合、特に面倒な事はありません。
IF関数を用いて、セルに次式を記入すれば良いだけです。ここで、株価を入力したセル番地を「株価」、移動平均を入力したセル番地を「移動平均」としています。
  =IF(「株価」>「移動平均」,1,-1)

もちろん、株価と移動平均は、時系列で事前に記述しておく必要があります。なお、株価は通常、終値を用います。
これにより、"1"の集まりと"-1"の集まりとが交互に現れる、売買ポジションを表す列が得られます。

この列のある行とその前の行との差を取り、全ての行に渡ってこの差分を求めると、ポジションが"1"から"-1"に変わる時は"-2"、"-1"から"1"に変わる時は"2"、それ以外は"0"となるシグナル列が得られます。
この列の値が"-2"なら売りドテン、"2"なら買いドテン、"0"ならばポジション継続ということになります。

そして、売りドテンシグナルが出たら、翌寄付きで買いポジションを手仕舞うと同時に新規売り、買いドテンシグナルが出たら、翌寄付きで売りポジションを手仕舞うと同時に新規買いとなるわけです。

これにキャッシュポジションを加えると、もう少しバリエーションが増えます。例えば、何らかの条件で発動するフィルタを設けてみます。
このフィルタは、ポジションを維持する場合は"1"、ポジションを外す場合は"0"となる数列で表されます。

このフィルタ列と、売買ポジションの列とを掛け合わせると、"1","0","-1"の3値からなるポジション列が得られます。ここで、ポジションが"0"の場合はキャッシュポジションを表します。
その前後の行の差分を取ると、"2","1","0","-1","-2"の5値からなるシグナル列となります。

その値が"2","0","-2"の場合は前述の通りです。"1"の場合は新規買いもしくは売り手仕舞い、"-1"の場合は新規売りもしくは買い手仕舞いとなります。
これらがどちらに該当するかについては、ポジション列で判断します。ポジション列が"0"なら手仕舞い、そうでないなら新規です。

このように、ポジションを"1","0","-1"の3通りで表記することにより、基本的な売買シグナルを全て得ることが出来ます。
更に、ポジションを実数表記すれば、うねり取りシステムにも対応できるようになります。

例えば、キャッシュポジションを含む3つの異なるシステムを均等に合成した場合、その合成システムは、"3","2","1","0","-1","-2","-3"の7つのポジションを取ることになります。
あるいは、運用資金を合成前の個々のシステムと同じにする場合は、これらのポジションに"1/3"を乗じれば良いだけです。ただ、以下では簡単のため、先に示した整数ポジションで考えます。

この7値のポジション間の差分を取ることにより、売買シグナルとしては、"6","5","4","3","2","1","0","-1","-2","-3","-4","-5","-6"の13通りが得られます。
それが"6"ならば3単位の売り持ちから3単位の買い持ちへの買いドテン、"-6"ならば3単位の買い持ちから3単位の売り持ちへの売りドテン、"0"ならば直近ポジション継続です。

また、"5"ならば3単位の売り持ちから2単位の買い持ち、もしくは2単位の売り持ちから3単位の買い持ちに、"-5"ならば3単位の買い持ちから2単位の売り持ち、もしくは2単位の買い持ちから3単位の売り持ちになります。
なお、これらの内どちらの売買パターンになるかは、ポジション列の値で判定できます。それは他のシグナルの場合についても同様です。

シグナルが"4"の場合は、3単位の売り持ちから1単位の買い持ち、2単位の売り持ちから2単位の買い持ち、1単位の売り持ちから3単位の買い持ち、のいずれかになります。
シグナルが"-4"の場合は、上記にて買いと売りを入れ替えればよろしいです。

シグナルが"3"の場合は、3単位の売り持ちから売り手仕舞い(キャッシュポジション)、2単位の売り持ちから1単位の買い持ち、1単位の売り持ちから2単位の買い持ち、キャッシュポジションから3単位の新規買い、のいずれかとなります。
シグナルが"-3"の場合は、上記にて買いと売りを入れ替えればよろしいです。

シグナルが"2"の場合は、3単位の売り持ちから2単位を売り外して1単位の売り持ち、2単位の売り持ちから売り手仕舞い、1単位の売り持ちから1単位の買い持ち、キャッシュポジションから2単位の新規買い、1単位の買い持ちから2単位を買い増して3単位の買い持ち、となります。

シグナルが"-2"の場合は、3単位の買い持ちから2単位を買い外して1単位の買い持ち、2単位の買い持ちから買い手仕舞い、1単位の買い持ちから1単位の売り持ち、キャッシュポジションから2単位の新規売り、1単位の売り持ちから2単位を売り乗せて3単位の売り持ち、となります。

シグナルが"1"の場合は、3単位の売り持ちから1単位を売り外して2単位の売り持ち、2単位の売り持ちから1単位を売り外して1単位の売り持ち、1単位の売り持ちから売り手仕舞い、キャッシュポジションから1単位の新規買い、1単位の買い持ちから1単位を買い増して2単位の買い持ち、2単位の買い持ちから1単位を買い増して3単位の買い持ち、となります。

シグナルが"-1"の場合は、3単位の買い持ちから1単位を買い外して2単位の買い持ち、2単位の買い持ちから1単位を買い外して1単位の買い持ち、1単位の買い持ちから買い手仕舞い、キャッシュポジションから1単位の新規売り、1単位の売り持ちから1単位を売り乗せて2単位の売り持ち、2単位の売り持ちから1単位を売り乗せて3単位の売り持ち、となります。

以上では、3システムの合成システムについて説明しましまたが、合成元システムの数を増やせば、それだけ得られるポジションの数が増加し、より細やかなうねり取りシステムとなります。

なお、ここではポジション数を増やすためにシステムの合成を考えましたが、ロジックの記述によってポジションを多段階に変化させることも可能ではあります。
しかし、そのようなロジックの記述は難しく、有効なシステムが得られる保証はありません。

合成システムであれば、個々の合成元システムの有効性を確認することは比較的容易であり、その帰結として、合成されたシステムの性能や信頼性もまた担保されることになります。
課題としては、同一銘柄で有効性が高く、しかも独立性の高い複数のシステムを揃えられるかということです。

nice!(0)  コメント(0) 
共通テーマ:

システムにおける性能指標の定義と位置付け(3):PFと損益レシオ [システムトレード]

損益に関係する性能指標は、通常は単株基準にて表されます。しかし、分析期間中における株価水準が大きく変動していたりする場合、単株基準では性能を的確に示すことが出来ない可能性があります。
そのような時に、単利基準や複利基準で性能指標を表現すると、適切な結果を得ることが出来る場合があります。

例えば、PFや損益レシオを単利基準で表すと、次式のようになります。
単利基準の場合は、
  単利PF   =総利益率/|総損失率|
         =-総利益率/総損失率 (総損失率<0)
  単利損益レシオ=平均利益率/|平均損失率|
         =-平均利益率/平均損失率 (平均損失率<0)

複利の場合については一先ず置いておいて、一例として、8001伊藤忠商事の累乗平均逆張りドテンシステムで、単株及び単利におけるPFや損益レシオを求めてみます。なお、分析期間は1993年11月1日~2021年1月19日の約27年間となっています。

単株(通常)の場合
  PF   =1.30
  損益レシオ=0.82

単利の場合
  平均利益率=2.51%
  平均損失率=-3.02%
  トレード数=1,222回
  勝率   =61.29%
より、
  PF   =1.32
  損益レシオ=0.83
となります。

この銘柄は分析期間中における株価の差が最大20倍近くありますが、単株と単利におけるPFと損益レシオに大きな違いはありません。
比較のために、単株と単利の場合の資産カーブを以下にそれぞれ示します。
伊藤忠商事_単株_資産カーブ_20210121a.png
伊藤忠商事_単利_資産カーブ_20210121b.png

明らかに単利基準の方が良好な直線性を有していますが、単株基準においても資産カーブが極端に階段状に変化している場面は見られません。
このことが、PFや損益レシオに大きな違いが生じていない理由だと考えられます。

一方、単株と単利とで資産カーブ形状に大きな違いが生じている事例として、9501東京電力HDRSI逆張りドテンシステムを見てみます。
次図は、単株と単利の場合のそれぞれの資産カーブです。なお、分析期間は1993年11月1日~2021年1月21日の約27年間です。
東京電力HD_単株_資産カーブ_20210121c.png
東京電力HD_単利_資産カーブ_20210121d.png

やや意外なことに、単株基準の方が資産カーブの直線性が高いことが分かります。
これらのPF及び損益レシオを求めると、以下のようになります。

単株(通常)の場合
  PF   =1.58
  損益レシオ=1.16

単利の場合
  平均利益率=6.17%
  平均損失率=-3.93%
  トレード数=296回
  勝率   =57.77%
より、
  PF   =2.15
  損益レシオ=1.57
となります。

8001伊藤忠商事の場合とは異なり、単株と単利とでPFや損益レシオに大きな違いが生じています。この理由は、資産カーブの直線性の違いにあると考えられます。
この例では、単株基準の方が直線性が良好でしたが、当然その逆の場合もあります。

以上のように、単株や単利の場合のPFや損益レシオについては、単に"額"と"率"とを置き換えて考えれば良いだけです。ただし、各基準における値の解釈については、よく注意する必要があります。
では、複利基準におけるPFや損益レシオはどのように考えれば良いのでしょうか。

複利基準におけるPFについては、単株や単利の事例に倣うと、
  複利PF=累積利益率/累積損失率
となりそうですが、以下に示すように、これだと不合理な事態が生じてしまいます。

上述した8001伊藤忠商事のシステムで、実際に累積利益率と累積損失率を求めてみました。ただし、ここでは簡単のため、簿価基準の結果としています。
なお、KFシステムクリエイターでは標準評価項目として、累積利益率と累積損失率は求めていません。ここでは検証用として算出しています。

結果は次の通りです。
  累積利益率=9.497×10^7
  累積損失率=1.873×10^(-7)
ここでX^kは、Xのk乗を表します。10^7ならば、10の7乗ということです。

両者の比を取ると、上述した仮の複利PFが求まります。
  複利PF(仮)=5.070×10^14
この結果に何らかの意味があるようには到底見えません。

そこで、PFについては後回しにして、先に損益レシオを求めてみます。

複利基準の場合の損益レシオは、単株や単利の場合に倣って、
  複利損益レシオ=複利利益率/|複利損失率|
         =-複利利益率/複利損失率
とすれば良さそうです。

ここで、複利利益率は、勝ちトレード当たりの累積利益率で、次式で定義します。
  複利利益率=(累積利益率)^(1/勝ち数)-1
       =(累積利益率)^(1/(勝率×トレード数))-1
同様に、複利損失率は、負けトレード当たりの累積損失率で、
  複利損失率=(累積損失率)^(1/負け数)-1
       =(累積損失率)^(1/((1-勝率)×トレード数))-1
となります。

上述した8001伊藤忠商事のシステムでは、
  複利利益率=2.48%
  複利損失率=-3.22%
となります。

これから複利損益レシオを求めると、
  複利損益レシオ=0.77
という結果が得られます。これは単株や単利の場合と大差なく、妥当な水準であると言えます。

ここで、単株や単利の場合で得られたPFと損益レシオの関係を用いると、複利PFは次式で表すことが出来ます。
  複利PF=複利損益レシオ/(1/勝率-1)
実際に数値を代入すると、上記システムでは、
  複利PF=1.22
が得られます。

ちなみに、上述した9501東京電力HDシステムの場合、複利運用における各数値を求めると、以下のようになります。
  累積利益率  =6.071×10^3
  累積損失率  =2.639×10^(-3)
  複利利益率  =5.23%
  複利損失率  =-4.64%
  複利損益レシオ=1.13
  複利PF   =1.54

これらの関係を見ると、PF及び損益レシオについて、
  複利<単株<単利
の関係になっていることが分かります。ただし、これはわずか2例の結果に過ぎず、この関係が普遍的であるかどうかについては、更なる検証が必要です。

なお、複利利益率や複利損失率と似た性能指標として、年率利益率と年率損失率があります。これらは、次式で定義されます。
  年率利益率=(累積利益率)^(246/統計期間)-1
  年率損失率=(累積損失率)^(246/統計期間)-1

ここで、246は平均年間立会日数、統計期間はトレード開始日から直近日までの日数です。分析期間とは異なりますので、注意が必要です。通常、統計期間<分析期間となります。

年率利益率は、複利運用した場合の年当たり利益率を表します。年率損失率は、複利運用した場合の年当たり損失率です。両者を用いると、簿価基準の年率リターンを求めることが出来ます。
  簿価年率リターン=(累積損益率)^(246/統計期間)-1
          =(累積利益率×累積損失率)^(246/統計期間)-1
          =(累積利益率)^(246/統計期間)×(累積損失率)^(246/統計期間)-1
          =(1+年率利益率)×(1+年率損失率)-1

前述の8001伊藤忠商事システムと9501東京電力HDシステムの年率利益率、年率損失率、簿価年率リターンは、それぞれ以下のようになります。

8001伊藤忠商事累乗平均逆システム
  年率利益率   =97.84%
  年率損失率   =-43.75%
  簿価年率リターン=11.28%
9501東京電力HDRSI逆システム
  年率利益率   =38.06%
  年率損失率   =-19.74%
  簿価年率リターン=10.82%

ところで、前述したようにKFシステムクリエイターでは累積利益率と累積損失率を直接的には求めていません。これらは累積損益率として一緒くたにして計算しています。
そのため、これらの値を計算するためには、別途演算用の列をワークシート上に用意して計算する必要があります。

しかし、KFシステムクリエイターではエクセル2003で利用できる256列を全て使用しており、ロジックによっては演算用の新たな列を、システムシート上に設けることが出来ない場合があります。もちろん、エクセル2007以降を使用すれば、257列以降を用いて演算することが可能ではあります。
そこで、既存の性能指標を用いて、近似的に累積利益率や累積損失率を求める方法を以下に記します。

前回の記事で、累積利益率を求める式を次式で表しました。
  累積利益率=Π(1+P(i)/F(i)) (i=1 to 勝ち数)
ここで、P(i)は各トレードにおけるi番目の勝ちトレードの利益、F(i)はそれらのトレードに投じた資金額です。

この式の両辺の自然対数を取ると、勝ち数をnとして、
  ln(累積利益率)=ln(1+P(1)/F(1))+ln(1+P(2)/F(2))+・・・+ln(1+P(n)/F(n))
となります。

ここで、関数ln(1+x)をテイラー展開すると、
  ln(1+x)=x-(1/2)x^2+(1/3)x^3+・・・
となります。

そこで、右辺をテイラー展開し、3次以上の項を省略すると、
  ln(累積利益率)≒Σ(P(i)/F(i))-(1/2)×Σ(P(i)/F(i))^2 (i=1 to n)
が得られます。

ここで、右辺第2項に注目します。実はKFシステムクリエイターでは、利益率標準偏差や損失率標準偏差を性能指標として算出しています。
これらを用いれば、右辺第2項を算出済みの性能指標で表すことが可能です。

利益率標準偏差をsとし、P(i)/F(i)をu(i)とすると、i=1 to n として、
  s=√(Σ((u(i)-u)^2)/(n-1))
となります。ここで、uはu(i)の平均値を表します。

両辺を2乗し(n-1)を掛けると、次式のようになります。
  (n-1)×s^2=Σ((u(i)-u)^2)
        =Σ(u(i)^2)-2×Σ(u(i)×u)+Σ(u^2)
        =Σ(u(i)^2)-2×u×Σu(i)+n×u^2

これをΣ(u(i)^2)について解くと、
  Σ(u(i)^2)=(n-1)×s^2+2×u×Σu(i)-n×u^2
となります。

ここで、
  Σu(i)=総利益率
     =勝ち数×平均利益率
  u=平均利益率
を意味します。

したがって、
  ln(累積利益率)≒Σu(i)-(1/2)×((n-1)×s^2+2×u×Σu(i)-n×u^2)
         =総利益率-(1/2)×((勝ち数-1)×利益率標準偏差^2+2×平均利益率×総利益率-勝ち数×平均利益率^2)
         =勝ち数×平均利益率-(1/2)×((勝ち数-1)×利益率標準偏差^2+勝ち数×平均利益率^2)
が得られます。

これから、
  累積利益率=e^ln(累積利益率)
として、累積利益率の近似値を求めることが出来ます。

累積損失率については、これらの計算式において、利益率を損失率、勝ち数を負け数に置き換えればOKです。

これらを、前述の8001伊藤忠商事システムと9501東京電力HDシステムについて実際に求めてみると、次のようになります。後ろに続く[]内は、正確な値からの誤差を示します。

8001伊藤忠商事累乗平均逆システム
  累積利益率=9.297×10^7 [-2.11%]
  累積損失率=2.416×10^(-7) [+28.99%]
9501東京電力HDRSI逆システム
  累積利益率=8.573×10^2 [-85.88%]
  累積損失率=3.853×10^(-3) [+46.00%]

8001伊藤忠商事における誤差は、比較的小さいことが分かります。一方、9501東京電力HDにおける誤差は、かなり大きくなっています。特に、累積利益率は桁が違うほど大きな差異となっています。

この理由は、9501東京電力HDシステムの最大利益率が246.48%と極めて大きいためです。そもそも、ln(1+x)のテイラー展開が収束する条件は、xが-1<x≦1となる時だけです。
この場合、x=246.48%=2.4648は1より大きく、この値に対してテイラー展開を適用したこと自体が間違っていたことになります。ただし、収束を考えない場合はその限りではありません。

8001伊藤忠商事システムの最大利益率は22.00%、最大損失率は-56.75%、9501東京電力HDシステムの最大損失率は-63.92%で、これらに対してテイラー展開すること自体は問題ありません。
ただし、特に累積損失率に関しては、比較的大きな誤差となっています。

累積利益率や累積損失率の近似値を求める段階において、利益率や損失率の3乗以上の項は切り捨てていました。結局、これらの項の合計が誤差となっているわけです。
ただし、利益率の全てが最大利益率ということは当然あり得ず、実際には平均利益率から最大利益率の間までのどこかに、均衡点が存在することになります。

例えば、8001伊藤忠商事システムの累積利益率の場合、切り捨てた3乗の項によって誤差が生じたと考えると、最大利益率に対しては、22.00%の3乗の3分の1の勝ち数倍、すなわち265.845%、平均利益率に対しては、2.51%の3乗の3分の1の勝ち数倍、すなわち0.395%となり、実際の近似値の誤差2.11%はその中間となります。

逆に、誤差が2.11%となる利益率を求めると、4.39%ほどとなります。これは、平均利益率と利益率標準誤差の和である4.89%に近い値となっていることが分かります。

同様に、他の残りの誤差からそれが得られる利益率や損失率を求めると、8001伊藤忠商事システムの累積損失率では12.25%、9501東京電力HDシステムの最大利益率では24.70%、同損失率では22.27%となります。
これらの平均と標準偏差との和は、それぞれ8.53%、26.40%、13.32%となっています。利益率の場合は平均と標準偏差との和の方が大きく、損失率の場合は小さいことが分かります。

この関係を用いて、これらを補正項として加減してやれば、より正確な値を得ることが出来ると考えられます。

補正項をδとすると、累積利益率の場合、
  δ=(1/3)×勝ち数×(利益率標準偏差+平均利益率)^3 (平均利益率>0)
累積損失率の場合、
  δ=-(1/3)×負け数×(損失率標準偏差-平均損失率)^3 (平均損失率<0)
となります。

これを、2乗の項まで求めたln(累積利益率)やln(累積損失率)に加えてやれば、補正後の値が得られます。
これまで同様、実際に計算した結果を、以下に示します。

8001伊藤忠商事累乗平均逆システム
  累積利益率=9.573×10^7 [+0.80%]
  累積損失率=2.190×10^(-7) [+16.92%]
9501東京電力HDRSI逆システム
  累積利益率=2.447×10^3 [-59.69%]
  累積損失率=3.491×10^(-3) [+32.28%]

補正なしの場合と比べて幾分マシにはなりましたが、まだかなりの誤差があります。
そこで、最初に切り捨ててしまった3乗項を取り込むことを考えてみます。

今、(u(i)-u)^3を展開してみます。
  (u(i)-u)^3=u(i)^3-3×u×u(i)^2+3×u^2×u(i)-u^3

これをu(i)^3について整理すると、
  u(i)^3=(u(i)-u)^3+3×u×u(i)^2-3×u^2×u(i)+u^3
となります。

両辺の総和を取って整理すると、
  Σ(u(i)^3)=Σ((u(i)-u)^3)+3×(n-1)×u×s^2+n×u^3
が得られます。ここで、nは勝ち数、sは利益率標準偏差です。

ここで、Σ((u(i)-u)^3)について考えます。これは偏差の3乗和であり、その値は勝ち数や標準偏差に依存することが予想されます。
単なる偏差の総和であればその値は0になるのですが、3乗和の場合はそうとは限りません。ちなみに、2乗和の場合は全ての項がプラスであるため、必ず有限の正の値を取ることになります。

そこで、これを次式のように仮定します。
  Σ((u(i)-u)^3)=a×n×s^3

定数aの値を変えて実際のシステムに当てはめてみると、a=3の場合が最も実際の値に近くなることが分かりました。そこで、この項を次式で近似してみます。
  Σ((u(i)-u)^3)≒3×n×s^3

ただし、これは利益率の場合であり、損失率の場合は次式になります。
  Σ((u(i)-u)^3)≒-3×n×s^3

これを3乗和の式に代入すると、
  Σ(u(i)^3)≒3×n×s^3+3×(n-1)×u×s^2+n×u^3

したがって、3次の補正項εは、
  ε=(1/3)×Σ(u(i)^3)
   =n×s^3+(n-1)×u×s^2+(1/3)×n×u^3 (u>0)
   =-n×s^3+(n-1)×u×s^2+(1/3)×n×u^3 (u<0)
となります。

以上から、累積利益率や累積損失率の近似値を求めると、次のようになります。

8001伊藤忠商事累乗平均逆システム
  累積利益率=9.529×10^7 [+0.34%]
  累積損失率=2.128×10^(-7) [+13.61%]
9501東京電力HDRSI逆システム
  累積利益率=5.497×10^3 [-9.45%]
  累積損失率=3.319×10^(-3) [+25.77%]

誤差が大分小さくなりましたが、まだ結構大きいものもあります。ただ、これは累積値における誤差であり、年率換算、もしくはトレード毎の誤差はそれよりも小さくなります。
これらの近似値を用いた複利利益率や複利損失率、年率利益率や年率損失率は、以下のようになります。

8001伊藤忠商事累乗平均逆システム
  複利利益率=2.48% [+0.02%]
  複利損失率=-3.20% [-0.81%]
  年率利益率=97.86% [+0.02%]
  年率損失率=-43.48% [-0.61%]
9501東京電力HDRSI逆システム
  複利利益率=5.23% [-1.17%]
  複利損失率=-4.64% [-3.78%]
  年率利益率=38.06% [-1.33%]
  年率損失率=-19.74% [-3.47%]

また、これらから複利PF及び複利損益レシオ、簿価年率リターンを求めると、次のようになります。

8001伊藤忠商事累乗平均逆システム
  複利PF    =1.23
  複利損益レシオ =0.78
  簿価年率リターン=11.83%
9501東京電力HDRSI逆システム
  複利PF    =1.54
  複利損益レシオ =1.13
  簿価年率リターン=10.81%

相対誤差は示しませんが、前述したこれらの正確な値と、ほとんど差がないことが分かります。

後半は話が大分脱線してしまいましたが、今回はプロフィットファクター(PF)及び損益レシオについて解説しました。併せて、複利利益率や複利損失率、年率利益率や年率損失率、累積利益率や累積損失率、簿価年率リターンについても説明いたしました。

大分長くなりましたので、今回はここまでといたします。

nice!(0)  コメント(0) 
共通テーマ:

システムにおける性能指標の定義と位置付け(2):損益に関する指標 [システムトレード]

トレーディングシステムにおける最も代表的な性能指標の一つには、その重要度はともかくとして損益累計が挙げられます。損益累計は、そのシステムを運用した結果、どれくらいの収益が見込めるかを、直接的に表現しています。
これは株価推移のようなもので、その騰落に注目が集まるのは、ごく自然なことでしょう。

損益累計は、分析期間中の全トレードにおける個々のトレードの損益を加算したものです。個々のトレードにおいて損益がプラスの場合のみを加算したものが総利益、そうでない場合のみを加算したものが総損失となり、両者の合計が損益累計もしくは総損益ということになります。

分析期間中のトレード結果は、勝ちトレードか負けトレードのいずれかとなることから、
  トレード数=勝ち数+負け数
となります。ここで損益ゼロの場合は、通常、負けトレードに分類します。

勝ち数をトレード数で割ったものを勝率と定義し、トレード数と勝率を用いて表現すると、
  勝ち数=トレード数×勝率
  負け数=トレード数×(1-勝率)
となります。ちなみに、これは定義を言い直したに過ぎません。

各トレードにおけるi番目の勝ちトレードの利益をP(i)、j番目の負けトレードの損失をL(j)とすると、
  総利益=ΣP(i) (i=1 to 勝ち数)
  総損失=ΣL(j) (j=1 to 負け数)
となります。ここでΣはP(i)やL(j)の値を、各トレードの数だけ合計することを表します。L(j)は通常、負の値もしくはゼロを用います。

なお、勝ちトレードがない場合は、
  総利益=0
  総損失=ΣL(j) (j=1 to トレード数)
負けトレードがない場合は、
  総利益=ΣP(i) (i=1 to トレード数)
  総損失=0
となります。

これらをそれぞれ勝ち数、負け数で割ると、平均利益及び平均損失が得られます。
  平均利益=総利益/勝ち数 (勝ち数≠0)
      =総利益/(トレード数×勝率)
  平均損失=総損失/負け数 (負け数≠0)
      =総損失/(トレード数×(1-勝率))

なお、勝ちトレードがない場合は、
  平均利益=0
負けトレードがない場合は、
  平均損失=0
となります。

KFシステムクリエイターの場合は、総損失をマイナスで表記するため、
  損益累計=総利益+総損失 (総損失≦0)
となりますが、総損失を絶対値で表記する場合は、
  損益累計=総利益-|総損失|
となります。ここで|x|はxの絶対値を表します。

また、平均損益は、
  平均損益=損益累計/トレード数
となります。

更に、平均利益を平均損失の絶対値で割ったものが、損益レシオもしくはペイオフレシオになります。
  損益レシオ=平均利益/|平均損失|
       =-平均利益/平均損失 (平均損失<0)

一方、総利益を総損失の絶対値で割ったものが、プロフィットファクター(PF)です。
  PF=総利益/|総損失|
    =-総利益/総損失 (総損失<0)

これらの値は、通常、1より大きいほど良いとされています。

なお、損益レシオとPFとの間には、以下の関係があります。
  損益レシオ=-(総利益/勝ち数)/(総損失/負け数)
       =PF×(負け数/勝ち数)
       =PF×((トレード数-勝ち数)/勝ち数)
       =PF×(1/勝率-1)

これらについては、過去の記事「プロフィットファクターは大きいほど良いのか?」などで解説していますので、そちらをご参照ください。

さて、損益累計は最も基本的な性能指標の一つですが、トレーディングシステムの性能を評価するという意味においては、あまり重要ではありません。
その理由の一つは、損益額はあくまで株価水準に依存する、ということです。そのため、分析期間中の株価水準が時期によって大きく異なると、損益額の水準も大きく異なってしまいます。

例えば、過去における株価水準が現在と比べて非常に高い場合、分析期間中の損益累計は過去の損益額に大きな影響を受けてしまいます。システムトレードでは未来の収益が最重要であるにも関わらず、それを左右する直近性能が反映され難いと言うことになるわけです。

同様の理由で、損益累計と関連が深いPFや損益レシオ、勝率、平均損益などもまた、トレーディングシステムの性能を評価するという意味においては、重要とはなり得ません。

この問題を緩和するためには、損益累計ではなく累計損益率を用いる方法があります。累計損益率は各トレード毎の損益率を合計したものですが、損益累計同様、総利益率と総損失率の和で表すことが出来ます。

総利益率や総損失率は、各トレードにおけるi番目の勝ちトレードの利益をP(i)、j番目の負けトレードの損失をL(j)とし、それらのトレードに投じた資金額をF(i)及びF(j)とすると、次式で定義されます。
  総利益率=Σ(P(i)/F(i)) (i=1 to 勝ち数)
  総損失率=Σ(L(j)/F(j)) (j=1 to 負け数)

ただし、KFシステムクリエイターでは、総利益率や総損失率を評価項目として直接的には用いていません。しかし、評価項目として採用している他の性能指標から求めることが出来ます。

これらは評価項目として用いられている平均利益率と平均損失率、勝ち数と負け数、もしくはトレード数と勝率から、
  総利益率=平均利益率×勝ち数
      =平均利益率×トレード数×勝率
  総損失率=平均損失率×負け数
      =平均損失率×トレード数×(1-勝率)
となります。

そして累計損益率は、
  累計損益率=総利益率+総損失率
       =(平均利益率×勝率+平均損失率×(1-勝率))×トレード数
で求めることが出来ます。

累計損益率に運用資金を乗じると、システムを単利運用した場合の損益額になります。それに運用資金を加えれば、単利運用時の資産残高が求まります。
  単利資産残高=運用資金×(1+累計損益率)

以上のように、累計損益率は単利運用時の損益を表します。一方、累計損益は単株運用時の損益を表します。では、複利運用時にはどのような指標を用いれば良いのでしょうか。
それは、累積損益率によって得ることが出来ます。

累積損益率は、必ずしも利益と損失に場合分けする必要はありませんが、これまでの説明に倣って累積利益率と累積損失率を定義してみます。

各トレードにおけるi番目の勝ちトレードの利益をP(i)、j番目の負けトレードの損失をL(j)とし、それらのトレードに投じた資金額をF(i)及びF(j)とすると、
  累積利益率=Π(1+P(i)/F(i)) (i=1 to 勝ち数)
  累積損失率=Π(1+L(j)/F(j)) (j=1 to 負け数)
となります。ここで、Π()は()内の項を、各トレード毎に全て乗じることを表します。

これらから、累積損益率は次式で示されます。
  累積損益率=累積利益率×累積損失率
       =Π(1+PL(k)/F(k)) (k=1 to トレード数)
ここで、PL(k)はk番目のトレードにおける損益を表します。

累積損益率は、資産カーブ(資産推移)のばらつきが大きいと、増加しにくいという性質があります。すなわち、累積損益率が大きいということは、取りも直さず資産カーブの直線性(ロバスト性)が高いということを意味します。

累計損益を累計損益率や累積損益率に拡張したことと同様に、PFや損益レシオなども、単利基準や複利基準で再定義することが出来ます。
単利基準におけるPFの再定義につきましては、以前の記事「プロフィットファクターの再定義」で解説しました。

次回はそのおさらいをすると共に、複利基準での再定義などについても考えたいと思います。また、売買指標の残りの項目についても、順次解説していきます。
長くなりましたので、今回はここまでといたします。

nice!(0)  コメント(0) 
共通テーマ:

システムにおける性能指標の定義と位置付け(1):性能指標の種類 [システムトレード]

トレーディングシステムには様々な性能指標があり、それらはシステム性能を判断する上で重要な情報を与えてくれます。言わば、システムの通信簿のようなものです。
それらの性能指標は、システム設計段階においては最適なシステムを得るための指針となり、運用段階においてはシステムが機能しているかどうかを判定する材料となります。

性能指標の数は非常に多く、その種類は多岐に渡っています。トレーディングシステムにおいてどの性能指標を採択し重視するかは、設計するシステムの性能を大きく左右する重要な要素です。
個々の性能指標についても、古典的なものから現代的なもの、一般的なものから特殊なもの、等、様々です。

KFシステムクリエイターでは、約100種類もの性能指標を演算し、確認することが出来ます。これらは、システムの条件を変更する度に再演算され、直ちに再表示されます。
各々の性能指標は他の性能指標と密接に関連し、その多くが互いに従属する関係にあります。

性能指標は大きく分けて、次の5つに分類されます。

一つ目は売買指標で、個々の売買毎の成績を集計したものとなります。この指標は離散的であり、同じ分析期間のシステムであっても、それを構成する要素の数は異なるのが普通です。
プロフィットファクター(PF)、トレード数、勝率、損益レシオなどがこれに該当します。

二つ目は統計指標で、分析期間全域に渡る資産推移を統計処理したものとなります。この指標は連続的であり、日々の資産推移に応じて変遷します。
期待効率、標準誤差、EER(効率誤差比)、安定指数などがこれに該当します。

三つ目は複合指標で、売買指標と統計指標を組み合わせたものとなります。この指標は連続的ですが、売買指標の影響も受けるため、安定性を備えつつ直近性能を反映しやすい傾向があります。
最適化対象指標として用いられるKFインデックスなどがこれに該当します。

四つ目は対比指標で、システムの分析結果とそれ以外の指標との対比を表したものとなります。システムの相対評価を行う際などに有効です。
資産対株価推移などがこれに該当します。

五つ目はシステム指標で、システムそのものの妥当性や健全性を示したものとなります。統計指標と類似していますが、資産推移の分布や直近資産残高の水準など、主に資産カーブの統計的整合性を評価します。
正規分布と資産カーブの整合率などがこれに該当します。

これらの指標の中で、最も種類が多く、最も広く利用されているのは、売買指標です。売買指標は、トレード結果を直接的に表現するため分かりやすい反面、得られた性能が独り歩きしやすい傾向にあります。
例えば、2020年12月13日の記事「今更ですが、プロフィットファクターとは結局何なのでしょうか?」で述べたように、PFが最大となるシステムが必ずしも最良のシステムであるとは限りません。

これは、意図的な操作などによりPFや勝率を高め、あたかもそれが優れたシステムであるかのように見せかけることが可能であるという危険性を孕んでいます。
そして残念ながら、売買指標と言う比較的分かりやすい指標であるが故に、見かけの性能に惑わされてしまう人が少なくありません。

今回の記事では、各性能指標にスポットを当て、その定義や意味合いについて解説していきます。それらを通じて、性能指標に対する正しい理解を得る一助になればと考えます。

なお、性能指標の数は冒頭で示したように非常に多くの種類があります。それらの全てについて解説することは現実的ではありませんし、限界もあります。
そこで、代表的な指標に関しては深く掘り下げて考えていきますが、派生的な指標に関しては定義のみで済ませる場合があります。

また、一回の記事だけで到底収まる内容ではないため、今後数回に渡って掲載していく予定です。
今回は、今後取り上げる予定の性能指標を以下に列記するに留め、次回以降、それらについて詳しく解説していきます。

ちなみに、PF等、過去の記事において詳細に解説している指標については、基本的には概要の説明に留め、それらの記事を参照していただくこととします。

1.売買指標

  損益累計,総利益,総損失
  プロフィットファクター(PF)
  トレード数,勝ち数,負け数
  勝率,平均利益,平均損失
  損益レシオ,平均損益,投資効率
  平均損益率,損益率標準偏差
  最大利益率,最大損失率
  平均利益率,利益率標準偏差
  平均損失率,損失率標準偏差
  累計損益率
  最大STD,最大ETD
  平均ETD,ETD標準偏差
  時価累積損益率,簿価累積損益率
  平均リターン,年率リターン,CSR
  最適レバレッジ
  勝ちトレード日数各種
  負けトレード日数各種
  連勝数各種
  連敗数各種
  時価累計ドローダウン各種
  時価累積ドローダウン各種
  簿価累計ドローダウン各種
  簿価累積ドローダウン各種

2.統計指標

  期待効率
  標準偏差,標準誤差
  EER
  標準猶予日数,統計期間
  安定指数,RSQ
  単利期待効率
  単利標準偏差,単利標準誤差
  単利EER
  単利標準猶予日数,統計期間
  単利安定指数,単利RSQ
  単利資産増減倍率

3.複合指標

  KFインデックス
  単利KFインデックス

4.対比指標

  資産対株価各種

5.システム指標

  整合率
  現在ポジション
  最小推定損益

なお、以上の性能指標は全てKFシステムクリエイターの評価項目となっています。性能指標の表記についてはそのまま記していますが、分かりにくい項目については、今後の解説で明確にしていきます。

nice!(0)  コメント(0) 
共通テーマ:

2020年の振り返りと2021年の展望 [投資・経済全般]

あけましておめでとうございます。
2020年は、新型コロナウイルス禍で近年例を見ないほどの混沌とした一年でした。

日経平均株価は、2月中旬から3月中旬に掛けて1か月で30%も下落しましたが、その後3か月ほどで-5%まで回復しました。株価はその後狭いレンジでじわじわと上昇すると、4か月ほど掛けて急落前の水準に戻し、年末には約30年振りの高値更新となりました。

政治面では安倍首相が突然の退陣表明をし、9月には菅新政権が誕生しました。アメリカではトランプ大統領が大統領選で敗れ、バイデン氏が次期大統領となりました。しかし、トランプ大統領は敗北を認めず、未だ徹底抗戦の構えを崩していません。

経済面では、政府のちぐはぐな新型コロナ対策もあって、飲食業や観光業、運輸業を中心に壊滅的なダメージを受け、未だ回復の兆しが見えていません。
特に、Go To キャンペーンの継続強行による心理的・物理的影響により、年末にかけて感染者数の急増をもたらしました。

システムトレードでは、新型コロナショックによる急落で大きな収益を上げた後、その戻り過程で徐々に収益を減らしていく展開が目立ちました。特に、年後半のなかなか下げないジリ高相場ではシステム的に不利な状況となり、終盤の急騰局面で大きくやられる事例がありました。

個人的には、錆び付いたシステムの改修に追われた一年でした。マニュアルの整備を進めると共に、不具合の修正や新たな機能の追加等、長い間放置してきたツケの支払いに終始しました。一方、システムの基本部分に関しては現在でも通用しており、改めてその堅牢性を確認しました。

さて、2021年はいったいどのような一年になるのでしょうか?

日経平均株価は、底堅い動きを示すのではないでしょうか。利回りを求めての投資資金の流入傾向は継続すると見られ、大きな流出はないものと考えます。ただし、資金が向かう先は日本株だけとは限らず、海外株式や仮想通貨、金相場等、多岐に渡ります。

このような状況下では、債券市場からの流出資金をどれだけ取り込めるかが鍵となるでしょう。それ次第では、日経平均株価3万円台回復も現実味を帯びてきます。
一方、新型コロナワクチンの接種が追い付かず、主要国で医療崩壊が生じるような事態になれば、株価は一時的に大きく下落するかもしれません。

政治面では、自民党総裁選と衆院議員選が控えており、菅政権が継続されるかどうかが焦点となります。ここで菅氏が再選され、かつ二階氏の影響力を弱めることが出来れば、地に足の着いた政権運営が出来るのではないかと期待します。

アメリカでは、バイデン新大統領の政権運営も然ることながら、トランプ氏の影響力を如何に弱めることが出来るかに、民主主義の復権が掛かっています。
トランプ氏が影響力を保持し続ける限りアメリカの分断は継続し、民主主義は棄損され続けることになります。トランプ氏は言わばトランプ教の教祖であり、信者の目を覚ますことは容易ではないでしょう。

経済面では、新型コロナ対策をどう実行するかが最重要課題です。これまでの対策は、チェック機能がほとんど働かない片手落ちの感が否めません。
とにかく、計画を立て実行したら必ず随所にチェックを入れ、その結果によって計画の修正や変更、停止等を即座に行えるよう、予め行動計画を作成しておく必要があります。

ワクチンの有効性が大前提ながら、それがほぼ全ての国民に行き渡るまで、医療崩壊を起こさないために経済活動を制限し、かつ経済へのダメージを最小限に留める、という難しい課題を遂行しなければなりません。
しかし今年は、昨年から延期された東京オリンピックの強硬開催が見込まれ、課題の最中に重大な空白期間を生じさせかねません。

理想的には、オリンピックまでに全国民のワクチン接種が完了し、日常を完全に取り戻せればいいのですが、現実的には難しいでしょう。
ただ、昨年時点では見えなかったゴールが、ワクチン接種と言う現実として見えてきたことにより、計画そのものは立てやすくなったのではないかと思います。

ゴールがある程度明確になったことで、それまで経済を支えるための必要資金が明確になってきます。例えばゴールが年末であるとすると、最大必要資金は日本のGDPと同程度となりますが、それをどれくらいまで縮小できるかが政治家や官僚の腕の見せ所となります。

新型コロナ禍前の2019年のGDPは約560兆円であり、2020年には6%減とするとその差は34兆円ほどとなります。ただし、これには2020年の新型コロナ対策費用(補正予算約58兆円)の効果が上乗せされているわけですから、実質的には最大90兆円ほどの減少と考えられます。

すなわち、GDPが2019年レベルまで回復するためには、最小必要資金として約90兆円が掛かるだろうということになります。ただし、これはあくまで平均的な費用であり、収益が向上しているセクターからの再分配が行われないとすると、実際にはこれよりも数倍大きな資金を投入する必要があるかもしれません。

もちろん、これをわずか1年で手当てすることは現実的ではありませんし、難しいでしょう。何よりも、新型コロナ禍により多くの事業者が廃業や倒産に追い込まれました。
それによる失業者の増加分の受け皿を増やすためには、新たな起業や業容拡大を促し支援していく体制が必要となるでしょう。そのような土台再建があってこそ、新型コロナ禍の克服を成し得るのではないかと思います。

システムトレードでは、昨年までの仮想運用結果に基づき、全90システムで追跡してきた運用を、上位38銘柄に絞り込んで継続していきます。これは昨年の年間成績がプラスであり、かつインデックス(対象銘柄株価増減率)に勝ったシステムを全て抽出したものです。

年間成績は全てクリアし、2021年1月4日の寄付きから運用開始したとして、集計していきます。結果につきましては、ココナラブログにて毎週末に掲載していく予定です。
これらはシステムの完全なフォワードテストであり、システムの堅牢性を検証する場となります。

個人的には、KFシステムクリエイターの改善やロジックの拡充、KFシステムコントローラの改善やマニュアル完成、ココナラにおけるサービスの改善と拡充、ブログの拡充や改訂、を重点課題として行っていきます。

KFシステムクリエイターの改善では、時系列分析の精度を向上させると共に、より堅牢なシステムを構築するための指針作りに注力します。
ロジックの拡充に関しては、著名なテクニカル指標を用いたロジックを中心に、開発を進めて行きます。

ブログに関しては、SSブログの有料サービス終了に伴い、万が一のブログサービス終了に備えていく必要性を強く感じています。
そのため、WordPress等、他のブログサービスへの移行を真剣に考えないといけないかもしれません。また、現在、試験的にGoogleのBloggerを利用していますが、こちらの永続性が担保されるのであれば、そちらへの移行も候補の一つとして考えるかもしれません。

あるいは、契約中のMicrosoft365 Business Standardを有効活用できないか検討していきます。こちらについては、以前研究所サイトを開設していたのですが、しばらく放置していた結果、当時とは全く様相が異なる状態になってしまいました。
現在はOfficeの利用のために契約を続けているようなものですが、それだけではもったいないことは重々承知しています。

今日、今時点でまさに2回目の緊急事態宣言が発令されましたが、2021年は新型コロナ禍を如何に克服していくかの重要な節目の年となります。
新型コロナ禍による実体経済への影響は計り知れないものがありますが、金融経済との乖離は縮まるのでしょうか。

実体経済と金融経済との狭間に生きる者として、この重要な1年をしっかりと見据えていきたいと思います。2021年が最終的には良い年となりますことを、心よりお祈り申し上げます。

nice!(0)  コメント(0) 
共通テーマ:

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。