Correlation

[[correlation]] mesure la relation linéaire entre deux séries numériques sur une fenêtre donnée. Il indique dans quelle mesure les variations de source1 et source2, observées par rapport à leur moyenne sur cette fenêtre, tendent à se produire ensemble.

La corrélation est exprimée sur une échelle de -1 à +1. Une valeur proche de +1 indique que les deux séries varient globalement dans le même sens. Une valeur proche de -1 indique qu’elles varient en sens opposé. Une valeur proche de 0 signifie qu’aucune relation linéaire nette ne ressort sur la fenêtre observée.

Déclaration du bloc

Une stratégie peut contenir plusieurs blocs [[correlation]]. Chaque bloc produit une série numérique : la corrélation entre source1 et source2.

Exemples

Configuration minimale

Ce bloc calcule la corrélation sur le symbole et le timeframe principaux définis dans [backtest].

[[correlation]]
id      = "corr"
source1 = "close"
source2 = "open"
length  = 20

Recherche de la longueur de fenêtre optimale

Ce bloc explore une plage de valeurs pour length afin d’identifier la longueur de fenêtre la plus performante, en corrélant close et open.

[[correlation]]
id           = "corr"
source1      = "close"
source2      = "open"
length.start = 20
length.stop  = 80
length.step  = 10

Timeframe dédié

Ce bloc calcule la corrélation entre close et open sur un timeframe spécifique, indépendamment du timeframe principal de la grille. Voir la page Exchanges, Symboles et Timeframes pour les règles d’alignement entre timeframes.

[[correlation]]
id        = "corr"
source1   = "close"
source2   = "open"
length    = 50
timeframe = "D"

Corrélation entre deux symboles

Pour corréler deux marchés distincts, définissez d’abord une série par symbole, puis utilisez leurs identifiants comme source1 et source2. Ici, chaque bloc [[price]] lit un symbole différent, et le bloc [[correlation]] mesure ensuite la relation entre ces deux séries sur le timeframe 4 heures.

[[price]]
id        = "btc_close"
symbol    = "BINANCE:BTCUSDT"
timeframe = "240"

[[price]]
id        = "eth_close"
symbol    = "BINANCE:ETHUSDT"
timeframe = "240"

[[correlation]]
id        = "corr_cross_symbol"
source1   = "btc_close"
source2   = "eth_close"
length    = 50
timeframe = "240"

Corrélation entre un prix et une moyenne mobile

Vous pouvez également corréler une série de prix et une série dérivée. Ici, le bloc mesure la relation entre close et une moyenne mobile exponentielle calculée sur cette même série.

[[moving_average]]
id     = "ma"
type   = "ema"
length = 20

[[correlation]]
id      = "corr"
source1 = "close"
source2 = "ma"
length  = 30

Paramètres

ParamètreDescription
id
 Texte
 Obligatoire
Nom unique de la série de corrélation produite.
source1
 Texte
 ou Tableau
 Obligatoire
Première série d’entrée.
Peut être un prix standard ("close", "hlc3", etc.) ou l’identifiant d’un autre indicateur.
Accepte un tableau de candidats pour la recherche en grille.
source2
 Texte
 ou Tableau
 Obligatoire
Deuxième série d’entrée.
Peut être un prix standard ("close", "hlc3", etc.) ou l’identifiant d’un autre indicateur.
Accepte un tableau de candidats pour la recherche en grille.
length
 Entier ou Plage
 Obligatoire
Nombre de couples valides utilisés dans la fenêtre de corrélation ; doit être ≥ 1.

Usage :
• Fixe : length = valeur
• Grille :
 – length.start = valeur_minimale
 – length.stop = valeur_maximale
 – length.step = valeur (optionnel, par défaut 1)
symbol
 Texte
 ou Tableau
 Optionnel
Symbole(s) de marché utilisé(s) lorsque source1 et source2 ne contiennent que des prix standard (open, close, high, low, hl2, hlc3, ohlc4, hlcc4, volume). Dans ce cas, un même contexte symbol s’applique aux deux sources standard du bloc : il ne permet pas de définir un symbole différent pour source1 et source2.
Si symbol est renseigné alors qu’au moins une combinaison possible de source1 et source2 référence un indicateur, le chargement de la stratégie échoue. Cette contrainte évite une configuration ambiguë, car le bloc correlation ne gère qu’un seul contexte de marché pour sa sortie et ne peut donc pas appliquer symbol à une seule des deux sources.
Pour corréler deux symboles distincts, créez d’abord deux séries amont, par exemple avec [[price]], puis utilisez leurs identifiants dans source1 et source2.
S’il est omis, le bloc hérite du symbole défini dans [backtest].
Pour le format, les tableaux et l’alignement, voir Exchanges, Symboles et Timeframes.
timeframe
 Texte
 ou Tableau
 Optionnel
Timeframe sur lequel cette corrélation est calculée.
Si timeframe est omis, le calcul se fait sur le timeframe principal de la grille défini dans [backtest].
Pour les formats acceptés et les règles d’alignement, voir Exchanges, Symboles et Timeframes.

Variables disponibles

Vous pouvez utiliser directement les identifiants ci‑dessous dans vos expressions. Le bloc correlation expose une série numérique, sa longueur de fenêtre, les noms des séries d’entrée et les métadonnées de symbole/timeframe.

Supposons le bloc configuré ainsi :

[[correlation]]
id      = "corr"
source1 = "close"
source2 = "open"
length  = 50

Alors :

VariableDescription
corr ou corr[0]
Décimal
Valeur actuelle de la corrélation entre source1 et source2.
corr[n]
Décimal
Valeur de la corrélation il y a n bougies.
corr.length
Décimal
Longueur de fenêtre utilisée.
corr.source1
Texte
Nom de la première série d’entrée.
corr.source2
Texte
Nom de la deuxième série d’entrée.
corr.symbol
Texte
Symbole utilisé pour ce bloc.
corr.timeframe
Texte
Timeframe utilisé pour ce bloc.

Notes

  • Le calcul utilise une fenêtre fixe de length couples valides (source1, source2). Les bougies où l’une des deux entrées est na sont ignorées et la sortie reste na tant que length couples valides n’ont pas été accumulés.
  • Si l’une des deux séries a une variance nulle sur la fenêtre, la corrélation est indéfinie et le bloc renvoie na.
  • corr.symbol et corr.timeframe décrivent le contexte du bloc correlation, pas un contexte distinct pour chaque source.