Exposant de Hurst avec R/S

Viewing 14 posts - 1 through 14 (of 14 total)
  • Author
    Posts
  • #66901 quote
    Alf639
    Participant
    New

    bonjour,

    Je voudrais calculer le rescaled range (https://en.wikipedia.org/wiki/Rescaled_range) pour arriver à l’exposant de Hurst (mémoire longue) sur une période glissante de n périodes

    Je n’arrive pas à programmer les boucles qui servent à :

    1- calculer les écarts à la moyenne sur n périodes (passées bien sûr),

    2- faire pour chaque période le cumul de ces écarts,

    3- prendre les maxi et mini de cette somme (toujours sur n périodes).

    Merci d’avance pour votre aide.

    #66981 quote
    Nicolas
    Keymaster
    Master

    Il y a déjà quelques topics au sujet des formules de Hurst, mais je pense que ta demande fait référence à ce type d’indicateur:

    https://www.prorealcode.com/topic/indicateur-fractal-bands-conversion-mq4-vers-prorealtime/

    https://www.prorealcode.com/prorealtime-indicators/fractal-bands/

    On peut trouver pas mal de choses avec l’outil de recherche du site.

    #67309 quote
    Alf639
    Participant
    New

    Bonjour,

    Merci mais ça ne me semble pas correspondre à ce que je cherche. J’avais bien sûr utilisé un moteur de recherche avant de poster mon message…

    Espérant trouver une solution…

    #67311 quote
    Nicolas
    Keymaster
    Master

    Le rescaled range, ça n’est pas la première partie du FDI (Fractal Dimension Index) ?: https://www.prorealcode.com/prorealtime-indicators/fractal-dimension-index-fdi/

    #67314 quote
    Alf639
    Participant
    New

    Euh…non. Pour le calcul du R/S, on prend la moyenne (des rentabilités et pas des prix car il faut que la série soit stationnaire) sur la période considérée. Ensuite on calcule les écarts à la moyenne pour chaque période. On fait la somme de ces écarts puis on prend le plus grand et le plus petit de ces écarts. Etc, etc.

    Dans le FDI, c’est le cours le plus haut et le plus bas qui sont à la base du calcul.

    Merci pour l’aide…

    #67316 quote
    Nicolas
    Keymaster
    Master

    En lisant la description du lien Wikipedia, je comprends que le range de la série est la valeur la plus haute moins la valeur la plus basse (notion statistique élémentaire). Puis de diviser ce résultat par l’écart type de cette même série pour obtenir le “rescaled range”.

    Avec ta dernière description je pense que je pourrai m’en sortir, mais que prends-tu en considération pour les valeurs de début et fin de périodes et revenu pour la “rentabilité” ?

    #67322 quote
    Alf639
    Participant
    New

    On “stationnarise” la série des cours en travaillant sur (prix – prix de la période précédente)/prix de la période précédente (rentabilité ou return).

    Je n’ai pas vraiment compris la question pour valeurs de début et de fin de période… Ce que j’entendais par période, c’est un jour sur graphique daily, une heure sur graphique horaire, etc.

    Je ne sais pas si j’ai été assez clair…

    #67407 quote
    Nicolas
    Keymaster
    Master

    Voilà ce que j’ai fais:

    period = 100
    MAtype = 1
    
    
    rent = (customclose-customclose[1])/customclose[1]
    
    if barindex>period then 
    avg = average[period,MAtype](rent)
    
    //SQUAREROOT[(summation(from d = 1 to n)(Close-Moving average on n days)²]
    
    ecart = SQR(summation[period](square(rent-avg)))
    sum = summation[period](ecart)
    
    hh = highest[period](sum)
    ll = lowest[period](sum)
    
    diff = hh-ll
    endif
    
    return diff

    Ici on retourne que la différence “diff”, je ne sais pas par quelle valeur il faut la diviser ensuite, par ecart ou par sum?

    rescaled-range-calculation.png rescaled-range-calculation.png
    #67551 quote
    Alf639
    Participant
    New

    Bonjour,

    Gros merci pour la proposition de code et désolé pour la réponse tardive.

    Ca me parait bien, je me demande pourquoi je suis parti dans des boucles quand j’ai essayé de le faire !!

    C’est un détail mais, pour l’écart à la moyenne, on prend les valeurs réelles négatives ou positives (pas besoin de carré/racine ou valeur absolue). Par ailleurs, il ne me semble pas conforme d’utiliser summation dans le calcul de ecart. Ecart est la différence, pour chaque observation sur la période (period), entre rent et la moyenne des rent. Si je comprends bien, le langage Prorealtime calcule l’historique de cette valeur automatiquement et on peut alors faire la somme

    diff doit donner le Rescaled range (R/S) après les petites modif décrites à la ligne précédente. Pour obtenir R/S, il suffit de diviser diff par l’écart-type des rent calculé sur la même période.

    Ensuite, on obtient l’exposant de Hurst en divisant le log de R/S par le log de period.

    Pour info, si on suit Chamoli and al., 2007 (Computers & Geosciences 33), il faudrait éviter de choisir une période plus petite que 180 observations.

    Encore merci.

    #67588 quote
    Alf639
    Participant
    New

    Bonjour,

    J’ai essayé de de faire les modifs à partir de votre code (cf. ci-dessous) mais j’ai le même problème qu’avec ce que j’avais fait : les valeurs initiales de l’exposant de Hurst sont très basses voire négatives, ce qui est plus qu’improbable ! Ensuite, il y a une hausse progressive pour aller vers des valeurs très réalistes.

    //duree calcul Hurst exponent per = 160
    
    rent = (close - close[1])/close[1]
    
    if barindex>per then
    avg = average[per](rent)
     
    ecart = rent-avg
    sum = summation[per](ecart)
     
    hh = highest[per](sum)
    ll = lowest[per](sum)
     
    diff = hh-ll
    
    stdret = STD[per](rent)
    endif
     
    rs = diff / stdret
    hu = LOG(rs) / LOG(per)
    b = 0.5
    
    RETURN hu AS "Exposant de Hurst", b AS "0,5"
    #67594 quote
    Nicolas
    Keymaster
    Master

    J’obtiens des valeurs qui partage la même échelle, peu importe l’instrument, ci-dessous DAX ou GBP/JPY. Quelle devrait être le type de valeur ?

    Hurst-exponent.png Hurst-exponent.png GBPJPY-5-minutes.png GBPJPY-5-minutes.png
    #67761 quote
    Alf639
    Participant
    New

    Au-dessus de 0,5, les valeurs faibles (fortes) de variation de l’indice tendent à être suivies par des valeurs faibles (fortes) (persistance), au-dessous, de 0,5, c’est le contraire (anti-persistance). A 0,5, c’est une marche au hasard. Plus l’écart à 0,5 est important, plus la caractéristique est marquée. Le domaine de définition est environ -0,9<=>+0,9.

    N’avez-vous pas des valeurs curieuses (très faibles) sur les premiers calculs, juste après que la condition sur barindex soit remplie ?

    #67762 quote
    Nicolas
    Keymaster
    Master

    Cela semble logique au regard des variables hh et ll qui ont besoins de 160 périodes calculés de sum pour obtenir une plage complète.

    #67766 quote
    Alf639
    Participant
    New

    Je crois que j’ai compris. Il y a probablement un souci avec le calcul de sum. Ce n’est pas très facile à expliquer mais, si on prend un calcul sur 200 périodes, sum[199] (1er calcul pour 200 périodes) est égale à ecart puis sum[198] est égale à sum[199] + ecart[198], etc, etc. Ensuite, on prend le max et le min de sum sur les 200 calculs.

Viewing 14 posts - 1 through 14 (of 14 total)
  • You must be logged in to reply to this topic.

Exposant de Hurst avec R/S


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
Alf639 @alf639 Participant
Summary

This topic contains 13 replies,
has 2 voices, and was last updated by Alf639
7 years, 11 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 04/01/2018
Status: Active
Attachments: 3 files
Logo Logo
Loading...