Forum Forex: Corrélation - Forum Forex

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Corrélation

#1 L'utilisateur est hors-ligne   Condor the Quant trader 

  • Senior Member
  • PipPipPip
  • Groupe : Membre Actif
  • Messages : 133
  • Inscrit(e) : 06-novembre 11
  • Gender:Male
  • Broker:GoMarkets, Oanda
  • Demo/Real:Real
  • Leverage:1:10

Posté 04 février 2012 - 00:18

Existe t'il un calcul simple pour la corrélation entre deux paires ?
Je connais cette page : http://www.forextick...-01-correlation
mais je voudrais si possible l'inclure dans un programme assez complexe donc j'aurai besoin d'une méthode pour pouvoir le calculer, comme ça je pourrais créer des instructions conditionnelles en fonction des résultats.
0

#2 L'utilisateur est hors-ligne   Ulysse 

  • Mataf's VIP
  • PipPipPipPip
  • Groupe : Modérateur
  • Messages : 1 371
  • Inscrit(e) : 15-septembre 05
  • Demo/Real:Demo
  • Leverage:1:1

Posté 04 février 2012 - 00:40

Voir le messageCondor the Quant trader, le 04 février 2012 - 00:18 , dit :

Existe t'il un calcul simple pour la corrélation entre deux paires ?
Je connais cette page : http://www.forextick...-01-correlation
mais je voudrais si possible l'inclure dans un programme assez complexe donc j'aurai besoin d'une méthode pour pouvoir le calculer, comme ça je pourrais créer des instructions conditionnelles en fonction des résultats.



la question m'étonne de la part d'un quant. ;)

1) calcul de la covariance

c'est à dire de la variance.... c'est pareil sauf qu'au lieu d'élever au carré on remplace par le produit des écarts de la paire 1 et de la paire 2 ( dans le cas ou la paire 1=paire2 on a la variance)

bref

http://www.aiaccess....coefficient.htm

tu auras la formule exacte de la variance, de la covariance et du coefficient de corrélation.
0

#3 L'utilisateur est hors-ligne   Condor the Quant trader 

  • Senior Member
  • PipPipPip
  • Groupe : Membre Actif
  • Messages : 133
  • Inscrit(e) : 06-novembre 11
  • Gender:Male
  • Broker:GoMarkets, Oanda
  • Demo/Real:Real
  • Leverage:1:10

Posté 04 février 2012 - 12:02

Disons que pendant longtemps je pensais pouvoir eviter de passer par là, mais en fait je me rend compte que je partais dans de mauvaise direction. Finalement pour le trading quantitatif il faut oublier tous ce que l'on connait sur le trading manuel car ça n'a rien à voir et c'est loin des petits ea créés sous mt4.
0

#4 L'utilisateur est hors-ligne   Ulysse 

  • Mataf's VIP
  • PipPipPipPip
  • Groupe : Modérateur
  • Messages : 1 371
  • Inscrit(e) : 15-septembre 05
  • Demo/Real:Demo
  • Leverage:1:1

Posté 04 février 2012 - 12:49

Voir le messageCondor the Quant trader, le 04 février 2012 - 12:02 , dit :

Disons que pendant longtemps je pensais pouvoir eviter de passer par là, mais en fait je me rend compte que je partais dans de mauvaise direction. Finalement pour le trading quantitatif il faut oublier tous ce que l'on connait sur le trading manuel car ça n'a rien à voir et c'est loin des petits ea créés sous mt4.



Dès que l'on veut avoir une approche quantitative ( Quant) on en passe forcément par les formules statistiques élémentaires ( au départ). Il est important de les comprendre avant de les appliquer. je me demande d'ailleurs comment on peut appliquer des trucs qu'on ne comprend pas.

C'est là que beaucoup se trompent et confondent l'aspect informatique, développement, écriture de code et l'approche quantitative qui est avant tout mathématique, statistique. Approche de la mesure et modélisation des erreurs. Et cela se fait sur le papier avant d'avoir posé une seule ligne de code.

d'ailleurs des logiciels comme Mathlab ou R vous seront d'une plus grande utilité que le MQL. Excell est aussi un très bon outil.

