Application de la méthode des coordonnées propres à l'analyse structurelle de distributions statistiques non extensives
Contenu
- Introduction
- 1. Q-gaussiennes en économétrie
- 2. Eigen-Coordinates
- 3. Distributions de probabilité non extensives
- 4. Si ça ressemble à un chat... ce n'est peut-être pas un chat
- Conclusion
- Références
- Annexe. Analyse des rendements quotidiens du SP500 avec Q-Gaussian
Introduction
En 1988, Constantino Tsallis a proposé la généralisation de la mécanique statistique de Boltzmann-Gibbs-Shannon [1] où il a présenté une notion de entropie non extensive.
Une conséquence importante de la généralisation de l'entropie semble être l'existence de nouveaux types de distribution [2] jouant le rôle clé dans la nouvelle mécanique statistique (Q-Exponentielle et Q-Gaussienne) :
Il a été constaté que ces types de distribution peuvent être utilisés pour décrire de nombreuses données expérimentales dans des systèmes à mémoire à longue portée, des systèmes avec des forces de longue portée et des systèmes fortement corrélés.
L'entropie est étroitement liée à l'information [7]. La généralisation de la mécanique statistique basée sur la théorie de l'information a été présentée dans [8-9]. Une nouvelle mécanique statistique non extensive s'est avérée très utile pour l'économétrie [10-17]. Par exemple, la Q-Gaussian distribution décrit bien les larges ailes (queues) des distributions d'incréments de cotations d'instruments financiers (q~1,5). Cela dit, la plupart des distributions d'incréments de séries chronologiques financières se transforment en distributions normales (q=1) à plus grande échelle (mois, années) [10].
On s'attendait naturellement à ce qu'une telle généralisation de la mécanique statistique aboutisse à un analogue du théorème central limite pour les distributions q-gaussiennes. Mais cela s'est avéré faux dans [18] - la distribution limite de la somme des variables aléatoires fortement corrélées est analytiquement différente des q-gaussiennes.
Cependant, un problème d'un autre genre est apparu : il s'est avéré que les valeurs numériques de la solution exacte trouvée étaient très proches du Q-Gaussien (« numériquement similaire, analytiquement différent »). Pour analyser les différences entre les fonctions et obtenir les meilleurs paramètres de la distribution Q-gaussienne, une expansion en série a été utilisée dans [18]. Les relations de ces fonctions ont conduit à une expansion en puissance du paramètre q caractérisant le degré de non-extensivité du système.
Le problème majeur des statistiques appliquées est le problème de l'acceptation des hypothèses statistiques. Il a longtemps été considéré comme impossible à résoudre [19-20] nécessitant un outil spécial (quelque chose comme un microscope électronique) qui permettrait de voir plus que ce qui est possible en utilisant les méthodes de la statistique appliquée moderne.
La méthode des coordonnées propres introduite dans [21] nous permet d'atteindre un niveau plus profond - l'analyse des propriétés structurelles des relations fonctionnelles. Cette méthode très fine peut être utilisée pour résoudre une variété de problèmes. Les développements d'opérateurs de fonctions correspondant aux distributions non extensives ci-dessus ont été démontrés dans [22].
Cet article traitera de la méthode des coordonnées propres et d'exemples de son utilisation pratique. Il contient de nombreuses formules qui sont d'une grande importance pour comprendre l'essence de la méthode. Après avoir répété tous les calculs, vous serez en mesure de tracer vous-même les développements de fonctions pour les fonctions qui vous intéressent.
1. Les Q-Gaussiens en économétrie
La distribution Q-Gaussienne joue un rôle très important en économétrie [4,10-17].
Pour avoir une idée générale du niveau actuel de la recherche, on peut se référer aux travaux du Dr. Claudio Antonini « q-gaussiennes en finance » [23] et « L'utilisation de la distribution q-gaussienne en finance » [24].
Présentons brièvement les principaux résultats.
Fig. 1. Méthodologie scientifique (diapositive 4 « L'utilisation de la distribution q-gaussienne en finance »)
Les principales particularités des séries chronologiques financières sont présentées à la figure 2 :
Fig. 2. Propriétés des séries chronologiques financières (diapositive 3 « L'utilisation de la distribution q-gaussienne en finance »)
De nombreux modèles théoriques utilisés pour décrire les séries chronologiques financières conduisent à la distribution Q-Gaussienne :
Fig. 3. Modèles théoriques et Q-Gaussien (diapositive 27 « L'utilisation de la distribution q-gaussienne en finance »)
La distribution Q-gaussienne est également utilisée pour la description phénoménologique des distributions de cotations :
Fig. 4. Exemple d'analyse des rendements quotidiens du S&P 500 (diapositive 8 « L'utilisation de la distribution q-gaussienne en finance »)
Travailler avec des données réelles pose un problème d'identification des fonctions :
Fig. 5. Le problème de l'identification des fonctions de distribution (diapositive 14 « q-gaussiennes en finance »)
Les deux articles du Dr. Claudio Antonini souligne l'importance d'une identification correcte des fonctions pour construire des modèles adéquats de processus physiques :
Fig. 6. Conclusions tirées dans « q-Gaussiens en finance » et « L'utilisation de la distribution q-gaussienne en finance » (Dr. Claudio Antonini, 2010, 2011)
- Dynamique q-gaussienne des prix des actions, (Michael English, 2008)
- Options européennes q-gaussiennes (Michael English, 2008)
- Déviations et distributions aléatoires q-gaussiennes, (Michael English, 2008)
- Portefeuilles q-gaussiens (Michael English, 2008)
- Mesures de risque q-gaussiennes (Michael English, 2008)
- Valeur attendue et valeur à risque pour l'actif Lognormal (Michael English, 2008)
2. Coordonnées propres
Le développement des coordonnées propres est le suivant :
où C1…CN sont des constantes et X1(t),..,XN(t) sont les « coordonnées propres ».
De telles expansions linéaires sont très pratiques et souvent utilisées dans l'analyse de données. Par exemple, une fonction exponentielle sur une échelle logarithmique se transforme en une ligne droite (sa pente peut facilement être calculée à l'aide de la régression linéaire). Il n'est donc pas nécessaire de procéder à une optimisation non linéaire (ajustement) pour déterminer les paramètres de la fonction.
L'échelle logarithmique ne sera cependant pas d'une grande aide dans le cas de fonctions plus complexes (par exemple la somme de deux exposants) - la fonction n'apparaîtra pas comme une ligne droite. Et une optimisation non linéaire sera nécessaire pour déterminer les coefficients de la fonction.
Il existe des cas où les données expérimentales peuvent être tout aussi bien expliquées à l'aide de plusieurs fonctions, qui correspondent toutes à différents modèles de processus physiques. Quelle fonction choisir ? Laquelle fournira une image plus adéquate de la réalité en dehors des données expérimentales ?
L'identification correcte des fonctions est vitale pour l'analyse des systèmes complexes (par exemple, les séries chronologiques financières) - chaque distribution correspond à un certain processus physique et nous serons en mesure de mieux comprendre la dynamique et les propriétés générales des systèmes complexes en ayant choisi un modèle adéquat.
Selon la statistique appliquée [19, 20], il n'existe pas de critère permettant de rejeter une hypothèse statistique erronée. La méthode des coordonnées propres jette une toute nouvelle lumière sur ce problème (acceptation de l'hypothèse).
La fonction utilisée pour la description des données expérimentales peut être considérée comme une solution à une certaine équation différentielle. Sa forme détermine la structure de l'expansion des coordonnées propres.
Une caractéristique particulière de l'expansion des coordonnées propres est que toutes les données générées par la fonction Y(t) ont une structure linéaire dans la base des coordonnées propres X1(t)..XN(t) de la fonction Y(t). Les données générées par toute autre fonction F(t) n'apparaîtront plus dans cette base comme une ligne droite (elles apparaîtront linéaires dans la base des coordonnées propres de la fonction F(t)).
Ce fait permet d'identifier avec précision les fonctions, facilitant ainsi grandement le travail avec des hypothèses statistiques.
2.1. La méthode des coordonnées propres
Le concept de cette méthode consiste à construire les coordonnées propres Xk(t) sous la forme d'opérateurs basés sur la fonction Y(t).
Cela peut se faire à l'aide d'une analyse mathématique dans laquelle les coordonnées propres Xk(t) prennent la forme de convolutions intégrales et l'expansion est déterminée par la structure de l'équation différentielle qui est satisfaite par la fonction Y(t). En outre, un problème de détermination des coefficients C1.. CN apparaît.
Dans l'expansion de base orthogonale (par exemple lors de la détermination des coefficients de transformée de Fourier), les coefficients d'expansion sont calculés en projetant le vecteur sur la base et le résultat souhaité est obtenu grâce à l'orthogonalité des fonctions de base.
Cela ne convient pas dans notre cas car il n'y a aucune information sur l'orthogonalité de X1(t)… XN(t).
2.2. Calcul des coefficients d'expansion par la méthode des moindres carrés
Les coefficients Ck peuvent être calculés par la méthode des moindres carrés. Ce problème se réduit à la résolution d'un système d'équations linéaires.
Supposons que :
Pour pratiquement chaque mesure de il y a une erreur :
Minimiser la somme des écarts au carré :
En introduisant la notation : , on peut l'écrire comme suit :
Ainsi, nous obtenons un système d'équations linéaires dans C1...CN (k=1..N):
La matrice de « corrélation » est symétrique : .
Dans certains cas, l'expansion des coordonnées propres peut sembler plus pratique sous forme intégrale :
Elle permet de réduire l'impact des erreurs (dues au calcul de la moyenne) mais nécessite des calculs supplémentaires.
2.3. Un exemple d'extension de la fonction R(x)
Examinons l'expansion des coordonnées propres de la fonction suivante :
Cette fonction génère plusieurs distributions statistiques [21] :
- - la distribution normale (gaussienne) ;
- - la distribution de Poisson ;
- - la distribution gamma ;
- - la distribution ;
- - La distribution de Schtauffer qui inclut la distribution de Weibull comme cas particulier .
De plus, elle est également bien adaptée à la description des processus de relaxation :
- - la fonction exponentielle ordinaire ;
- - la fonction exponentielle étirée ;
- - la fonction de relaxation de la puissance.
Ayant différentié R(x) par rapport à x, nous avons :
Multipliez les deux côtés par x :
Transformer :
Substituer dans l'équation :
On obtient l'équation différentielle pour la fonction R(x) :
Intégrer les deux côtés par rapport à x sur l'intervalle [xm,x] :
Intégrez le côté gauche de l'équation par parties :
En conséquence, nous avons :
où :
En calculant les coefficients , nous pouvons déterminer les paramètres de la fonction . Le quatrième paramètre peut être dérivé de la formule pour R(x).
2.4. Mise en œuvre
Le calcul des coefficients d'expansion nécessite de résoudre le système d'équations linéaires. Pour faciliter le travail avec les matrices, elle peut être organisée comme une classe séparée CMatrix (le fichier CMatrix.mqh). En utilisant les méthodes de cette classe, vous pouvez définir des paramètres de matrice, des valeurs d'élément de matrice et résoudre le système d'équations linéaires en utilisant la méthode gaussienne.
//+------------------------------------------------------------------+ //| CMatrix class | //+------------------------------------------------------------------+ class CMatrix { double m_matrix[]; int m_rows; int m_columns; public: void SetSize(int nrows,int ncolumns); double Get(int i,int j); void Set(int i,int j,double val); void GaussSolve(double &v[]); void Test(); };
Donnons un exemple du script (EC_Example1.mq5) qui calcule les coordonnées propres et les paramètres de la fonction R(x).
//+------------------------------------------------------------------+ //| EC_Example1.mq5 | //| Copyright 2012, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2012, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #include <CMatrix.mqh> //+------------------------------------------------------------------+ //| CECCalculator | //+------------------------------------------------------------------+ class CECCalculator { protected: int m_size; //--- x[i] double m_x[]; //--- y[i] double m_y[]; //--- matrix CMatrix m_matrix; //--- Y[i] double m_ec_y[]; //--- eigen-coordinates X1[i],X2[i],X3[i] double m_ec_x1[]; double m_ec_x2[]; double m_ec_x3[]; //--- coefficients C1,C2,C3 double m_ec_coefs[]; //--- function f1=Y-C2*X2-C3*X3 double m_f1[]; //--- function f2=Y-C1*X1-C3*X3 double m_f2[]; //--- function f3=Y-C1*X1-C2*X2 double m_f3[]; private: //--- function for data generation double R(double x,double a,double mu,double gamma,double nu); //--- calculation of the integral double Integrate(double &x[],double &y[],int ind); //--- calculation of the function Y(x) void CalcY(double &y[]); //--- calculation of the function X1(x) void CalcX1(double &x1[]); //--- calculation of the function X2(x) void CalcX2(double &x2[]); //--- calculation of the function X3(x) void CalcX3(double &x3[]); //--- calculation of the correlator double Correlator(int ind1,int ind2); public: //--- method for generating the test function data set x[i],y[i] void GenerateData(int size,double x1,double x2,double a,double mu,double gamma,double nu); //--- loading data from the file bool LoadData(string filename); //--- saving data into the file bool SaveData(string filename); //--- saving the calculation results void SaveResults(string filename); //--- calculation of the eigen-coordinates void CalcEigenCoordinates(); //--- calculation of the linear expansion coefficients void CalcEigenCoefficients(); //--- calculation of the function parameters void CalculateParameters(); //--- calculation of the functions f1,f2,f3 void CalculatePlotFunctions(); }; //+------------------------------------------------------------------+ //| Function R(x) | //+------------------------------------------------------------------+ double CECCalculator::R(double x,double a,double mu,double gamma,double nu) { return(a*MathExp(mu*MathLog(MathAbs(x)))*MathExp(-gamma*MathExp(nu*MathLog(MathAbs(x))))); } //+-----------------------------------------------------------------------+ //| Method for generating the data set x[i],y[i] of the test function R(x)| //+-----------------------------------------------------------------------+ void CECCalculator::GenerateData(int size,double x1,double x2,double a,double mu,double gamma,double nu) { if(size<=0) return; if(x1>=x2) return; m_size=size; ArrayResize(m_x,m_size); ArrayResize(m_y,m_size); double delta=(x2-x1)/(m_size-1); //--- for(int i=0; i<m_size; i++) { m_x[i]=x1+i*delta; m_y[i]=R(m_x[i],a,mu,gamma,nu); } }; //+------------------------------------------------------------------+ //| Method for loading data from the .CSV file | //+------------------------------------------------------------------+ bool CECCalculator::LoadData(string filename) { int filehandle=FileOpen(filename,FILE_CSV|FILE_READ|FILE_ANSI,'\r'); if(filehandle==INVALID_HANDLE) { Alert("Error in open of file ",filename,", error",GetLastError()); return(false); } m_size=0; while(!FileIsEnding(filehandle)) { string str=FileReadString(filehandle); if(str!="") { string astr[]; StringSplit(str,';',astr); if(ArraySize(astr)==2) { ArrayResize(m_x,m_size+1); ArrayResize(m_y,m_size+1); m_x[m_size]=StringToDouble(astr[0]); m_y[m_size]=StringToDouble(astr[1]); m_size++; } else { m_size=0; return(false); } } } FileClose(filehandle); return(true); } //+------------------------------------------------------------------+ //| Method for saving data into the .CSV file | //+------------------------------------------------------------------+ bool CECCalculator::SaveData(string filename) { if(m_size==0) return(false); if(ArraySize(m_x)!=ArraySize(m_y)) return(false); if(ArraySize(m_x)==0) return(false); int filehandle=FileOpen(filename,FILE_WRITE|FILE_CSV|FILE_ANSI,'\r'); if(filehandle==INVALID_HANDLE) { Alert("Error in open of file ",filename,", error",GetLastError()); return(false); } for(int i=0; i<ArraySize(m_x); i++) { string s=DoubleToString(m_x[i],8)+";"; s+=DoubleToString(m_y[i],8)+";"; s+="\r"; FileWriteString(filehandle,s); } FileClose(filehandle); return(true); } //+------------------------------------------------------------------+ //| Method for the calculation of the integral | //+------------------------------------------------------------------+ double CECCalculator::Integrate(double &x[],double &y[],int ind) { double sum=0; for(int i=0; i<ind-1; i++) sum+=(x[i+1]-x[i])*(y[i+1]+y[i])*0.5; return(sum); } //+------------------------------------------------------------------+ //| Method for the calculation of the function Y(x) | //+------------------------------------------------------------------+ void CECCalculator::CalcY(double &y[]) { if(m_size==0) return; ArrayResize(y,m_size); for(int i=0; i<m_size; i++) y[i]=m_x[i]*m_y[i]-m_x[0]*m_y[0]; }; //+------------------------------------------------------------------+ //| Method for the calculation of the function X1(x) | //+------------------------------------------------------------------+ void CECCalculator::CalcX1(double &x1[]) { if(m_size==0) return; ArrayResize(x1,m_size); for(int i=0; i<m_size; i++) x1[i]=Integrate(m_x,m_y,i); } //+------------------------------------------------------------------+ //| Method for the calculation of the function X2(x) | //+------------------------------------------------------------------+ void CECCalculator::CalcX2(double &x2[]) { if(m_size==0) return; double tmp[]; ArrayResize(tmp,m_size); for(int i=0; i<m_size; i++) tmp[i]=m_y[i]*MathLog(MathAbs(m_y[i])); ArrayResize(x2,m_size); for(int i=0; i<m_size; i++) x2[i]=Integrate(m_x,tmp,i); } //+------------------------------------------------------------------+ //| Method for the calculation of the function X3(x) | //+------------------------------------------------------------------+ void CECCalculator::CalcX3(double &x3[]) { if(m_size==0) return; double tmp[]; ArrayResize(tmp,m_size); for(int i=0; i<m_size; i++) tmp[i]=m_y[i]*MathLog(MathAbs(m_x[i])); ArrayResize(x3,m_size); for(int i=0; i<m_size; i++) x3[i]=Integrate(m_x,tmp,i); } //+------------------------------------------------------------------+ //| Method for the calculation of the eigen-coordinates | //+------------------------------------------------------------------+ void CECCalculator::CalcEigenCoordinates() { CalcY(m_ec_y); CalcX1(m_ec_x1); CalcX2(m_ec_x2); CalcX3(m_ec_x3); } //+------------------------------------------------------------------+ //| Method for the calculation of the correlator | //+------------------------------------------------------------------+ double CECCalculator::Correlator(int ind1,int ind2) { if(m_size==0) return(0); if(ind1<=0 || ind1>4) return(0); if(ind2<=0 || ind2>4) return(0); //--- double arr1[]; double arr2[]; ArrayResize(arr1,m_size); ArrayResize(arr2,m_size); //--- switch(ind1) { case 1: ArrayCopy(arr1,m_ec_x1,0,0,WHOLE_ARRAY); break; case 2: ArrayCopy(arr1,m_ec_x2,0,0,WHOLE_ARRAY); break; case 3: ArrayCopy(arr1,m_ec_x3,0,0,WHOLE_ARRAY); break; case 4: ArrayCopy(arr1,m_ec_y,0,0,WHOLE_ARRAY); break; } switch(ind2) { case 1: ArrayCopy(arr2,m_ec_x1,0,0,WHOLE_ARRAY); break; case 2: ArrayCopy(arr2,m_ec_x2,0,0,WHOLE_ARRAY); break; case 3: ArrayCopy(arr2,m_ec_x3,0,0,WHOLE_ARRAY); break; case 4: ArrayCopy(arr2,m_ec_y,0,0,WHOLE_ARRAY); break; } //--- double sum=0; for(int i=0; i<m_size; i++) { sum+=arr1[i]*arr2[i]; } sum=sum/m_size; return(sum); }; //+------------------------------------------------------------------+ //| Method for the calculation of the linear expansion coefficients | //+------------------------------------------------------------------+ void CECCalculator::CalcEigenCoefficients() { //--- setting the matrix size 3x4 m_matrix.SetSize(3,4); //--- calculation of the correlation matrix for(int i=3; i>=1; i--) { string s=""; for(int j=1; j<=4; j++) { double corr=Correlator(i,j); m_matrix.Set(i,j,corr); s=s+" "+DoubleToString(m_matrix.Get(i,j)); } Print(i," ",s); } //--- solving the system of the linear equations m_matrix.GaussSolve(m_ec_coefs); //--- displaying the solution - the obtained coefficients C1,..CN for(int i=ArraySize(m_ec_coefs)-1; i>=0; i--) Print("C",i+1,"=",m_ec_coefs[i]); }; //+--------------------------------------------------------------------+ //| Method for the calculation of the function parameters a,mu,nu,gamma| //+--------------------------------------------------------------------+ void CECCalculator::CalculateParameters() { if(ArraySize(m_ec_coefs)==0) {Print("Coefficients are not calculated!"); return;} //--- calculate a double a=MathExp((1-m_ec_coefs[0])/m_ec_coefs[1]-m_ec_coefs[2]/(m_ec_coefs[1]*m_ec_coefs[1])); //--- calculate mu double mu=-m_ec_coefs[2]/m_ec_coefs[1]; //--- calculate nu double nu=m_ec_coefs[1]; //--- calculate gamma double arr1[],arr2[]; ArrayResize(arr1,m_size); ArrayResize(arr2,m_size); double corr1=0; double corr2=0; for(int i=0; i<m_size; i++) { arr1[i]=MathPow(m_x[i],nu); arr2[i]=MathLog(MathAbs(m_y[i]))-MathLog(a)-mu*MathLog(m_x[i]); corr1+=arr1[i]*arr2[i]; corr2+=arr1[i]*arr1[i]; } double gamma=-corr1/corr2; //--- Print("a=",a); Print("mu=",mu); Print("nu=",nu); Print("gamma=",gamma); }; //+------------------------------------------------------------------+ //| Method for the calculation of the functions | //| f1=Y-C2*X2-C3*X3 | //| f2=Y-C1*X1-C3*X3 | //| f3=Y-C1*X1-C2*X2 | //+------------------------------------------------------------------+ void CECCalculator::CalculatePlotFunctions() { if(ArraySize(m_ec_coefs)==0) {Print("Coefficients are not calculated!"); return;} //--- ArrayResize(m_f1,m_size); ArrayResize(m_f2,m_size); ArrayResize(m_f3,m_size); //--- for(int i=0; i<m_size; i++) { //--- plot function f1=Y-C2*X2-C3*X3 m_f1[i]=m_ec_y[i]-m_ec_coefs[1]*m_ec_x2[i]-m_ec_coefs[2]*m_ec_x3[i]; //--- plot function f2=Y-C1*X1-C3*X3 m_f2[i]=m_ec_y[i]-m_ec_coefs[0]*m_ec_x1[i]-m_ec_coefs[2]*m_ec_x3[i]; //--- plot function f3=Y-C1*X1-C2*X2 m_f3[i]=m_ec_y[i]-m_ec_coefs[0]*m_ec_x1[i]-m_ec_coefs[1]*m_ec_x2[i]; } } //+------------------------------------------------------------------+ //| Method for saving the calculation results | //+------------------------------------------------------------------+ void CECCalculator::SaveResults(string filename) { if(m_size==0) return; int filehandle=FileOpen(filename,FILE_WRITE|FILE_CSV|FILE_ANSI); if(filehandle==INVALID_HANDLE) { Alert("Error in open of file ",filename," for writing, error",GetLastError()); return; } for(int i=0; i<m_size; i++) { string s=DoubleToString(m_x[i],8)+";"; s+=DoubleToString(m_y[i],8)+";"; s+=DoubleToString(m_ec_y[i],8)+";"; s+=DoubleToString(m_ec_x1[i],8)+";"; s+=DoubleToString(m_f1[i],8)+";"; s+=DoubleToString(m_ec_x2[i],8)+";"; s+=DoubleToString(m_f2[i],8)+";"; s+=DoubleToString(m_ec_x3[i],8)+";"; s+=DoubleToString(m_f3[i],8)+";"; s+="\r"; FileWriteString(filehandle,s); } FileClose(filehandle); } //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { CECCalculator ec; //--- model function data preparation ec.GenerateData(100,0.25,15.25,1.55,1.05,0.15,1.3); //--- saving into the file ec.SaveData("ex1.csv"); //--- calculation of the eigen-coordinates ec.CalcEigenCoordinates(); //--- calculation of the coefficients ec.CalcEigenCoefficients(); //--- calculation of the parameters ec.CalculateParameters(); //--- calculation of the functions f1,f2,f3 ec.CalculatePlotFunctions(); //--- saving the results into the file ec.SaveResults("ex1-results.csv"); }
2.5. Résultats du calcul de la fonction modèle R(x)
Nous allons générer 100 valeurs de la fonction R(x) sur l'intervalle [0,25 ;15,25] comme données du modèle.
Fig. 7. Fonction du modèle utilisée pour les calculs
Ces données permettent de tracer la fonction Y(x) et son développement dans les fonctions X1(x), X2(x) and X3(x).
La figure 8 montre la fonction Y(x) et ses « coordonnées propres » X1(x), X2(x) and X3(x).
Fig. 8. Forme générale de la fonction Y(x) et des coordonnées propres X1(x), X2(x) et X3(x)
Notez le caractère lisse de ces fonctions résultant de la nature intégrale des opérateurs X1(x), X2(x) and X3(x).
Après le calcul des fonctions Y(x), X1(x), X2(x) and X3(x), la matrice de corrélation est construite, puis les équations des coefficients C1, C2 and C3 sont résolues et les paramètres de la fonction R(x) sont calculés sur la base des valeurs obtenues :
2012.06.21 14:20:28 ec_example1 (EURUSD,H1) gamma=0.2769402213886906 2012.06.21 14:20:28 ec_example1 (EURUSD,H1) nu=1.126643424450548 2012.06.21 14:20:28 ec_example1 (EURUSD,H1) mu=1.328595266178149 2012.06.21 14:20:28 ec_example1 (EURUSD,H1) a=1.637687667818532 2012.06.21 14:20:28 ec_example1 (EURUSD,H1) C1=1.772838639779728 2012.06.21 14:20:28 ec_example1 (EURUSD,H1) C2=1.126643424450548 2012.06.21 14:20:28 ec_example1 (EURUSD,H1) C3=-1.496853120395737 2012.06.21 14:20:28 ec_example1 (EURUSD,H1) 1 221.03637620 148.53278281 305.48547011 101.93843241 2012.06.21 14:20:28 ec_example1 (EURUSD,H1) 2 148.53278281 101.63995012 202.85142688 74.19784681 2012.06.21 14:20:28 ec_example1 (EURUSD,H1) 3 305.48547011 202.85142688 429.09345292 127.82779760
Nous allons maintenant vérifier la linéarité de l'expansion calculée. Pour ce faire, nous devons calculer 3 fonctions :
dont chacune est projetée sur sa base des coordonnées propres X1(x), X2(x) and X3(x):
Fig. 9. Représentation de la fonction Y1(x) dans la base X1(x)
Fig. 10. Représentation de la fonction Y2(x) dans la base X2(x)
Fig. 11. Représentation de la fonction Y3(x) dans la base X3(x)
La dépendance linéaire des fonctions tracées suggère que la série de données de la figure 7 correspond strictement à la fonction R(x).
Toute autre fonction (même de forme similaire) représentée dans les coordonnées propres R(x) n'aura plus une forme linéaire. Ce fait nous permet d'identifier des fonctions.
La précision du calcul des valeurs numériques des paramètres de la fonction du modèle peut être améliorée, si le nombre de points est augmenté à 10000 (tout en gardant le même intervalle) :
2012.06.21 14:22:18 ec_example1 (EURUSD,H1) gamma=0.1508739336762316 2012.06.21 14:22:18 ec_example1 (EURUSD,H1) nu=1.298316173744703 2012.06.21 14:22:18 ec_example1 (EURUSD,H1) mu=1.052364487161627 2012.06.21 14:22:18 ec_example1 (EURUSD,H1) a=1.550281229466634 2012.06.21 14:22:18 ec_example1 (EURUSD,H1) C1=1.483135479113404 2012.06.21 14:22:18 ec_example1 (EURUSD,H1) C2=1.298316173744703 2012.06.21 14:22:18 ec_example1 (EURUSD,H1) C3=-1.36630183435649 2012.06.21 14:22:18 ec_example1 (EURUSD,H1) 1 225.47846911 151.22066473 311.86134419 104.65062550 2012.06.21 14:22:18 ec_example1 (EURUSD,H1) 2 151.22066473 103.30005101 206.66297964 76.03285182 2012.06.21 14:22:18 ec_example1 (EURUSD,H1) 3 311.86134419 206.66297964 438.35625824 131.91955339
Dans ce cas, les paramètres de la fonction ont été calculés avec plus de précision.
2.6. Effet de bruit
Les données expérimentales réelles contiennent toujours du bruit.
Dans la méthode GenerateData() de la classe ECCCalculator, on remplace :
m_y[i]=R(m_x[i],a,mu,gamma,nu);
avec
m_y[i]=R(m_x[i],a,mu,gamma,nu)+0.25*MathRand()/32767.0;
l'ajout d'un bruit aléatoire, soit environ 10 % de la valeur maximale de la fonction.
Le résultat du script EC_Example1-noise.mq5 est le suivant :
2012.06.21 14:24:30 EC_Example1-noise (EURUSD,H1) gamma=0.4013079343855266 2012.06.21 14:24:30 EC_Example1-noise (EURUSD,H1) nu=0.9915044018913447 2012.06.21 14:24:30 EC_Example1-noise (EURUSD,H1) mu=1.403541951457922 2012.06.21 14:24:30 EC_Example1-noise (EURUSD,H1) a=2.017238416806171 2012.06.21 14:24:30 EC_Example1-noise (EURUSD,H1) C1=1.707774107235756 2012.06.21 14:24:30 EC_Example1-noise (EURUSD,H1) C2=0.9915044018913447 2012.06.21 14:24:30 EC_Example1-noise (EURUSD,H1) C3=-1.391618023109698 2012.06.21 14:24:30 EC_Example1-noise (EURUSD,H1) 1 254.45082565 185.19087989 354.25574000 125.17343164 2012.06.21 14:24:30 EC_Example1-noise (EURUSD,H1) 2 185.19087989 136.81028987 254.92996885 97.14705491 2012.06.21 14:24:30 EC_Example1-noise (EURUSD,H1) 3 354.25574000 254.92996885 501.76021715 159.49440494
Le graphique de la fonction du modèle avec un bruit aléatoire est illustré à la Fig. 12.
Fig. 12. Fonction de modèle avec bruit utilisée pour les calculs
Fig. 13. Forme générale de la fonction Y(x) et des coordonnées propres X1(x), X2(x) et X3(x)
Les fonctions X1(x), X2(x) and X3(x) servant de « coordonnées propres » semblent toujours lisses, mais le Y(x) tracé car leur combinaison linéaire semble être différent (Fig. 13).
Fig. 14. Représentation de la fonction Y1(x) dans la base X1(x)
Fig. 15. Représentation de la fonction Y2(x) dans la base X2(x)
Fig. 16. Représentation de la fonction Y3(x) dans la base X3(x)
La représentation des fonctions Y1(x),Y2(x) and Y3(x) dans la base des coordonnées propres (Figures 8-10) a toujours une forme linéaire mais on peut noter des fluctuations autour de la ligne droite dues à la présence de bruit. Il est plus prononcé en ce qui concerne les grands X où le signal/bruit devient minimal.
Ici, les composantes du bruit se trouvent de part et d'autre de la ligne droite et, dans ce cas, il est donc pratique d'utiliser l'expansion intégrale des coordonnées propres (section 2.2).
3. Distributions de probabilité non extensives
La généralisation de la mécanique statistique aboutit aux distributions [2, 22] :
où , .
La distribution q-gaussienne est un cas particulier de la fonction P2(x).
3.1. L'expansion des coordonnées propres de la fonction P1(x)
Nous différencions P1(x):
L'équation différentielle qui en résulte est la suivante :
Intégrer sur l'intervalle [xm,x]:
Ainsi :
Le développement des coordonnées propres est le suivant :
où :
Les fonctions de calcul sont présentées ci-dessous (EC_Example2.mq5) :
//+------------------------------------------------------------------+ //| CalcY | //+------------------------------------------------------------------+ void CECCalculator::CalcY(double &y[]) { if(m_size==0) return; ArrayResize(y,m_size); //--- Y=P(x)-P(xm) for(int i=0; i<m_size; i++) y[i]=m_y[i]-m_y[0]; }; //+------------------------------------------------------------------+ //| CalcX1 | //+------------------------------------------------------------------+ void CECCalculator::CalcX1(double &x1[]) { if(m_size==0) return; ArrayResize(x1,m_size); //--- X1=x*P(x)-xm*P(xm) for(int i=0; i<m_size; i++) x1[i]=m_x[i]*m_y[i]-m_x[0]*m_y[0]; } //+------------------------------------------------------------------+ //| CalcX2 | //+------------------------------------------------------------------+ void CECCalculator::CalcX2(double &x2[]) { if(m_size==0) return; ArrayResize(x2,m_size); //--- X2=Integrate(P1(x)) for(int i=0; i<m_size; i++) x2[i]=Integrate(m_x,m_y,i); }
Cette fois, la taille de la matrice de corrélation est de 2x3 ; les valeurs des paramètres a et thêta de la fonction P1(x) sont déterminées en fonction des coefficients С1 et C2. La valeur numérique du paramètre B peut être obtenue à partir de l'exigence de normalisation.
Voici le résultat du calcul de la fonction modèle P1(x,1,0.5,2) sur l'intervalle x [0,10] ; le nombre de points utilisés est de 1000 :
2012.06.21 14:26:02 EC_Example2 (EURUSD,H1) theta=1.986651299600245 2012.06.21 14:26:02 EC_Example2 (EURUSD,H1) a=0.5056083906174813 2012.06.21 14:26:02 EC_Example2 (EURUSD,H1) C1=-0.5056083906174813 2012.06.21 14:26:02 EC_Example2 (EURUSD,H1) C2=-0.4988591756915261 2012.06.21 14:26:02 EC_Example2 (EURUSD,H1) 1 0.15420524 0.48808959 -0.32145543 2012.06.21 14:26:02 EC_Example2 (EURUSD,H1) 2 0.48808959 1.79668322 -1.14307410La fonction P1(x) et son expansion des coordonnées propres sont illustrées dans les figures 17-20.
Fig. 17. Fonction modèle P1(x, 1, 0,5, 2) utilisée pour les calculs, 1000 points
Fig. 18. Forme générale de la fonction Y(x) et des coordonnées propres X1(x) et X2(x)
Fig. 19. Représentation de la fonction Y1(x) dans la base X1(x)
20. Représentation de la fonction Y2(x) dans la base X2(x)
Observez attentivement la Fig. 19. Il y a une légère distorsion de la dépendance linéaire au tout début et dans le deuxième tiers du graphique.
Ceci est lié aux particularités de l'expansion calculée - X1(x) n'est pas de nature intégrale.
3.2. L'expansion des coordonnées propres de la fonction P2(x
L'équation différentielle :
Nous intégrons par rapport à x sur l'intervalle [xm,x] :
En intégrant par parties, on a :
Simplifier :
En suivant les manipulations algébriques, on obtient :
Ainsi, l'expansion résultante est la suivante :
où :
Les paramètres de la fonction peuvent être calculés à l'aide des formules ci-dessous :
Il convient de noter qu'il existe une relation supplémentaire entre les paramètres dans l'expansion résultante. Ce fait peut être utilisé pour vérifier l'exactitude de la fonction sélectionnée pour l'analyse. Ces relations sont toujours vraies pour les données correspondant strictement à la fonction P2(x).
La valeur numérique du paramètre B peut être obtenue à partir de l'exigence de normalisation.
Les fonctions de calcul des coordonnées propres sont les suivantes (EC_Example3.mq5) :
//+------------------------------------------------------------------+ //| CalcY | //+------------------------------------------------------------------+ void CECCalculator::CalcY(double &y[]) { if(m_size==0) return; ArrayResize(y,m_size); for(int i=0; i<m_size; i++) y[i]=m_y[i]-m_y[0]; }; //+------------------------------------------------------------------+ //| CalcX1 | //+------------------------------------------------------------------+ void CECCalculator::CalcX1(double &x1[]) { if(m_size==0) return; ArrayResize(x1,m_size); //--- X1=(x^2)*P2(x)+(xm)^2*P2(xm) for(int i=0; i<m_size; i++) x1[i]=(m_x[i]*m_x[i])*m_y[i]+(m_x[0]*m_x[0])*m_y[0]; } //+------------------------------------------------------------------+ //| CalcX2 | //+------------------------------------------------------------------+ void CECCalculator::CalcX2(double &x2[]) { if(m_size==0) return; ArrayResize(x2,m_size); //--- X2=(x)*P2(x)-(xm)*P2(xm) for(int i=0; i<m_size; i++) x2[i]=m_x[i]*m_y[i]-m_x[0]*m_y[0]; } //+------------------------------------------------------------------+ //| CalcX3 | //+------------------------------------------------------------------+ void CECCalculator::CalcX3(double &x3[]) { if(m_size==0) return; double tmp[]; ArrayResize(tmp,m_size); for(int i=0; i<m_size; i++) tmp[i]=m_x[i]*m_y[i]; //--- X3=Integrate(X*P2(x)) ArrayResize(x3,m_size); for(int i=0; i<m_size; i++) x3[i]=Integrate(m_x,tmp,i); } //+------------------------------------------------------------------+ //| CalcX4 | //+------------------------------------------------------------------+ void CECCalculator::CalcX4(double &x4[]) { if(m_size==0) return; //--- X4=Integrate(P2(x)) ArrayResize(x4,m_size); for(int i=0; i<m_size; i++) x4[i]=Integrate(m_x,m_y,i); }
Voici le résultat du calcul de la fonction modèle P2(x) (B=1, a=0.5, theta=2, x0=1) ; le nombre de points utilisés est de 1000 :
2012.06.21 14:27:47 EC_Example3 (EURUSD,H1) 2: theta=2.260782711057654 2012.06.21 14:27:47 EC_Example3 (EURUSD,H1) 1: theta=2.076195813531546 2012.06.21 14:27:47 EC_Example3 (EURUSD,H1) 2: a=0.4557937139014854 2012.06.21 14:27:47 EC_Example3 (EURUSD,H1) 1: a=0.4977821155774935 2012.06.21 14:27:47 EC_Example3 (EURUSD,H1) 2: x0=1.043759816231049 2012.06.21 14:27:47 EC_Example3 (EURUSD,H1) 1: x0=0.8909465007003451 2012.06.21 14:27:47 EC_Example3 (EURUSD,H1) C1=-0.3567992171618368 2012.06.21 14:27:47 EC_Example3 (EURUSD,H1) C2=0.6357780279659221 2012.06.21 14:27:47 EC_Example3 (EURUSD,H1) C3=-0.7679716475618039 2012.06.21 14:27:47 EC_Example3 (EURUSD,H1) C4=0.8015779457297644 2012.06.21 14:27:47 EC_Example3 (EURUSD,H1) 1 1.11765877 0.60684314 1.34789126 1.28971267 -0.01429928 2012.06.21 14:27:47 EC_Example3 (EURUSD,H1) 2 0.60684314 0.37995888 0.55974145 0.58899739 0.06731011 2012.06.21 14:27:47 EC_Example3 (EURUSD,H1) 3 1.34789126 0.55974145 3.00225771 2.54531927 -0.39043224 2012.06.21 14:27:47 EC_Example3 (EURUSD,H1) 4 1.28971267 0.58899739 2.54531927 2.20595917 -0.27218168La fonction P2(x) et son expansion des coordonnées propres sont illustrées aux Figures 21-26.
Fig. 21. Fonction de modèle P2(x,1,0,5,2,1) utilisée pour les calculs, 100 points
Fig. 22. Forme générale de la fonction Y(x) et des coordonnées propres X1(x), X2(x), X3(x) et X4(x)
Fig. 23. Représentation de la fonction Y1(x) dans la base X1(x)
Fig. 24. Représentation de la fonction Y2(x) dans la base X2(x)
Fig. 25. Représentation de la fonction Y3(x) dans la base X3(x)
Fig. 26. Représentation de la fonction Y4(x) dans la base X4(x)
4. Si ça ressemble à un chat... Ce n'est peut-être pas un chat
La famille des distributions q-gaussiennes est au cœur même de la mécanique statistique non extensive et il était donc naturel de s'attendre à ce qu'elle apparaisse dans le théorème central limite généralisé. Les considérations entropiques ont été le principal argument en sa faveur [26].
Cependant, l'article [18, presentation] a montré que les distributions, telles que la q-gaussienne, ne sont pas universelles, mettant ainsi en doute leur rôle particulier en tant que distributions limites.
Par exemple, la fonction (solution analytique à l'un des problèmes) :
peut être décrit très précisément en utilisant la distribution q-gaussienne.
Fig. 27. Un exemple tiré de l'article « Une note sur les q-gaussiens et les non-gaussiens en mécanique statistique »
Dans ce cas, des fonctions analytiquement différentes ont des valeurs numériques similaires et les différences sont donc à peine visibles à l'œil nu. Une méthode précise d'identification des fonctions est nécessaire. Ce problème peut être résolu de manière satisfaisante en utilisant la méthode des coordonnées propres.
Examinons un exemple d'expansion des coordonnées propres de la fonction P(U) et montrons ce qui la différencie exactement de la q-gaussienne. Les fonctions semblent très similaires à celles de l'œil (Fig. 27).
Nous générons un signal (100 valeurs de la fonction P(U)) et le « projetons » sur le système des coordonnées propres de la fonction P2(x) tracé dans la section 3.2.
Le script Hilhorst-Schehr-problem.mq5 calcule la fonction P(U) et construit des séries de données qui sont enregistrées dans le fichier MQL5\Files\test-data.csv. Ces données sont analysées par EC_Example3_Test.mq5.
Fig. 28. Fonction modèle P(U), 100 points
Fig. 29. Forme générale de la fonction Y(x) et des coordonnées propres X1(x), X2(x), X3(x) et X4(x)
Fig. 30. Représentation de la fonction Y1(x) dans la base X1(x)
Fig. 31. Représentation de la fonction Y2(x) dans la base X2(x)
Fig. 32. Représentation de la fonction Y3(x) dans la base X3(x)
Fig. 33. Représentation de la fonction Y4(x) dans la base X4(x)
Comme le suggèrent les Fig. 30-33, les fonctions P2(x) et P(U) sont très similaires en termes de coordonnées X1(x), X2(x) et X3(x) - on peut observer une bonne dépendance linéaire entre Xi(x) et Yi(x). Une différence significative peut être observée dans la composante X4(x) (Fig. 33).
L'absence de dépendance linéaire pour la composante X4(x) prouve que l'ensemble de données généré par P(U), bien qu'apparaissant similaire à la distribution q-gaussienne, n'est en fait pas la q-gaussienne.
On peut porter un regard différent sur les fonctions (figures 34-37) en traçant ensemble Xi(x) et Yi(x).
Fig. 34. Forme générale des fonctions X1(x) et Y1(x)
Fig. 35. Forme générale des fonctions X2(x) et Y2(x)
Fig. 36. Forme générale des fonctions X3(x) et Y3(x)
Fig. 37. Forme générale des fonctions X4(x) et Y4(x)
Comme le suggère la figure 37, la différence structurelle de la composante X4(x) est devenue apparente lorsque l'on projette les données générées par la fonction P(U) sur les coordonnées propres de la fonction P2(x). Ainsi, nous pouvons affirmer avec certitude que les données expérimentales ne correspondent pas à la fonction P2(x).
Le calcul présenté ci-dessous (EC_Example3_test) va dans ce sens :
2012.06.21 14:29:35 EC_Example3_test (EURUSD,H1) 2: theta=1.034054797050629 2012.06.21 14:29:35 EC_Example3_test (EURUSD,H1) 1: theta=-0.6736146397139184 2012.06.21 14:29:35 EC_Example3_test (EURUSD,H1) 2: a=199.3574440289263 2012.06.21 14:29:35 EC_Example3_test (EURUSD,H1) 1: a=-4.052181367572913 2012.06.21 14:29:35 EC_Example3_test (EURUSD,H1) 2: x0=-0.0003278538628371299 2012.06.21 14:29:35 EC_Example3_test (EURUSD,H1) 1: x0=0.0161122975924721 2012.06.21 14:29:35 EC_Example3_test (EURUSD,H1) C1=4.056448634458822 2012.06.21 14:29:35 EC_Example3_test (EURUSD,H1) C2=-0.1307174151339552 2012.06.21 14:29:35 EC_Example3_test (EURUSD,H1) C3=-13.57786363975563 2012.06.21 14:29:35 EC_Example3_test (EURUSD,H1) C4=-0.004451555043369697 2012.06.21 14:29:35 EC_Example3_test (EURUSD,H1) 1 0.00465975 0.00000000 -0.00218260 0.02762761 0.04841405 2012.06.21 14:29:35 EC_Example3_test (EURUSD,H1) 2 0.00000000 0.04841405 -0.00048835 0.06788438 0.00000001 2012.06.21 14:29:35 EC_Example3_test (EURUSD,H1) 3 -0.00218260 -0.00048835 0.00436149 -0.02811625 -0.06788437 2012.06.21 14:29:35 EC_Example3_test (EURUSD,H1) 4 0.02762761 0.06788438 -0.02811625 0.35379820 0.48337994
Cela a également altéré les relations entre les paramètres.
Conclusion
La méthode des coordonnées propres est un outil unique pour l'analyse des propriétés structurelles des relations fonctionnelles permettant de simplifier considérablement l'analyse et l'interprétation des données.
Le concept derrière cette méthode est d'utiliser des ensembles de données expérimentales {xi,yi} pour construire de nouvelles fonctions correspondant au modèle proposé. La forme des développements d'opérateurs est déterminée par la structure de l'équation différentielle qui est satisfaite par la fonction servant de « candida t» à la description des données. Si la fonction est native, les développements de la fonction calculés à partir des données {xi,yi}, prendront, dans la base des coordonnées propres, une forme linéaire. Les déviations de la linéarité dans la base des coordonnées propres de la « fonction candidate » suggèrent que les données {xi,yi} n'ont pas pu être générées par la fonction donnée et que le modèle construit n'est pas approprié.
Dans certains cas compliqués, la fonction candidate et la fonction native peuvent sembler similaires dans la mesure où une grande partie des expansions calculées s'avère être linéaire. Néanmoins, la méthode des coordonnées propres nous permet d'identifier la différence entre ces fonctions qui fait connaître sa présence par une linéarité altérée du développement - l'exemple de Hilhorst et Schehr a servi d'illustration de la différence qui devient apparente dans le dernier membre du développement lors de la projection sur X4(x).
Cette information peut également être utile lorsqu'on traite une équation différentielle (section 3.2) qui est satisfaite par la fonction P2(x - le membre en question correspond à la partie linéaire par rapport à P2(x). Elle peut ne pas être aussi intéressante dans le cas d'une description phénoménologique des données expérimentales (« nous cherchons une solution sous la forme de la q-Gaussienne »). Cependant, si le modèle est basé sur des équations différentielles (Fig. 3), le rôle de chacun des mécanismes pris en considération dans les modèles de processus physiques peut être mieux compris.
Références
- C. Tsallis, « de Généralisation possible de Boltzmann-Gibbs Statistiques », Journal of Physics statistique, Vol. 52, nos. 1/2, 1988.
- C. Tsallis, « Statistiques non extensives : Preuves et liens théoriques, expérimentaux et informatiques ». Journal brésilien de physique, (1999) vol. 29. p.1.
- C. Tsallis, « Quelques commentaires sur la mécanique statistique de Boltzmann-Gibbs » , Chaos, Solitons & Fractals Volume 6, 1995, pp. 539-559.
- Europhysics News « Numéro spécial : Mécanique statistique non extensive : Nouvelles tendances, nouvelles perspectives », Vol. 36 No. 6 (novembre-décembre 2005).
- M. Gell-Mann, C. Tsallis,« Entropie non étendue : Applications interdisciplinaires », Oxford University Press, 15.04.2004, 422 p.
- Constantino Tsallis, le site officiel Mécanique statistique et thermodynamique non extensive.
- Chumak, O.V. » Entropie et fractales dans l'analyse des données », М.-Izhevsk : RDC « Dynamique Régulière et Chaotique », Institut de Recherche Informatique, 2011. - 164 p.
- Qiuping A. Wang, « Statistiques incomplètes et généralisations non extensives de la mécanique statistique », Chaos, solitons et fractales, 12(2001)1431-1437.
- Qiuping A. Wang, « Généralisation extensive de la mécanique statistique basée sur la théorie de l'information incomplète », Entropy, 5(2003).
- Lisa Borland, « Mémoire à longue portée et non-extensivité sur les marchés financiers », Europhysics News 36, 228-231 (2005)
- T. S. Biró, R. Rosenfeld, « Origine microscopique des distributions non gaussiennes des rendements financiers », Physica A : Mécanique statistique et ses applications, vol. 387, n° 7 (1 mars 2008) , p. 1603-1612 (preprint).
- S. M. D. Queiros, C. Anteneodo, C. Tsallis, « Distributions de la loi du pouvoir en économie : Une approche statistique non extensive », Actes de la SPIE (2005) Volume : Editeur 5848, Editeur : 151-164, (preprint)
- R Hanel, S Thurner, « Dérivation des distributions puissance-loi dans le cadre de la mécanique statistique standard », Physica A : Mécanique statistique et ses applications (2005), Volume : 351, numéro : 2-4, Editeur : Elsevier, Pages : 260-268. (preprint)
- A K Rajagopal, Sumiyoshi Abe, « Fondements statistico-mécaniques des distributions de puissance- loi », Physica D : Phénomènes non linéaires (2003), Volume : 193, numéro : 1-4, Pages : 19 (preprint)
- T. Kaizoji, « Un modèle de marchés financiers à agents interactifs du point de vue de la mécanique statistique non extensive », Physica A : Mécanique statistique et ses applications, vol. 370, N. 1 (1er octobre 2006) , p. 109-113. (preprint)
- V. Gontis, J. Ruseckas, A. Kononovičius, « Un modèle stochastique de mémoire à long terme du rendement des marchés financiers », Physica A : Mécanique statistique et ses applications 389 (2010) 100-106. (preprint)
- H.E. Roman, M. Porto, « Queues de puissance auto-générées dans les distributions de probabilités », Physical Review E - Statistical, Nonlinear and Soft Matter Physics (2001), Volume: 63, numéro : 3 Pt 2, Pages : 036-128.
- H. J. Hilhorst, G. Schehr, « Note sur l'utilisation des q-gaussiens et des non-gaussiens en mécanique statistique » (2007, preprint, présentation).
- D. J. Hudson, « Lectures sur les statistiques et probabilités élémentaires », CERN-63-29, Geneva : CERN, 1963. - 101 p.
- D. J. Hudson, « Conférences sur les statistiques II : Théorie du maximum de vraisemblance et des moindres carrés », CERN-64-18. - Genève : CERN, 1964. - 115 p.
- R. R. Nigmatullin, « Coordonnées propres : Nouvelle méthode d'identification des fonctions analytiques dans les mesures expérimentales », Applied Magnetic Resonance Volume 14, Number 4 (1998), 601-633.
- R.R. Nigmatullin, « Reconnaissance de distributions statistiques non extensives par la méthode des coordonnées propres », Physica A : La mécanique statistique et ses applications Volume 285, numéros 3-4, 1er octobre 2000, pp. 547-565.
- C. Antonini « q-Gaussiens en finance » (2010).
- C. Antonini, « L'utilisation de la distribution q-gaussienne en finance » (2011).
- L. G. Moyano, C. Tsallis, M. Gell-Mann, « Indications numériques d'un théorème limite central généralisé de q », Europhysics Letters 73, 813-819, 2006, (preprint).
- T. Dauxois, « Distributions non gaussiennes sous surveillance », J. Stat. Méca. (2007) N08001. (preprint)
Annexe. Analyse des rendements quotidiens du SP500 à l'aide de la méthode Q-Gaussienne
Considérons l'exemple classique (Fig. 4) d'une approche q-gaussienne réussie des rendements quotidiens SP500 (fonction P2(x)).
Nous avons utilisé les données quotidiennes de : http://wikiposit.org/w?filter=Finance/Futures/Indices/S__and__P%20500/
Fig. 38. Cours de clôture du SP500 (quotidien)
Fig. 39. Rendements logarithmiques SP500
40. Distribution des rendements logarithmiques SP500
Fig. 41. La fonction Y1(x) dans la base X1(x)
Fig. 42. La fonction Y2(x) dans la base X2(x)
Fig. 43. La fonction Y3(x) dans la base X3(x)
Fig. 44. La fonction Y4(x) dans la base X4(x)
Pour voir comment effectuer l'analyse dans votre terminal, le fichier SP500-data.csv doit être placé dans le dossier \Files\.
Après cela, vous devez lancer deux scripts :
- CalcDistr_SP500.mq5 (il calcule la distribution).
- q-gaussian-SP500.mq5 (analyse des coordonnées propres)
2012.06.29 20:01:19 q-gaussian-SP500 (EURUSD,D1) 2: theta=1.770125768485269 2012.06.29 20:01:19 q-gaussian-SP500 (EURUSD,D1) 1: theta=1.864132228192338 2012.06.29 20:01:19 q-gaussian-SP500 (EURUSD,D1) 2: a=2798.166930885822 2012.06.29 20:01:19 q-gaussian-SP500 (EURUSD,D1) 1: a=8676.207867097581 2012.06.29 20:01:19 q-gaussian-SP500 (EURUSD,D1) 2: x0=0.04567518783335043 2012.06.29 20:01:19 q-gaussian-SP500 (EURUSD,D1) 1: x0=0.0512505923716428 2012.06.29 20:01:19 q-gaussian-SP500 (EURUSD,D1) C1=-364.7131366394939 2012.06.29 20:01:19 q-gaussian-SP500 (EURUSD,D1) C2=37.38352859698793 2012.06.29 20:01:19 q-gaussian-SP500 (EURUSD,D1) C3=-630.3207508306047 2012.06.29 20:01:19 q-gaussian-SP500 (EURUSD,D1) C4=28.79001868944634 2012.06.29 20:01:19 q-gaussian-SP500 (EURUSD,D1) 1 0.00177913 0.03169294 0.00089521 0.02099064 0.57597695 2012.06.29 20:01:19 q-gaussian-SP500 (EURUSD,D1) 2 0.03169294 0.59791579 0.01177430 0.28437712 11.55900584 2012.06.29 20:01:19 q-gaussian-SP500 (EURUSD,D1) 3 0.00089521 0.01177430 0.00193200 0.04269286 0.12501732 2012.06.29 20:01:19 q-gaussian-SP500 (EURUSD,D1) 4 0.02099064 0.28437712 0.04269286 0.94465120 3.26179090 2012.06.29 20:01:09 CalcDistr_SP500 (EURUSD,D1) checking distibution cnt=2632.0 n=2632 2012.06.29 20:01:09 CalcDistr_SP500 (EURUSD,D1) Min=-0.1229089015984444 Max=0.1690557338964631 range=0.2919646354949075 size=2632 2012.06.29 20:01:09 CalcDistr_SP500 (EURUSD,D1) Total data=2633
La valeur estimée de q, obtenue par la méthode des coordonnées propres (q=1+1/thêta) : q~1,55
La valeur, rapportée dans le livre (Fig. 4) q~1.4.
Conclusion : De manière générale, on peut voir que ces données peuvent être décrites par une fonction q-gaussienne. Il explique l'interprétation réussie à l'aide du q-gaussien, rapportée dans le livre.
Traduit du russe par MetaQuotes Ltd.
Article original : https://www.mql5.com/ru/articles/412
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation