トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 120

 
アレクセイ・ブルナコフ
  • FVが最大になるような機種を選ぶようにする(今はMOで機種選定している)。つまり、モデルの品質評価関数を変えてみるのです。HZ...

モデルの品質を評価するための適切な機能は非常に重要であり、何を求め、何を最大化しようとしているかが、最終的な成果物となるからです。モデルの精度を使用する場合、モデルが常に最も多くの例を持つクラスを返すという局所最大値に陥りやすい。クラスが偏った学習データには、Fスコアやコーエンのカッパを使うのがよいでしょう。しかし、それでも問題がありました。1本あたりの値上がり幅はまちまちで、プラスに見積もってもマイナスになることもあります。勝ちトレードは負けトレードより多くなりますが、負けトレードが数回あると、回復不可能な大きな損失になります。取引シミュレーション、そして取引結果によるモデルの評価は正しいことだと思います、同感です、私も最近やり始めました。ドローダウンが小さくても収益性があることが必要であり、モデルの評価にはこのようなコンセプトが必要です。

MOは重要なドローダウンが考慮されていないので、あまり良い選択とは言えないと思います。MT5でEAを推定するために利用できる機能の中で、Recovery FactorとSharpe ratioが一番好きです。
リカバリーファクターは、全利益を全期間の最大ドローダウンで割ったものです。非常にシンプルですが、効果的です。
シャープレシオ - インターネット上に多くの記述があるが、計算式はあまり見あたらなかった。MT4用のコードがあるので、それをRに転送してやってみようかと思います。

double GetSharpeRatioFromHistory(double riskFreeYearlyIncome = 0.01){
   double profitsArray[];
   int profitsArraySize = 0;
   
   double profitsAvg = 0.0;
   int profitsAvgCount = 0;
   
   int ordersHistoryTotal = OrdersHistoryTotal();
   if(ordersHistoryTotal == 0){
      return 0.0;
   }
   for(int i=0; i<ordersHistoryTotal; i++){
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){
         if((OrderSymbol() == _Symbol) && (OrderMagicNumber() == magic)){
            double profitForTrade = (OrderProfit() + OrderCommission() + OrderSwap());
            double seconds = double(OrderCloseTime() - OrderOpenTime());
            double riskFreeRate = riskFreeYearlyIncome / double(365*24*60*60) * seconds;
            double tradeResult = profitForTrade - riskFreeRate;
            
            profitsArraySize = ArrayResize(profitsArray, profitsArraySize+1);
            if(profitsArraySize>0){
               profitsArray[profitsArraySize-1] = tradeResult;
            }
            
            profitsAvg += tradeResult;
            profitsAvgCount++;
         }
      }
   }
   
   if(profitsArraySize == 0){
      return 0.0;
   }
   
   profitsAvg /= double(profitsAvgCount);
   
   double stdDev = 0.0;
   for(int i=0; i<profitsArraySize; i++){
      stdDev += ((profitsArray[i]-profitsAvg)*(profitsArray[i]-profitsAvg)/double(profitsArraySize));
   }
   
   if(stdDev == 0.0){
      return 0.0;
   }

   return profitsAvg/stdDev;
}

riskFreeYearlyIncome - 無リスク投資(銀行預金)の年間収益率で、この例では1%です。シャープレシオは、そのような投資よりも戦略がどれだけ優れているかを考慮したものです。
double seconds = double(OrderCloseTime() - OrderOpenTime())- 取引開始時間(秒)。バー・トレードの場合、これはそれぞれ1本のバーが何秒であるかということです。

 
Dr.Trader(ドクタートレーダー

1) モデルの品質を評価する適切な機能は非常に重要です。なぜなら、私たちが求めているもの、最大化しようとしているものは、最終的に得られるものだからです。

2)でも、1本あたりの値上がり幅が違うので、プラス評価でもマイナスになることがあり、勝ちトレードの方が多いのに、負けトレードが数本あると、取り返しがつかない大きな損失になることがあるのが問題でした。

3) トレードのシミュレーションを行い、トレードの結果に基づいてモデルを評価することは正しいことです、私も同意見です、最近やり始めました。ドローダウンが小さくても収益性があることが必要なので、モデルの評価にはこれらの概念を用いるべきです。

4)

MOは重要なドローダウンが考慮されていないので、あまり良い選択ではないと思います。MT5で気に入っている機能は、リカバリーファクターとシャープレシオです。
リカバリーファクターは、全利益を全期間の最大ドローダウンで割ったものです。非常にシンプルですが、効果的です。
シャープレシオ - インターネット上に多くの記述があるが、計算式はあまり見あたらなかった。MT4にはそのようなコードがあるので、Rに転送して試してみようかと思います。