Pour concevoir il faut disposer des outils conceptuels. Pour ceux qui veulent faire du trading algorithmique, L'AT est ce qui leur fera perdre le plus de temps. Pour tout dire c'est incompatible. Hors polémique, ce ne sont pas les mêmes mondes.

ou alors on se dirige vers la reconnaissance de forme par IA et choses dans le genre. mais on n'échappera pas même en ce domaine à un certain niveau de mathématiques. Car on mesure toujours des variances, des auto corrélations d'erreurs ( résidus) c'est toujours et encore les mêmes outils mathématiques et statistiques.J'en passe.

Bien des incompréhensions résultent de cette confusion.
Les développeurs se disent, moi je connais l'informatique ( du moins le bout qu'ils connaissent) j'ai pas besoin des maths ni de qui que ce soit. Je dispose de l'avantage décisif car je code.

Les matheux eux se disent moi je connais les maths et je sais calculer et modéliser les erreurs blabla. C'est moi qui ais l'avantage décisif. les informaticiens c'est de la daube. comme disait l'autre " je décide ils exécutent"
j'conceptualise!j'ventile!.... etc :D

on arrête la liste. mais dans le cas qui nous occupe tout le monde a besoin de tout le monde.
car il faut
1) les outils conceptuels d'analyse
2) les outils conceptuels de mise en oeuvre
l'un sans l'autre est sans issue comme aurait pu dire le grand Serge.

Bon week end à toi

je ne suis pas un gros matheux mais je suis assez pédagogue pour expliquer et clarifier les outils de base ( vraiment élémentaire)
Si je peux t'être utile en ce domaine. N'hésite pas.
0

#5 L'utilisateur est hors-ligne   Condor the Quant trader 

  • Senior Member
  • PipPipPip
  • Groupe : Membre Actif
  • Messages : 133
  • Inscrit(e) : 06-novembre 11
  • Gender:Male
  • Broker:GoMarkets, Oanda
  • Demo/Real:Real
  • Leverage:1:10

Posté 05 février 2012 - 14:25

Pour l'instant je suis en pleine lecture sur le sujet, donc dès que j'aurais assez avancé je pourrais sûrement avoir besoin de ton aide. Pour les outils je dispose de 2 d'entre eux, excel et matlab, bien que le dernier ne soit pas installé en ce moment.
0

#6 L'utilisateur est hors-ligne   Condor the Quant trader 

  • Senior Member
  • PipPipPip
  • Groupe : Membre Actif
  • Messages : 133
  • Inscrit(e) : 06-novembre 11
  • Gender:Male
  • Broker:GoMarkets, Oanda
  • Demo/Real:Real
  • Leverage:1:10

Posté 06 février 2012 - 15:59

J'avance petit à petit, pour vérifier ma compréhension, j'ai décidé d'écrire ce en mql4.
Pour la covariance je pense avoir trouvé le bon calcul, mais il en est tout autre chose de la variance.
J'ai fais ceci pour la covariance :
   string pairA = "EURUSD";
   string pairB = "GBPUSD";

   double pairX[], pairY[];

   ArrayCopySeries(pairX, MODE_CLOSE, pairA);
   ArrayCopySeries(pairY, MODE_CLOSE, pairB);
   double PairAClose = iClose(pairA, 0, 0);
   double PairBClose = iClose(pairA, 0, 0);
   double cov = (PairAClose - ArrayRange(pairX, 0))*(PairBClose - ArrayRange(pairY, 0));


Pour la variance serait-ce simplement ceci ?
   double varA = MathPow((PairAclose - ArrayRange(pairX, 0)), 2);
   double varB = MathPow((PairBclose - ArrayRange(pairY, 0)), 2);

Et donc au final pour obtenir le coefficient de corrélation :
double correl = cov/MathSqrt(varA*varB);


Après un petit test je sais que c'est faux :angry:
Donc il y a sûrement quelque chose que je ne comprends pas.

Ce message a été modifié par Condor the Quant trader - 06 février 2012 - 16:04 .

0

#7 L'utilisateur est hors-ligne   Ulysse 

  • Mataf's VIP
  • PipPipPipPip
  • Groupe : Modérateur
  • Messages : 1 371
  • Inscrit(e) : 15-septembre 05
  • Demo/Real:Demo
  • Leverage:1:1

Posté 06 février 2012 - 16:50

Voir le messageCondor the Quant trader, le 06 février 2012 - 15:59 , dit :

J'avance petit à petit, pour vérifier ma compréhension, j'ai décidé d'écrire ce en mql4.
Pour la covariance je pense avoir trouvé le bon calcul, mais il en est tout autre chose de la variance.
J'ai fais ceci pour la covariance :
   string pairA = "EURUSD";
   string pairB = "GBPUSD";

   double pairX[], pairY[];

   ArrayCopySeries(pairX, MODE_CLOSE, pairA);
   ArrayCopySeries(pairY, MODE_CLOSE, pairB);
   double PairAClose = iClose(pairA, 0, 0);
   double PairBClose = iClose(pairA, 0, 0);
   double cov = (PairAClose - ArrayRange(pairX, 0))*(PairBClose - ArrayRange(pairY, 0));


Pour la variance serait-ce simplement ceci ?
   double varA = MathPow((PairAclose - ArrayRange(pairX, 0)), 2);
   double varB = MathPow((PairBclose - ArrayRange(pairY, 0)), 2);

Et donc au final pour obtenir le coefficient de corrélation :
double correl = cov/MathSqrt(varA*varB);


Après un petit test je sais que c'est faux :angry:
Donc il y a sûrement quelque chose que je ne comprends pas.



je ne comprends pas le mql

mais la variance en langage commun
c'est:

la moyenne

du carré
des écarts à la moyenne



c'est donc la somme sur x périodes des écarts entre la valeur courante de X et la moyenne mobile de X . Ces valeurs sont élevées au carré et divisées par le nombre de périodes.

cela donne

(xi- x barre)au carré divisé par Xpériodes

x barre c'est la moyenne des xi ou ta moyenne mobile

pour la cov c'est pareil sauf que

(xi-Xbarre)( yi-y barre)

tu retrouves ta formule de variance qui devient un cas particulier de la cov en remplaçant yi-ybarre par xi-xbarre et tu retrouves ton carré.

ce qui fait que tu peux ne programmer qu'un seul indic de variance covariance

ta formule de corrélation est exacte

Ce message a été modifié par Ulysse - 06 février 2012 - 16:53 .

0

#8 L'utilisateur est hors-ligne   betino83 

  • Senior Member
  • PipPipPip
  • Groupe : Membre+
  • Messages : 646
  • Inscrit(e) : 14-septembre 05
  • Gender:Male
  • Broker:oanda, Activtrades
  • Demo/Real:Real
  • Leverage:1:5

Posté 06 février 2012 - 16:51

inspire-toi déjà des scripts existants :

//+------------------------------------------------------------------+
//|                                                  correlation.mq4 |
//|                                                          ENG.A`ED|
//|                                      aed_al_nairab@hotmail.com   |
//+------------------------------------------------------------------+


#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DeepSkyBlue
 
//---- input parameters
extern string    currency_1="EURUSD";
extern string    currency_2="EURGBP";
extern int       iPeriod=20;

//---- buffers
double correl[];
double hl[];
double h2[];
double hl_2[];
double h2_2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(1);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,correl);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   double u,l;
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) counted_bars=0;
   if(counted_bars>0) counted_bars--;
   limit=500-counted_bars;
//----
   for(int c = limit-iPeriod ;c >= 0 ;c--)
   {
   for(int m = limit-iPeriod ;m >= 0  ;m--)
   {
    hl[m]=iClose(currency_1,0,m)-iMA(currency_1,0,iPeriod,0,MODE_SMA,PRICE_CLOSE,m);
    h2[m]=iClose(currency_2,0,m)-iMA(currency_2,0,iPeriod,0,MODE_SMA,PRICE_CLOSE,m);
    hl_2[m]=MathPow(hl[m],2);
    h2_2[m]=MathPow(h2[m],2);
   }
   u=0;l=0;
   for(int i = iPeriod-1 ;i >= 0 ;i--)
   {
     u=hl[c+i]* h2[c+i]+u;
     l=hl_2[c+i]*h2_2[c+i]+l;
       
   }
   correl[c]=u/MathSqrt(l);
   Comment("correlation ","\n",currency_1,"&",currency_2,correl);
  }
  
