Calcul du lot par Vince - page 11

 

Trouver l'optimum f en utilisant la moyenne géométrique.

Dans le trading réel, la taille des pertes et des gains change constamment. Donc les formules de Kelly ne peuvent pas nous donner le foptimal correct . Comment trouver correctement, d'un point de vue mathématique, le f optimal , qui nous permettra de déterminer le nombre de contrats à négocier ? Essayons de répondre à cette question. Tout d'abord, nous devons modifier la formule pour trouver HPR afin d'inclure f :

voir plus loin les formules du premier post

plus loin

Nous avons vu que le meilleur système de trading est celui dont la moyenne géométrique est la plus élevée. Pour calculer la moyenne géométrique, nous devons connaître f. Décrivons donc nos actions étape par étape.

1. Prenez l'historique des transactions dans le système de marché donné.

2. Trouvez la valeur optimale de f en examinant différentes valeurs de f entre 0 et 1. La valeur optimale de f correspond à la valeur la plus élevée de TWR.

3. Une fois quevous avez trouvé f, prenez la racine du degré N deTWR (N est le nombre total de transactions). C'est votre moyenne géométrique pour ce système de marché. Vous pouvez maintenant utiliser la moyenne géométrique obtenue pour comparer ce système avec d'autres. La valeur f vous indiquera le nombre de contrats à négocier dans ce système de marché. Une fois que f est trouvé, il peut être converti en équivalent monétaire en divisant la plus grosse perte par l'optimum négatif/. Par exemple, si la perte la plus importante est égale à 100 $, et que le f optimal = 0,25, alors -100 $ / -0,25 = 400 $. En d'autres termes, vous devez miser 1 unité pour chaque compte de 400 $. Pour simplifier, vous pouvez tout calculer sur la base d'une unité (par exemple, un jeton de 5 $, un contrat à terme ou 100 actions). Le nombre de dollars à allouer à chaque unité peut être calculé en divisant votre perte la plus importante par le f optimal négatif. Lef optimal est le résultat de l'équilibre entre la rentabilité du système (basé sur 1 unité) et son risque (basé sur 1 unité). De nombreuses personnes pensent que la fraction fixe optimale est le pourcentage du compte qui est alloué à vos paris. C'est complètement faux. Il doit y avoir une autre étape. Le f optimal en lui-même n'est pas le pourcentage de votre compte qui est alloué à la transaction, c'est le diviseur de la plus grosse perte. Le quotient de cette division est la valeur par laquelle vous devez diviser votre compte total afin de savoir combien de paris placer ou combien de contrats ouvrir sur le marché.

C'est-à-dire AccountFreeMargin()/H, avec H=D/(-f).

Voici comment c'est organisé dans le code cov - voir le trailer.

if (optimal_f) //--- Расчет оптимального f ---
        {   
          
          double Mas_Outcome_of_transactions [10000];        // Массив профитов/убытков закрытых позиций
          int Qnt = 0, Orders = OrdersHistoryTotal();        // Счётчик количества ордеров   
          ArrayInitialize(Mas_Outcome_of_transactions, 0);   // Обнуление массива
          double f, D, SUMM, TWR, G, G_Rez, H,A,B, Pow;
          int orderIndex;
   
          for (orderIndex = 0; orderIndex < Orders; orderIndex++)
          {   
             if (!OrderSelect(orderIndex, SELECT_BY_POS, MODE_HISTORY))
              {
                Print("Ошибка при доступе к исторической базе (",GetLastError(),")");
                continue;
              }
   
             if (OrderSymbol() != Symbol() || OrderMagicNumber() != MAGICMA || OrderCloseTime()==0)
                continue; 
         
             int lastType = OrderType();
             double lastLots = OrderLots();
             double lastProfit = OrderProfit() + OrderSwap();
      
             if (orderIndex == 0 || lastProfit < D)
                D = lastProfit;
      
             Mas_Outcome_of_transactions[Qnt] = lastProfit;  // Заполняем массив профитом/лоссом по всем закрытым позициям 
             SUMM=SUMM+lastProfit;
             Qnt++;                                          // увеличиваем счетчик закрытых ордеров    
          }   
   
         if (Transaction_number<Qnt) { //при репрезентативном кол-ве ордеров на истории открываемся объемом через оптим-ую f 
            Pow = 1/NormalizeDouble(Orders, 0);
            for (f = 0.01; f<=1.0; f=f+0.01)                   // цикл перебора переменной f для поиска оптимального ее значения,
            {                                                  // при котором TWR - максимально
               G= 1;
               for ( orderIndex = 1; orderIndex < Qnt; orderIndex++) // при заданной f проходим по всем закрытым ордерам
                {                                                     // и считаем среднее геометрическое от TWR
                  TWR = 1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D));
                  G *= NormalizeDouble (MathPow(TWR, Pow),8);
                }
               if (G > G_Rez)  G_Rez = G;// если текущий > результирующего, то результирующий делаем равным текущему
               else break;               // иначе переходим на следующую итерацию цикла по f
            }
               
            
            if (f>0) H=D/(-f); //денежный эквивалент фракций (оптимального f) для торговли 0,1 лотом.
            lot = NormalizeDouble((AccountFreeMargin()/H)*Min_Lot,1);
            if (lot==0)    lot=Min_Lot;
            Print("H=D/(-f): ", H, " lot = ", DoubleToStr (lot,1), "Transaction_number = ", Transaction_number);  
            Print("G_Rez максимальна = ", DoubleToStr (G_Rez,8), " при f = ", f);             
            Print(" Максимальный лосс по позиции, D = ", DoubleToStr(D, 2), " Pow (1/Orders)= ", DoubleToStr(Pow, 8));
            Print("Закрытых позиций = ",   Qnt,
                " Нетто Профит/лосс = ", SUMM,
                " У последней ",         Qnt,
                " закрытой позы профит/лосс = ", Mas_Outcome_of_transactions[Qnt-1]);  
                
            return(lot);         
          }    // Выход из  if (Transaction_number<Qnt)                   
          else {
             lot=Min_Lot; 
             Print("Закрытых позиций = ",   Qnt, " Transaction_number = ", Transaction_number);
             return(lot); 
          } 
  
      }  //Выход из расчета оптимального f     

Donc tout est correct ici - Strictement selon les règles.

Adaptez-le à vos besoins, testez-le, vérifiez-le, partagez les résultats ici.

Dossiers :
 
ph3onix:

1. La première chose qui vient à l'esprit est que la taille du lot doit être basée sur le stop loss de la position suivante,

2. connaître la fraction du déoposit que les maths de Vince recommandent d'utiliser dans l'échange.

3...la taille de lot utilisée pour tester les EAs dans ce fil est un peu fausse.


1. C'est ici que vous devez aller.

2. Vous ne connaissez pas les mathématiques de Vince, il recommande une approche complètement différente, nous ne parlons pas de "fractions" comme vous l'écrivez ....

"

Lefoptimal en soi n'est pas le pourcentage de votre compte qui est alloué au trading, c'est le diviseur de la plus grosse perte. Le quotient de cette division est la valeur par laquelle vous devez diviser votre compte total, afin de déterminer le nombre de paris à placer ou le nombre de contrats à ouvrir sur le marché.

"

3. Tout est strictement conforme à la source d'information - lisez attentivement, surtout à partir de la page 31, comparez sur vos propres sOves, vérifiez, partagez les résultats.

 

Le sujet n'est pas clos, la suite suit...

La fonction de calcul des lots est disponible publiquement ici dans l'EA (voir le trailer).

Dossiers :
 

Vous êtes clairement en train de réfléchir à quelque chose de façon excessive. Le TWR est une mesure du nombre de fois que le compte initial a été augmenté. Le f optimal est le risque par transaction en pourcentage du dépôt. Le TWR est un dérivé du f optimal. Il suffit de calculer le pourcentage de risque dans le testeur de stratégie de 1 à 100% par transaction. Au-delà d'une certaine valeur, le bénéfice final cessera de croître. Cette valeur sera la valeur optimale de f.

Si vous faites un tel gâchis pour un simple pourcentage du dépôt, alors il est effrayant d'imaginer comment vous commencez à calculer le G optimal (oui, cela existe).

 
C-4:

Vous êtes clairement en train de réfléchir à quelque chose de façon excessive. Le TWR est une mesure du nombre de fois que le compte initial a été augmenté. Le f optimal est le risque par transaction en pourcentage du dépôt. Le TWR est un dérivé du f optimal. Il suffit de calculer le pourcentage de risque dans le testeur de stratégie de 1 à 100% par transaction. Au-delà d'une certaine valeur, le bénéfice final cessera de croître. Cette valeur sera la valeur optimale de f.

Si vous créez un tel désordre pour un simple pourcentage du dépôt, alors il est effrayant d'imaginer comment vous commencez à calculer le G optimal.


C'est déjà calculé - tous les battements, tous les tests, voir le fil de discussion en premier... :-)

"Comment calculez-vous le G... optimal ?" - tout est calculé à partir de la source...

 if (Transaction_number<Qnt) { //при репрезентативном кол-ве ордеров на истории открываемся объемом через оптим-ую f 
            Pow = 1/NormalizeDouble(Orders, 0);
            for (f = 0.01; f<=1.0; f=f+0.01)                   // цикл перебора переменной f для поиска оптимального ее значения,
            {                                                  // при котором TWR - максимально
               G= 1;
               for ( orderIndex = 1; orderIndex < Qnt; orderIndex++) // при заданной f проходим по всем закрытым ордерам
                {                                                     // и считаем среднее геометрическое от TWR
                  TWR = 1+f*(-Mas_Outcome_of_transactions[orderIndex]/(D));
                  G *= NormalizeDouble (MathPow(TWR, Pow),8);
                }
               if (G > G_Rez)  G_Rez = G;// если текущий > результирующего, то результирующий делаем равным текущему
               else break;               // иначе переходим на следующую итерацию цикла по f
            }
               
            
            if (f>0) H=D/(-f); //денежный эквивалент фракций (оптимального f) для торговли 0,1 лотом.
            lot = NormalizeDouble((AccountFreeMargin()/H)*Min_Lot,1);
 
C-4:

...

Si vous faites un tel gâchis pour un simple pourcentage du dépôt, il est effrayant d'imaginer comment vous allez commencer à calculer le G optimal (oui, cela existe).

Je ne l'ai pas encore rencontré, je vais le chercher, quel genre d'oiseau est-ce - optimal G... ?
 
Le G optimal est le facteur de capitalisation du portefeuille. Pour trouver le G optimal, il faut au moins optimiser la variance du portefeuille total et maîtriser la théorie du portefeuille de Markowitz. Je ne vois rien de tel dans ces calculs.
 

C-4:
1. Оптимальное G - это фактор капитализации портфеля. Для поиска оптимального G нужно как минимум оптимизировать дисперсию совокупного портфеля и свободно разбираться в портфельной теории Марковица.

2. Je ne vois rien de mal dans les calculs ci-dessus.


1. Je vois - ceci est plus proche du calcul et de l'ordre de formation du portefeuille... Je suis intéressé par la question.

2. ce n'est pas présent ici. J'ai confondu le G optimal avec le G moyen géométrique, dont le calcul est présent ici... :-)

Voir le premier message de la première page du fil de discussion.

"

Moyenne géométrique des échanges

Un trader peut être intéressé par le calcul de sa moyenne géométrique (c'est-à-dire le profit moyen réalisé par contrat et par transaction), en supposant que les profits sont réinvestis et que des contrats fractionnés peuvent être négociés. C'est l'attente mathématique lorsque l'on négocie sur la base d'une fraction fixe. En réalité, il s'agit du rendement approximatif du système par transaction lorsqu'il utilise une fraction fixe du compte.(La moyenne géométrique est en fait l'espérance mathématique en dollars par contrat et par transaction. Soustrayez un à la moyenne géométrique et vous obtenez l'espérance mathématique. La moyenne géométrique de 1,025 correspond à l'espérance mathématique de 2,5 % par transaction). De nombreux traders ne regardent que la transaction moyenne du système de marché pour voir s'il vaut la peine de trader sur ce système. Cependant, c'est la moyenne géométrique des échanges (GAT) qui doit être prise en comptelors de la prise de décision.

G = moyenne géométrique - 1;

f = part fixe optimale.

(Bien entendu, la perte la plus importante sera toujours un nombre négatif).

 
Je ne m'emballerais pas trop avec ces conneries si j'étais vous. Tous les calculs de Vince sont basés sur l'ajustement. Le f lui-même est instable et a tendance à s'effondrer avec le temps, il est également extrêmement sensible à l'effet d'asymétrie du Z-Score ou de l'effet de levier, et donne une distribution des bénéfices extrêmement inégale: il faudra 90 % du temps pour réaliser 10 % de bénéfices.
 
C-4:
Je ne m'emballerais pas trop avec ces conneries si j'étais vous. Toutes les mathématiques de Vince sont basées sur l'ajustement. Le f lui-même n'est pas stable et a tendance à s'effondrer avec le temps, en plus il est extrêmement sensible au Z-Score ou à l'effet d'asymétrie de l'effet de levier, donne également une distribution des bénéfices extrêmement inégale : les premiers 90% du temps il faudra faire 10% de bénéfices.


Merci, Vasily, pour cette information, ce qu'elle est et ce à quoi elle peut mener... Je ne suis pas très porté sur ces calculs de lot, c'était juste intéressant de faire le tour de la question et de l'examiner sous différents angles et de la comparer avec d'autres approches du MM dans l'une ou l'autre alliance....

Il aborde d'ailleurs aussi le sujet de la diversification avec la théorie du portefeuille...:-) Surtout quand ces mots sont surlignés en rouge...:-) Il y a un livre, il y a des formules - comment ne pas mettre ces informations dans un code et voir comment il calcule le lot en action dans les différents soviets, je me demande... Ouvrez le livre - écrivez un système en l'utilisant, regardez son comportement dans un testeur, sur une démo, pour commencer... ceci et cela... :-) Creuser, en général. A propos, j'ai récemment surveillé un compte de démonstration avec les indicateurs META-SOT, purement sur la base de votre article, sans l'ombre d'autres types d'analyse du comportement du marché - tout est rentable jusqu'à présent ... :-)

"

Le meilleur

le plus haut f. Plus f est élevé , plus la perte possible est importante, car la perte maximale (en pourcentage) n'est pas inférieure à f. Le paradoxe de la situation est que si un système est capable de produire un f optimal suffisamment élevé, alors la perte pour un tel système sera également suffisamment élevée. D'une part, le f optimal vous permet d'obtenir la croissance géométrique la plus élevée, d'autre part, il vous crée un piège dans lequel vous pouvez facilement tomber.

Nous savons que si vous utilisez le f optimal lorsque vous négociez une action fixe, vous pouvez vous attendre à des pertes importantes (en pourcentage de votre solde). Le f optimal est comme le plutonium - il donne une puissance énorme, mais il est aussi extrêmement dangereux. Ces pertes importantes sont un gros problème, surtout pour les débutants, car le trading au niveau de l'optimum f crée un risque de pertes énormes plus rapidement que dans le trading normal. La diversification peut considérablement atténuer les pertes. L'avantage de la diversification est qu'elle vous permet de faire plusieurs tentatives (plusieurs jeux) en même temps, ce qui augmente vos bénéfices globaux. Il est juste de dire que la diversification, bien qu'elle soit généralement le meilleur moyen de lisser les pertes, ne les réduit pas nécessairement et, dans certains cas, peut même les augmenter !

Il existe une idée fausse selon laquelle les pertes peuvent être complètement évitées si la diversification est suffisamment efficace. Il est vrai que, dans une certaine mesure, les pertes peuvent être atténuées par une diversification efficace, mais elles ne peuvent jamais être complètement évitées. Ne vous laissez pas tromper. Quelle que soit la qualité du système appliqué, quelle que soit l'efficacité de votre diversification, vous rencontrerez toujours des pertes importantes. La raison n'en est pas que vos systèmes de marché sont mutuellement corrélés, car il y a des moments où la plupart ou tous les systèmes de marché du portefeuille travaillent contre vous alors que vous pensez que cela ne devrait pas. Essayez de trouver un portefeuille avec cinq ans de données historiques afin que tous les systèmes de trading fonctionnent de manière optimale et que la perte maximale soit inférieure à 30% ! Ce ne sera pas facile. Le nombre de systèmes de marché utilisés n'a pas d'importance. Si vous voulez faire tout ce qui est mathématiquement correct, vous devez être prêt à perdre 30 à 95 % du solde de votre compte. Une discipline stricte est nécessaire et tout le monde ne peut pas la suivre.

Dès qu'un trader renonce à négocier un nombre constant de contrats, il est confronté au problème du nombre de contrats à négocier. Cela se produit toujours, que le trader reconnaisse ou non ce problème. Négocier un nombre constant de contrats n'est pas une solution, car de cette manière, vous ne parviendrez jamais à une croissance géométrique. Par conséquent, que vous le vouliez ou non, la question de savoir combien en échanger lors du prochain échange sera inévitable pour tout le monde. Le simple fait de choisir une quantité aléatoire peut conduire à une grave erreur. La solution optimale f est la seule solution mathématiquement correcte.

Théorie moderne du portefeuille

Imaginez une situation avec un f optimal et un système de marché perdant. Plus le système de marché est performant, plus la valeur de f est élevée. Cependant, si vous négociez avec un f optimal, la perte (historique) ne peut jamais être inférieure à f. D'une manière générale, plus le système de marché est performant, plus les pertes intermédiaires (en pourcentage du solde du compte) seront importantes si vous tradez à f optimal. Ainsi, si vous voulez atteindre la croissance géométrique la plus élevée, vous devez être prêt à subir des pertes importantes en cours de route.

"