1) 絶対

2)まさに

3)はい、評価の出発点バイアスを取り除くのに役立ちます。

4) FSは回復係数。全般的に尊敬しています。推定機能に入れる、簡単ですね。

シャープ簡単です!と説明します。

a) トレード結果のベクトルがpipsで得られますよね?

b) REINVESTMENTで取引をシミュレートし、ポイントのベクトルを保証金のパーセンテージ増分のベクトルに変換する必要があります。例)10万円からスタートします。0.1ロットの取引で0.001(10ポイント)を獲得しました。これは1ロットあたり10ドルです。つまり、この値は10 / 100 000に変わる。などと、ロットの増減を考慮しながら。

c) 得られたパーセントの増加のベクトルを用いて、平均、標準偏差を計算する。

d) 年間の一定のリスクフリーリターン(3%)を入力する - この数字は条件付きで、小さな数字である。

e) 取引を平均年収に換算するか、1年当たりのリスクフリーリターンを取引毎の平均リターンで分解してください。完了しました。

f) (1トレード(期間)あたりの平均リターン)-リスクフリーリターン)/標準偏差

Rのコードはまだ持っていないんです。しかし、このような関数を書くことは難しくないはずです。

 

金融市場では、すべてが再教育される!再教育されないと言われているものでも、再教育されるのです。

ロバスト線形回帰は、再学習は少ないが、学習の質は最悪で、新しいデータへの展開も最悪である。

 
アレクセイ・ブルナコフ

値上がり益の分類というお考えは、最初から私にとっては純粋に感情的なものでした。トレンドを予測するならば、ZZを見れば、ここにあるクラスと別のクラスがあることは明らかです。物価上昇のグラフを見ると、ゼロ付近でカオス的なジャーキングをしている。ここで明確にわかるクラスはどこでしょうか?

統計学を重視するのは純粋な感情であり、数学がなくてもすべてが明確で明白であるべきなのです。

また、金融市場の価格上昇に対しては、ARIMA-ARCHが長年開発されており、非常によく機能している。このオペラには、ハーストを考慮したモデルまであります。分類よりも優れている点は何ですか?

分類はパターンです - "頭と肩"、我々は自動化されており、明確に目に見えるクラスを予測するための検索。分類では、(例えば木の形で)パターンを見つけて、「このパターンの後には成長がある」と言います。ターゲットとなる変数を正しく定式化できていれば、そうなります。ここで、ZZは正しいターゲット変数ではありません。ここでは、100pipsの将来の伸びを予測するというものでした。このようなターゲット変数の方が、私にはずっと正しいように思えるのです。

結論ターゲットは常に我々の全てであり、誤ったターゲットは沼に落ちる。

 
サンサニッチ・フォメンコ

値上がり益の分類という お考えは、最初から私にとっては純粋に感情的なものでした。トレンドを予測するならば、ZZを見れば、ここにあるクラスと別のクラスがあることは明らかです。物価上昇のグラフを見ると、ゼロ付近でカオス的なジャーキングをしている。ここで明確にわかるクラスはどこでしょうか?

これは、私が統計学を重要視している純粋な感情で、数学がなくてもすべてが明確で明白であるべきなのです。

また、金融市場の価格上昇に対しては、ARIMA-ARCHが長年開発されており、非常によく機能している。このオペラには、ハーストを考慮したモデルまであります。分類よりも優れている点は何ですか?

分類はパターンです - "頭と肩"、我々は自動化されており、明確に目に見えるクラスを予測するための検索。分類では、(例えば木の形で)パターンを見つけて、「このパターンの後には成長がある」と言います。ターゲットとなる変数を正しく定式化できていれば、そうなります。ここで、ZZは正しいターゲット変数ではありません。 ここでは、100pipsの将来の伸びを予測するというものでした。こ のようなターゲット変数の方が、私にはずっと正しいように思えるのです。

結論ターゲット変数から始めなければならない。いつものように、ターゲットは我々のすべてであり、誤ったターゲットは沼地に導く。

心情的にはどうなんだろう。そういう見方もあるんですね。キャンドルの色もそう呼ばれています。

回帰と分類のタスクは、収益性の高いシステムを構築する段階の前の備品であったことを思い出してほしい。

さらに私は、成長の兆候だけでなく、より大きな弾性率での成長を予測するようになりました。つまり、単なる成長ではなく、システムが強い成長を予測するところだけ買いに入るということです。また、セルと。技術的には、機械が回帰を学習する。そして、その出力をストロングアップ、ストロングダウンと解釈し、チャンネルにぶら下げているのです。

さて、これは将来の100pipsの上昇を予測するのに非常に近いものです。ただ、そのようなターゲティングの形式化をどのように考えているのか、私自身にはよくわかりません。成長する前に90pipsの下落があり、この成長が1週間で到達する場合、どのような意味があるのでしょうか?

私の9時の水平線では、強い上昇は20ピップス程度です。9時間後、取引は終了します。

そして実際、私は今、クラスを全く予測していません(上昇/下降/ビリビリ/強い上昇)。私は、学習段階での成績がトレードの成熟度期待値で測られるシステムを実際に構築しているのです。つまり、分類精度は低くても(私の場合は53%)、正しい方向に打つことで、打たないよりもわずかに高い利得を得ることができるのです。問題文の違いは感じられますか?分類の精度は取引の収益性と相関があるが、完全には一致しない。

 

ちなみに、モデルの品質評価の機能としてのリカバリーファクターも横並びになっています。10回取引して1回負けることもあれば、500回取引して10回負けることもあるんです。2番目のケースでは、FSが低くなり、利益が50倍になる可能性があります。

あるいは、利益の合計を取り、そこから最大ドローダウンを差し引くこともできます。ここで、少なくとも利益は最大になる。

あるいは、従来の収益性要因である「総利益/総損失」。

 
アレクセイ・ブルナコフ

2つ目のケースでは、FSが低くなり、利益が50倍になることもあります。

リスクを取るかどうかが重要なのです。例えば、2つのシグナルがあり、最初のシグナルは年間100%の利益をもたらし、最大ドローダウンは10%である。2つ目のシグナルは、利益の300%、ドローダウン40%です。つまり、2つ目のシグナルは利益でリードしているわけです。
なぜなら、最初のシグナルの取引サイズ(ロット数)を4倍にすれば、2番目のシグナルと同じドローダウンになりますが、より大きな利益を得ることができるからです。また、口座残高の大きな割合をリスクにさらしたくない場合は、2つ目のシグナルのロットサイズを4倍にして、残高の10%の望ましいリスクを与えることができますが、利益も最初のシグナルより少なくなります。

つまり、ロールフォワード戦略で起こりうる最大のドローダウンを決定し、このドローダウンが口座残高の許容値より何倍大きいか/小さいかを計算し、これらの数字が収束するようにロットサイズを計算する、というのが戦略の取引計画である。
FSを使うということは、取引を始める前にすべてのリスクを計算し、適切なロットサイズを決定することを意味します。取引時のドローダウンが小さいストラテジーほど、大きな取引サイズを使用することができます。

 
アレクセイ・ブルナコフ

あるいは、従来の収益性要因である「総利益/総損失」。

IMHOでは、より受け入れられやすいのは

基準値_評価_TC = 総利益取引数 / (総利益取引数 + 総損失取引数)

ただし、固定ロットで取引される場合に限ります。

その場合、基準値が0.5より高ければ、TSは総利益を示し、そうでなければ損失を示す。

この基準の利点は、厳密に配給され、その値が0から1.0を含む範囲を超えることがないことである。

ドローダウンは、取引の最終的な利益にもかかわらず、この基準にマイナスの影響を与える、つまりマイナス要因として考慮される。

 
ユーリー・レシェトフ

IMHOでは、より受け入れられやすいのは

基準値_評価_TC = 総利益取引数 / (総利益取引数 + 総損失取引数)

固定ロットで取引することを条件に

その場合、基準値が0.5より高ければ、TSは最終的に利益を示し、そうでなければ損失を示すことになる。

この基準の利点は、厳密に配給され、その値が0から1.0を含む範囲を超えることがないことである。

ドローダウンは、取引の最終的な利益にもかかわらず、この基準にマイナスの影響を与える、つまりマイナス要因として考慮される。

"The_amount_of_losing_deals" - はっきり言いますが、絶対値という 意味です。ありがとうございます。このような正規化された基準は初めて見ました。
 
ユーリー・レシェトフ

IMHOでは、より受け入れられやすいのは

基準値_評価_TC = 総利益取引数 / (総利益取引数 + 総損失取引数)

固定ロットで取引することを条件に

その場合、基準値が0.5より高ければ、TSは最終的に利益を示し、そうでなければ損失を示すことになる。

この基準の利点は、厳密に配給され、その値が0から1.0を含む範囲を超えることがないことである。

ドローダウンは、取引の最終的な利益にもかかわらず、この基準にマイナスの影響を与える、つまりマイナス要因として考慮される。

もし、数回の取引で主な利益を得て、他の何千もの取引で小さな損失を出したらどうでしょう?- いいとは思わないけど。
理由: