takahのEA開発ばなし・その4 Buy/SellからEAの特徴を考える

こんにちは、takahです!

EAをつくる上で一つの目標になるのは、数字情報の改善にあります。PFしかり、リカバリーファクターしかり…これらの数字を改善していくのがEA作者の腕の見せ所だったりします。

しかし、その行為が行き過ぎてしまうと、フッティングカーブ、つまり過剰最適化に繋がり、未来において通用しづらいEAになっていきます。

その流れでよく話題になるのが、買い(Buy)と売り(Sell)の捉え方があります。端的にいうと、BuyとSellでTPやSLなどのパラメータを個別に持つのかどうか?といった問題です。

私はBuyとSellを別物として考えているスタンスなので、Buy/Sellで個別にパラメータを持たせることに賛成の立場なのですが、今回はそんなBuy/SellからEAの特徴について考えてみようと思います。

 

「PL in money by Year」でみるBuy/Sell

それでは、いつものようにQuantAnalyzerを立ち上げて、HANAのバックテストデータを読み込んでみます。

データを読み込んだ後、左側にある「Analyse(分析)」ボタンをクリックし、「Trade analisys(取引分析)」タブをクリックします。

そして、分析チャートの部分で「Long vs Short trades(買いと売りのトレード対比)」を選択してみましょう。

これを見ると、HANAはBuyとSellでほぼ同じだけのトレードを行っていることがわかりますね。

では次に、左側の「PL in money by Year」を見てください。これは年ごとの収益を棒グラフで表示したモノですが、HANAは以下のようになっています。

(一応)HANAは2005年から2018年まで年間収支はすべてプラスになっています。

今度は画面上部の「Direction(トレード方向)」を「L+S(Buy/Sell両方)」から「L(Buy)」に変えてみましょう。

あらら…年度ごとではマイナスの年が出てきてしまいました。。。今度は「S(Sell)」に変えてみてください。

先ほどのBuyほどではないものの、やはりマイナスになる年が出てきましたね。。。

 

「Equity chart」でみるBuy/Sell

次は「Equity chart(損益グラフ)」タブをクリックし、「Direction(トレード方向)」を「L+S(Buy/Sell両方)」に戻してみてください。

そうして、「Drawdown(ドローダウン表示)」を「in money(金額表示)」、「Show Year Markets(年ごとの表示)」、「Show trade peaks(最高益表示)」にしてみましょう。

これはHANAの損益グラフです。緑のプロットは最高益を更新したタイミングを示しています。また、画面下の赤色の領域はドローダウンの大きさを表しています。

これを見ると、緑がプロットされている(最高益が更新されている)タイミングと赤の領域が増えている(ドローダウンが増えている)タイミングが交互に来ているのがおわかりいただけると思います。HANAはこのようにして利益を伸ばしていくタイプのEAです。

それでは、先ほどと同じようにBuyのみのグラフを表示してみましょう。画面上部の「Direction(トレード方向)」を「L+S(Buy/Sell両方)」から「L(Buy)」に変えてみてください。

一応、何とか右肩上がりにはなっていますが、かなり収益グラフが乱れてしまいましたね(汗)

次にSellも見てみましょう。「Direction(トレード方向)」を「S(Sell)」に変えてみてください。

今度は比較的綺麗な収益グラフになりました。このグラフから、HANAはBuyよりSellの方が優れた収益曲線を持っているのが分かりますね。

 

Buy/SellからEAの特徴を考える

これらのことから何が分かるでしょうか?

私は、Buy専門EAとSell専門EAがポートフォリオされた結果が本来のEAの結果であると考えるようになりました。

HANAはBuyとSellのパラメータを同じにしています。このようにBuyとSellのパラメータが同一のEAの場合、BuyもしくはSellの損益グラフが崩れる場合があります。それはBuyとSellとでは相場の動きが違うからです。なので1つのパラメータでBuy/Sell共に綺麗な収益曲線を描かせるのは相当難しいのです。。。

だからこそ、私はそこに数字を改善する余地があると思っています。もし、BuyとSellが別物と考えることができるのであれば、Buy専用パラメータ、Sell専用パラメータを持つことで、EA全体の収益性を高めることは可能なのです。

そのため、私はEAによってはBuyとSellで個別にパラメータを持たせることもあります。

しかし、HANAについてはそれをしていません。それは、ギリギリまでチューニングをするよりもある程度遊びの部分を持たせておくことで汎用性を高める意味合いがあるからなのですが、取引数の問題からBuyとSellに分けることができないと判断したからでもあるのです。。。

先ほどの話で、Buy専門EA、Sell専門EAという考え方をお話ししました。しかし、Buy専門EAを成立させるためには、買いだけで大数の法則を成り立たせなければならないのです。買い専用のパラメータを持つのであれば、買いだけで過去10年間に1,000トレード以上を確保しなければ、そのパラメータの信ぴょう性を評価することができないと考えたのです。

HANAの場合、一見するとBuy/Sell合計で2,000トレードあり、それぞれのトレード数が1,000を超えています。しかし、私が考える大数の法則は「片側1ポジションにおける過去10年間に1,000トレード以上を確保」なのです。

HANAは片側2ポジション(高精度モードの場合)なので、片側1ポジションとして計算すると1,000エントリーに満たないのです。そのため、Buy/Sellでパラメータを分けることはせず、そのままの状態で勝負することにしました。

その判断が正しいかどうかはまだ分かりません。しかし、HANAができ上がってからもう少しで1年になりますが、その間ちゃんとフォワードを積んでくれているので、現時点ではこのまま行けるのかなと思っています。

 

今回はBuy/SellからEAの特徴について考えてみました。

尚、今回の内容は私個人の考え方であり、異なる考え方を持たれているEA作者様もおられます。そのため、この考え方が絶対ではなく、EAに対する一つのアプローチとお考えいただけるとありがたいです。

ただ、お使いになられているEAの特徴を知る上で、Buy/Sellを調べてみると色んなことが分かります。ですので、ぜひ一度Buy/Sellについて確認してみてくださいね!