Diskussion zum Artikel "R-squared als Gütemaß der Saldenkurve einer Strategie" - Seite 4

 

Schlussfolgerungen über bestimmte statistische Beziehungen können falsch sein, wenn Ausreißer nicht behandelt werden - Erkennung von Ausreißern.

 
Dennis Kirichenko:

Schlussfolgerungen über bestimmte statistische Beziehungen können falsch sein, wenn keine Ausreißererkennung durchgeführt wird.

Wenn R^2 als Kriterium für die Optimierung (OnTester) verwendet wird, dann ist jede Analyse der LR-Residuen und ihrer Koeffizienten zu verwerfen.

Da eine zusätzliche Analyse die kostbare Zeit der Optimierung erhöht und wenig Nutzen bringt, wird sich die Situation nicht dramatisch ändern: die gleichen "glatten" Aktienkurven werden an der Spitze stehen, die ursprünglich gewünscht waren.

 
СанСаныч Фоменко:

Der Autor zeigt einen völligen Mangel an Verständnis für Zufallsprozesse. Alle Schlussfolgerungen des Artikels haben nichts mit dem eigentlichen Konzept des Zufalls zu tun und führen die Menschen in die Irre.

Lassen Sie mich diese Meinung erläutern.

Gleich zu Beginn des Artikels wird eine Definition gegeben:

Dielineare Regression ist eine lineare Abhängigkeit einer Variablen y von einer anderen unabhängigen Variablen x, ausgedrückt durch die Formel y = ax+b. In dieser Formel ist a der Multiplikator und b ist der Verzerrungskoeffizient

Die lineare Regression wird NICHT durch die folgende Formel ausgedrückt

y = ax+b ist eine lineare Gleichungsformel,

sondern wird ausgedrückt durch die Formel

y = ax+b + Fehler

Der Fehler muss NORMAL VERTEILT sein, und wenn dies nicht der Fall ist, ergeben sich viele Nuancen, die die Anwendung der linearen Regression stark einschränken.

Es ist äußerst wichtig zu wissen, dass die linearen Regressionskoeffizienten im Gegensatz zur linearen Gleichung KEINE Konstanten sind, sondern Zufallswerte, und wenn man eine standardmäßige lineare Regressionsanpassung, z. B. in R, vornimmt, wird für die linearen Regressionskoeffizienten immer die Abweichung von diesem Wert der Koeffizienten sowie die Wahrscheinlichkeit (Wahrscheinlichkeit in der Nullhypothese des NICHT-BEWEISES DIESES KOEFFIZIENTEN) angegeben. Noch einmal: Im Gegensatz zu einer linearen Gleichung können lineare Regressionskoeffizienten überhaupt nicht existieren. Deshalb ist der in dem Artikel diskutierte R2-Koeffizient nur für Regressionen sinnvoll, bei denen die Wahrscheinlichkeit des Nichtvorhandenseins der Regressionskoeffizienten unter 10 % liegt. Bei Finanzreihen habe ich noch nie gesehen, dass die Koeffizienten einer linearen Regression aussagekräftig sind, und daher ist es möglich, genau diese lineare Regression zu verwenden.

San Sanych, mischen Sie sich nicht ein. Wir formen, wie wir es können!

p.s. Es ist offensichtlich, dass Sie diagonal lesen. R^2 wird nicht für Kurscharts berechnet, sondern für das Eigenkapital. Seine Hauptaufgabe ist es, gleichmäßiges Eigenkapital anzuzeigen. Das war's. Ob es dem Zufall entspricht oder nicht - das soll der Benutzer entscheiden:

fxsaber:

Wenn wir R^2 zum Optimierungskriterium machen (OnTester), dann ist jede Analyse der LR-Residuen und ihrer Koeffizienten zum Teufel damit.

Da zusätzliche Analysen die kostbare Zeit der Optimierung verlängern und wenig Nutzen bringen, wird sich die Situation nicht dramatisch ändern: dieselben "glatten" Equity-Kurven werden an der Spitze stehen, die ursprünglich gewünscht waren.

+
 

Wie auch immer, hier ist das falsche Zeichen gesetzt:

Wir haben mit 100.000 angefangen. Kommission 0. Die Summe der Transaktionen +513, aber der Gesamtsaldo 99 755,90, d.h. irgendwo fehlen 757,1$

Wie kann das sein?

 
Vasiliy Sokolov:

Kurzum, hier wird das falsche Zeichen gesetzt:

Ich würde es etwas umformulieren. Die Bemerkung über die Korrektheit des Vorzeichens bezog sich auf den allgemeinen Fall - nicht nur auf die Gleichheit. Wenn man den ersten und den letzten Wert nach der Gleichheit vergleicht, wie Sie es getan haben, ist es wahrscheinlich, dass das falsche Vorzeichen in diesem Fall unterdrückt wird. Es wäre besser, sich mit dem allgemeinen Fall zu befassen.

Wir haben mit 100 000 angefangen. Provision 0. Die Summe bei den Geschäften +513, aber der Gesamtsaldo ist 99 755,90, d.h. irgendwo fehlen 757,1 $.

Wie kann das sein?

Ein HTML-Bericht würde helfen, das zu verstehen.

 
fxsaber:

Ich würde sie etwas umformulieren. Die Bemerkung über die Korrektheit des Vorzeichens bezog sich auf den allgemeinen Fall - nicht nur auf die Gleichheit. Wenn Sie, wie Sie es getan haben, den ersten und den letzten Wert nach der Gleichheit vergleichen, dann wird die Unrichtigkeit des Vorzeichens in diesem Fall wahrscheinlich aufgehoben. Es wäre besser, sich mit dem allgemeinen Fall zu befassen.

Ein HTML-Bericht würde helfen, ihn zu verstehen.

Leider zeigt er das gleiche Ergebnis wie für den Saldo. Die Summen stimmen in beiden Fällen völlig überein: +513$. Aber im Allgemeinen sollten sie übereinstimmen, da nach dem Test alle Geschäfte geschlossen werden und das Eigenkapital mit dem Saldo verglichen wird.

fxsaber:

Ein HTML-Bericht würde zum Verständnis beitragen.

Ich werde ihn jetzt senden.

 

Ich habe es verstanden. Ich habe vergessen, den Swap zu berücksichtigen (Swap to profit wird nicht zusammengefasst)!

 

Erledigt. Die Funktion zur Berechnung des Saldos wurde korrigiert. Jetzt wird bei jeder Transaktion auch der Swap berücksichtigt:

//+------------------------------------------------------------------+
//| Gibt die R^2-Punktzahl zurück, die auf der Grundlage des Gleichgewichts der Strategie berechnet wurde |
//+------------------------------------------------------------------+
double CustomR2Balance(ENUM_CORR_TYPE corr_type = CORR_PEARSON)
{
   HistorySelect(0, TimeCurrent());
   double deals_equity[];
   double sum_profit = 0.0;
   int current = 0;
   int total = HistoryDealsTotal();
   for(int i = 0; i < total; i++)
   {
      ulong ticket = HistoryDealGetTicket(i);
      double profit = HistoryDealGetDouble(ticket, DEAL_PROFIT);
      double swap = HistoryDealGetDouble(ticket, DEAL_SWAP);
      if(profit == 0.0 && swap == 0.0)
         continue;
      if(ArraySize(deals_equity) <= current)
         ArrayResize(deals_equity, current+16);
      sum_profit += profit + swap;
      deals_equity[current] = sum_profit;
      current++;
   }
   ArrayResize(deals_equity, current);
   return CustomR2Equity(deals_equity, corr_type);
}

Die Berechnung des Eigenkapitals wurde korrigiert, so dass der Endwert mit dem tatsächlichen Ergebnis synchronisiert ist:

//+------------------------------------------------------------------+
//|| Fügt Eigenkapitalüberwachung hinzu|
//+------------------------------------------------------------------+
double CStrategyList::OnTester(void)
{
   switch(m_custom_type)
   {
      case CUSTOM_NONE:
         return 0.0;
      case CUSTOM_R2_BALANCE:
         return CustomR2Balance(m_corr_type);
      case CUSTOM_R2_EQUITY:
      {
         double equity[];
         m_equity_exp.GetEquityArray(equity);
         int total = ArrayResize(equity, ArraySize(equity)+1);
         equity[total-1] = AccountInfoDouble(ACCOUNT_EQUITY);
         return CustomR2Equity(equity, m_corr_type);
      }
   }
   return 0.0;
}

Da das Erhebungsintervall für das Eigenkapital groß sein kann, kann der letzte bekannte Wert vom tatsächlichen Wert abweichen. Daher fügen wir einen zusätzlichen letzten Wert in Höhe des Endergebnisses hinzu.

p.s. Es wurden Korrekturen am Artikel vorgenommen. Der Artikel wurde zur Aktualisierung an den Moderator weitergeleitet.
 
Vasiliy Sokolov:

Ich habe es verstanden. Ich habe vergessen, den Swap zu berücksichtigen (Swap summiert sich nicht zum Gewinn)!

Ich würde weiterhin den Swap nicht berücksichtigen

Forum über Handel, automatisierte Handelssysteme und das Testen von Handelsstrategien.

Diskussion des Artikels "R-Quadrat als Beurteilung der Qualität der Strategie-Balance-Kurve"

fxsaber, 2017.10.24 15:18

Code zur Berechnung von "Equity", geeignet für R^2. Geschrieben im MT4-Stil, es ist nicht schwer, es auf MT5 zu übersetzen...

static double GetOrderProfit( void )
  {
    return((OrderProfit()/* + OrderCommission() + OrderSwap()*/) / OrderLots()); // Provisionen und Tauschgeschäfte sind manchmal sinnvollerweise zu ignorieren
  }

Swap hat fast nichts mit der Bewertung der TS Rentabilität zu tun und führt nur Verzerrungen bei der Bewertung der Robustheit ein.

 
fxsaber:

Ich würde weiterhin nicht auf die

Swap hat so gut wie nichts mit der Bewertung der Rentabilität eines TS zu tun und führt nur zu Verzerrungen bei der Bewertung der Robustheit.

Das ist eine kontroverse Aussage. Aber darum geht es hier gar nicht. Es geht nur um die Randbedingungen. Die Größe des Swaps ist nicht groß, aber wenn er nahe Null ist, kann seine Bilanzierung oder Nichtbilanzierung das endgültige Vorzeichen beeinflussen.