Critère de Kelly
Forums › ProRealTime forum Français › Support ProOrder › Critère de Kelly
- This topic has 3 replies, 2 voices, and was last updated 5 years ago by Nicolas.
-
-
11/27/2019 at 11:14 AM #113705
Bonjour,
Suite à une vidéo de TrendFrance vue sur Youtube j’ai souhaité essayer d’appliquer le critère de Kelly à mon money management sur une stratégie qui prends des positions long et short.
J’ai réussi sans problème si j’applique le Kelly indistinctement à mes prises de postions long et short. Mais cela ce complique lorsque je veux appliquer un critère de Kelly pour mes postions long et un critère de Kelly différent pour mes postions short. Sorti de la période d’étude : période pendant laquelle j’analyse la stratégie pour déterminer le critère de Kelly avant de l’appliquer, je n’ai plus de prises de positions.
On est sur l’EUR/USD en m30, je vous joins le code, si quelqu’un voit ce qui cloche…
Bol Kelly m30123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162Defparam cumulateorders = falseOnce NbGainLong=0Once NbGainShort=0Once NBLong=0Once NBShort=0Capital=10000TauxCouverture=3.33// Variable Période d'étude avant activativation KellyPEtude=10// Comptage du nombre de positions longues/courtesT=barindex-tradeindex=0IF LongOnMarket AND T ThenNBLong=NBLong+1ENDIFIF ShortOnMarket AND T ThenNBShort=NBShort+1ENDIF//Calculs du Rapport détaillé + Période d'étudeLongWin=Strategyprofit>Strategyprofit[1] AND LongOnMarket[1]LongLoose=Strategyprofit<Strategyprofit[1] AND LongOnMarket[1]ShortWin=Strategyprofit>Strategyprofit[1] AND ShortOnMarket[1]ShortLoose=Strategyprofit<Strategyprofit[1] AND ShortOnMarket[1]IF NBLong<=PEtude ThennL=10IF LongWin ThenGainLong=GainLong+Strategyprofit-Strategyprofit[1]NbGainLong=NbGainLong+1pLongWin=NbGainLong/NBLongRatioLong=ABS(GainLong/PertesLong)ENDIFIF LongLoose ThenPertesLong=PertesLong+Strategyprofit-Strategyprofit[1]pLongWin=NbGainLong/NBLongRatioLong=ABS(GainLong/PertesLong)ENDIFENDIFIF NBShort<=PEtude ThennS=10IF ShortWin ThenGainShort=GainShort+Strategyprofit-Strategyprofit[1]NbGainShort=NbGainShort+1pShortWin=NbGainShort/NBShortRatioShort=ABS(GainShort/PertesShort)ENDIFIF ShortLoose ThenPertesShort=PertesShort+Strategyprofit-Strategyprofit[1]pShortWin=NbGainShort/NBShortRatioShort=ABS(GainShort/PertesShort)ENDIFENDIF// Période KellyIF NBLong>PEtude ThenKellyLong=(pLongWin-(1-pLongWin)/RatioLong)nL=(Capital/(Capital*TauxCouverture)*KellyLong)nL=round(nL)IF LongWin ThenGainLong=GainLong+Strategyprofit-Strategyprofit[1]NbGainLong=NbGainLong+1pLongWin=NbGainLong/NBLongRatioLong=ABS(GainLong/PertesLong)KellyLong=(pLongWin-(1-pLongWin)/RatioLong)nL=(Capital/(Capital*TauxCouverture)*KellyLong)nL=round(nL)IF KellyLong <=0 ThennL=1ENDIFENDIFIF LongLoose ThenPertesLong=PertesLong+Strategyprofit-Strategyprofit[1]pLongWin=NbGainLong/NBLongRatioLong=ABS(GainLong/PertesLong)KellyLong=(pLongWin-(1-pLongWin)/RatioLong)nL=(Capital/(Capital*TauxCouverture)*KellyLong)nL=round(nL)IF KellyLong <=0 ThennL=1ENDIFENDIFENDIFIF NbShort>PEtude ThenpShortWin=NbGainShort/NBShortRatioShort=ABS(GainShort/PertesShort)KellyShort=(pShortWin-(1-pShortWin)/RatioShort)nS=(Capital/(Capital*TauxCouverture)*KellyShort)nS=round(nL)IF KellyShort <=0 ThennS=1ENDIFIF ShortWin ThenGainShort=GainShort+Strategyprofit-Strategyprofit[1]NbGainShort=NbGainShort+1ENDIFIF ShortLoose ThenPertesShort=PertesShort+Strategyprofit-Strategyprofit[1]ENDIFENDIF// Variables StratégieMM=20D=1.5MML=60MMC=7BollInf = Average[MM](close)-D*std[MM](close)BollSup = Average[MM](close)+D*std[MM](close)// ACHATca1 = close > average[MML](close)ca2 = average[MMC](close) > average[MML](close)ca3 = low < BollInfIF ca1 and ca2 and ca3 THENbuy nL shares at marketENDIFcv1 = close > BollSupIF cv1 THENsell at marketENDIF// SHORTca1s = close < average[MML](close)ca2s = close > BollSupIF ca1s and ca2s THENsellshort nS shares at marketENDIFcv1s = close < BollInfif cv1s THENEXITSHORT at marketENDIF11/27/2019 at 2:09 PM #113731Si il n’y a pas de position qui s’ouvre c’est sans doute parce que les variables calculées nS et nL ont une valeur non correcte pour une taille de position acceptable. Il faudrait commencer par les GRAPH, puis remonter toutes les variables de la même manière pour vérifier où le calcul se bloque. Il s’agit sans aucun doute d’un mauvais copier/coller renommage de variables quand tu as voulu séparer les 2 Kelly criterion.
11/28/2019 at 12:05 AM #113786Merci de votre réponse Nicolas.
J’ai fais les GRAPH de toutes les variables qui me permettent de calculer le Kelly criterion et tout semble varier correctement pendant la période d’étude. Après la période d’étude mes variables nS (nombre de lots à acheter en short) et nL (nombre de lot à acheter en long) passent à 0 alors que mes variables KellyShort et KellyLong ont bien une valeur normale et que les autres variables qui permettent de déterminer le nombre de lots à acheter ou vendre sont normales aussi.
C’est comme si il y avait un problème dès que NBShort>PEtude ou NBLong>PEtude. De plus cela ne se produit pas au même moment (sur la même barre) puisque la stratégie peut prendre plusieurs positions short ou long d’affilée et finir sa période d’étude des positions longues avant les short ou l’inverse.
J’ai fait assez peu de copié/collé dans la rédaction de cette stratégie, cela m’étonnerai que ça vienne de là. Il y a par contre à un endroit nS=round(nL). Il faut corriger par nS=round(nS).
De plus ce qui est vraiment étonnant c’est qu’il puisse y avoir une (ou plusieurs) erreur qui fait planter les 2 conditions d’entrée en position dès qu’on sort de PEtude.
11/28/2019 at 9:11 AM #113803Si nS et nL passent à 0 à un certain moment durant le backtest, c’est parce qu’on leurs affectent cette valeur. Essaie de supprimer les round pouvoir les valeurs réelles, c’est peut être cette instruction qui arrondi un chiffre très petit à cette valeur.
-
AuthorPosts
Find exclusive trading pro-tools on