//----
   return(0);
  }
//+------------------------------------------------------------------+






ou



//+------------------------------------------------------------------+
//|                                               Correlation_v1.mq4 |
//|                           Copyright © 2006, TrendLaboratory Ltd. |
//|            http://finance.groups.yahoo.com/group/TrendLaboratory |
//|                                       E-mail: igorad2004@list.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, TrendLaboratory Ltd."
#property link      "http://finance.groups.yahoo.com/group/TrendLaboratory"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DeepSkyBlue
#property indicator_maximum 2.00
#property indicator_minimum -2.00

//---- input parameters
extern string    Symbol1="USDCHFm";
extern string    Symbol2="EURUSDm";
extern int       cPeriod=20;

//---- buffers
double Correlation[];
double DiffBuffer1[];
double DiffBuffer2[];
double PowDiff1[];
double PowDiff2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(5);
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,Correlation);
   SetIndexBuffer(1,DiffBuffer1);
   SetIndexBuffer(2,DiffBuffer2);
   SetIndexBuffer(3,PowDiff1);
   SetIndexBuffer(4,PowDiff2);
//----
   string short_name="Correlation("+Symbol1+","+Symbol2+","+cPeriod+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
   
   SetIndexDrawBegin(0,2*cPeriod);
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int shift,limit,counted_bars=IndicatorCounted();
   
   if ( counted_bars < 0 ) return(-1);
   if ( counted_bars ==0 ) limit=Bars-cPeriod-1;
   if ( counted_bars < 1 ) 
   for(int i=1;i<2*cPeriod;i++) Correlation[Bars-i]=0;    
      
   if(counted_bars>0) limit=Bars-counted_bars;
   limit--;
   
   for( shift=limit; shift>=0; shift--)
   {
//----
   DiffBuffer1[shift]=iClose(Symbol1,0,shift)-iMA(Symbol1,0,cPeriod,0,MODE_SMA,PRICE_CLOSE,shift);
   DiffBuffer2[shift]=iClose(Symbol2,0,shift)-iMA(Symbol2,0,cPeriod,0,MODE_SMA,PRICE_CLOSE,shift);
   PowDiff1[shift]=MathPow(DiffBuffer1[shift],2);
   PowDiff2[shift]=MathPow(DiffBuffer2[shift],2);
   
      double u=0,l=0,s=0;
      
      for( i = cPeriod-1 ;i >= 0 ;i--)
      {
      u += DiffBuffer1[shift+i]*DiffBuffer2[shift+i];
      l += PowDiff1[shift+i];
      s += PowDiff2[shift+i];
      }
      
   if(l*s >0) Correlation[shift]=u/MathSqrt(l*s);
   
  }
  
//----
   return(0);
  }
//+------------------------------------------------------------------+

0

#9 L'utilisateur est hors-ligne   Condor the Quant trader 

  • Senior Member
  • PipPipPip
  • Groupe : Membre Actif
  • Messages : 133
  • Inscrit(e) : 06-novembre 11
  • Gender:Male
  • Broker:GoMarkets, Oanda
  • Demo/Real:Real
  • Leverage:1:10

Posté 06 février 2012 - 22:24

1) Mon Calcul était faux pour la variance
2) Pour les scripts existants, s'ils avaient été dans les répertoires mt_yahoo ou indicators je les aurais trouvé
0

#10 L'utilisateur est hors-ligne   betino83 

  • Senior Member
  • PipPipPip
  • Groupe : Membre+
  • Messages : 646
  • Inscrit(e) : 14-septembre 05
  • Gender:Male
  • Broker:oanda, Activtrades
  • Demo/Real:Real
  • Leverage:1:5

Posté 09 février 2012 - 13:10

fais gaffe quand même à un modèle aussi simpliste, fais une recherche sur "spurious regression" tu comprendras et sur les modèles de cointégration + fiables.
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

Plan du site