L'apprentissage automatique dans la négociation : théorie, modèles, pratique et algo-trading - page 469

 

Voici le code pour trouver les paramètres arym, vous pouvez le trouver dans le post atacha au lien. J'ai corrigé un peu ce premier message, en remplaçant le premier exemple le plus raté par un exemple normal.

  arimaModel <- auto.arima(y = ts(DT$value[trainIndexes],frequency=48),
                           seasonal.test = "ocsb",
                           trace=TRUE,
                           stepwise = FALSE,
                           max.q = 48, 
                           max.order = 48+5
                         )

La fonction auto.arima recherche par elle-même les paramètres p d q P D Q appropriés
ts(DT$value[trainIndexes],frequency=48) # les données sont converties dans un format quelconque à partir du package de prévision, l'essentiel est de spécifier la fréquence, sinon la saisonnalité ne sera pas utilisée.
seasonal.test = "ocsb" # google dit que c'est mieux, je ne suis pas sûr
stepwise = FALSE #false permet une recherche plus complète. La valeur par défaut de true signifierait que la recherche est susceptible de rester bloquée au minimum local et de s'arrêter.
max.q =48 #valeur maximale de q dans la recherche. valeur par défaut == 5, pour cette donnée est faible
max.order = 48+5 # somme maximale p+q+P+Q. valeur par défaut == 5, pas suffisant pour ces données

La fonction prendra beaucoup de temps, mais devrait finalement retrouver les mêmes paramètres que ceux que j'ai utilisés, et peut-être même en trouver de meilleurs.

Je n'ai pas attendu que cette fonction trouve tout, j'ai juste choisi intuitivement les bons paramètres. Les données ont une tendance, donc p = 1 et P = 1. Et le graphique montre des périodes dominantes de 24 et 48, donc q = 24, et Q = 48 / fréquence = 1
Je ne pouvais plus insérer la période 336 dans arim, cela nécessite une deuxième saisonnalité, le paquet de prévisions ne sait pas comment faire cela.

Arima avec des paramètres déjà connus p d q P D Q est créé comme ceci :

Arima(y = ts(DT$value[trainIndexes],frequency=48), order = c(1, 0, 24), seasonal = c(1, 0, 1))

la saisonnalité n'est en fait pas (1,0,1), mais (1,0,48) parce que Q est en quelque sorte dominé par



SanSanych Fomenko:

Discuter de l'arima sans analyser le résidu sur l'ARCH est un exercice tout à fait vide. Il y a des séries qui ont un résidu stationnaire après modélisation par arima. Mais discuter de l'erreur de prédiction en partant du principe qu'elle est stationnaire n'est pas sérieux. Ce résidu est extrêmement facetté.

Oui, je suis d'accord, c'est juste que ces données sont très cycliques et simples, donc l'arima fonctionne sans problème. Si je colle eurusd m30 dans le même code, le modèle n'a pas de fortes variations de prix avec les nouvelles données.
 
Dr. Trader:

Voici le code pour trouver les paramètres arym, vous pouvez le trouver dans le post atacha au lien. J'ai corrigé un peu ce premier message, en remplaçant le premier exemple plus raté par un exemple normal.

la fonction auto.arima recherche elle-même les paramètres p d q P D Q appropriés
ts(DT$value[trainIndexes],frequency=48) # les données sont converties dans un format quelconque à partir du package de prévision, l'essentiel est de spécifier la fréquence, sinon la saisonnalité ne sera pas utilisée.
seasonal.test = "ocsb" # google dit que c'est mieux, je ne suis pas sûr
stepwise = FALSE #false permet une recherche plus complète. La valeur par défaut de true signifierait que la recherche est susceptible de rester bloquée au minimum local et de s'arrêter.
max.q =48 #valeur maximale de q dans la recherche. valeur par défaut == 5, pour cette donnée est faible
max.order = 48+5 # somme maximale p+q+P+Q. valeur par défaut == 5, pas suffisant pour ces données

La fonction prendra beaucoup de temps, mais devrait finalement retrouver les mêmes paramètres que ceux que j'ai utilisés, et peut-être même en trouver de meilleurs.

Je n'ai pas attendu que cette fonction trouve tout, j'ai juste choisi intuitivement les bons paramètres. Les données sont en tendance, donc p = 1 et P = 1. Et le graphique montre des périodes dominantes de 24 et 48, donc q = 24, et Q = 48 / fréquence = 1
Je ne pouvais plus insérer la période 336 dans arim, pour cela j'ai besoin de la deuxième saisonnalité, le paquet forecast ne peut pas le faire.

Arima avec des paramètres déjà connus p d q P D Q est créé comme ceci :

la saisonnalité n'est en fait pas (1,0,1), mais (1,0,48) parce que Q est en quelque sorte dominé par la fréquence



Oui, je suis d'accord, c'est juste que ces données sont très cycliques et simples, donc l'arima fonctionne sans problème. Si je colle eurusd m30 dans le même code, le modèle n'atteindra pas les pics de prix avec les nouvelles données.
Je n'étais pas intéressé par ces pparamètres "optimaux", les paramètres que les coefficients dans l'équation de régression - imprime après l'ajustement
 
summary(arimaModel)
Series: ts(DT$value[trainIndexes], frequency = period) 
ARIMA(1,0,24)(1,0,1)[48] with non-zero mean 

Coefficients:
         ar1     ma1     ma2     ma3     ma4     ma5     ma6     ma7     ma8     ma9    ma10    ma11    ma12    ma13    ma14    ma15    ma16    ma17    ma18
      0.8531  0.3469  0.3324  0.3512  0.3564  0.3176  0.2676  0.2223  0.1904  0.2015  0.2241  0.2529  0.2424  0.2383  0.2408  0.2507  0.2279  0.1701  0.1418
s.e.  0.0316  0.0350  0.0413  0.0462  0.0506  0.0542  0.0559  0.0554  0.0537  0.0514  0.0494  0.0481  0.0477  0.0469  0.0455  0.0451  0.0448  0.0439  0.0415
        ma19    ma20   ma21     ma22     ma23     ma24    sar1     sma1       mean
      0.0813  0.0525  0.028  -0.0152  -0.0226  -0.0159  0.9899  -0.4300  1816.9447
s.e.  0.0390  0.0358  0.032   0.0280   0.0224   0.0180  0.0015   0.0132   687.9652

sigma^2 estimated as 1442:  log likelihood=-23883.84
AIC=47825.68   AICc=47826.05   BIC=48012.95

Training set error measures:
                     ME     RMSE      MAE         MPE     MAPE      MASE         ACF1
Training set -0.1648644 37.86381 25.64976 -0.07217873 1.573367 0.1610166 0.0002493082
Dossiers :
arimaModel.zip  140 kb
 
Dr. Trader:

C'est une table étrange.

Néanmoins.

Comparez la valeur du coefficient avec l'e.s. A quelques exceptions près, plus de 10%. Pour une raison quelconque, je ne vois pas d'estimation via t, mais de front, ce 10% signifie :

Hypothèse nulle sur l'estimation du coefficient : probabilité que le coefficient ne soit pas significatif. Un écart de plus de 10% indique que tous ces coefficients ne sont PAS significatifs, c'est-à-dire que vous n'avez PAS d'équation de régression.


PS.

En général, les coefficients qui sont significatifs sont marqués d'un astérisque. Puisque les coefficients ne sont PAS significatifs, tous les autres chiffres ne sont que des chiffres.

hist(residuals(arimaModel), breaks= 100)


La raison pour laquelle les coefficients ne sont PAS significatifs est que la queue à gauche est plus épaisse que la queue à droite.

Il existe des tests qui vous permettent d'identifier les problèmes de manière quantitative, et non à l'œil, et de prendre les outils pour les résoudre.

Conclusion :

Le modèle ARIMA n'est pas applicable aux séries chronologiques utilisées.

 
Maxim Dmitrievsky:

Sur le marché, tout classificateur est réentraîné car le marché n'est pas stationnaire. Si nous voulons qu'il ne sur-apprenne pas, nous devons enseigner le NS pour toute l'histoire. Sinon, il sera toujours possible de dire que le cycle du marché a changé et que le modèle est corrompu. La seule approche sage est le sur-entraînement ou le ré-entraînement dans le processus de négociation :) Nous ne croyons pas aux bobines, qui donnent régulièrement 1000% de profit mensuel sur un historique de 15 ans sans aucune intervention.

En général, je ne vois toujours pas cet avantage - qu'est-ce que le NM surentraîné dans le forex. C'est quand il ne gagne pas sur un échantillon de test ? nah nah... non non non... il s'agit de non-stationnarité. Si vous ne savez pas comment le vérifier, ce n'est pas pratique, ce n'est pas réaliste.


Ici, vous avez tout à fait raison, comment pouvez-vous parler de reconversion quand vous ne connaissez pas le concept lui-même ????. Que voulez-vous dire par "recyclé NS" ? ?? Que chacun dise comment il voit les choses, et je commence.

1. La NS ne fonctionne pas bien sur les nouvelles données. Par conséquent, il ne divise pas les signaux de manière cohérente, le bien ou le mal n'a pas d'importance, ce qui compte c'est la stabilité de la séparation du mauvais et du bon..... Il peut drainer de manière cohérente (inversion de modèle), mais le fait même de séparer le mauvais du bon est en apparence.

2. Le modèle a donné de bons résultats pour moins de la moitié de l'intervalle d'entraînement. L'implication de cette approche est qu'un modèle bien entraîné devrait fonctionner pendant 50% ou plus de l'intervalle d'entraînement.

3.la courbe d'équilibre sur les nouvelles données a des hauts et des bas très marqués (le modèle aléatoire fonctionne dans une période de temps spécifique et a abouti à la rentabilité en raison de 1-2 grandes affaires, mais en général le plomb)

Et au sujet de la classification, voici ma réponse.

NON STATIONNAIRE est une valeur qui change doucement, dès qu'une barre est fermée, elle commence à s'éloigner lentement. Et plus la barre s'éloigne dans l'histoire, plus cette fameuse valeur STATIONNAIRE (un symbole d'un certain chaos ou d'une valeur éthérée qui change le marché en général) s'éloigne, donc si nous enseignons le modèle de classification, nous obtiendrons que cette valeur dépend directement de la qualité du modèle. Plus le modèle est ancien, plus la qualité du modèle est faible, conformément à la modification de ce très NON STATIONNAIRE. L'objectif est de construire un modèle qui fonctionne suffisamment longtemps pour que vous puissiez en tirer quelques pips :-)

 
Mihail Marchukajtes:

Que voulez-vous dire par "recyclé" NS ?

Les données utilisées pour l'entraînement, notamment dans le domaine des devises, sont généralement bruyantes. En entraînant le modèle avec une précision de 100 %, nous lui apprenons à reproduire ce bruit tout en obtenant le résultat souhaité. L'apprentissage doit s'arrêter au moment où le SN commence à prédire le résultat correctement, mais ne commence pas à mémoriser les bonnes réponses avec le bruit. Dans mes propres mots. Scientifiquement,https://ru.wikipedia.org/wiki/Переобучение.


https://commons.wikimedia.org/wiki/File:Overfitting.svg

En voici une bonne illustration. Deux modèles,
le premier (la ligne du hall) a appris ces données avec une précision de 100%. À l'œil, nous pouvons voir que de nombreux points à la limite des espaces rouge et bleu sont légèrement décalés vers le côté (bruit), et qu'en fait la limite de ces deux espaces ne devrait pas être une ligne brisée, mais une sorte de ligne moyenne.
Le premier modèle est réentraîné.
Et il existe un deuxième modèle (ligne noire) qui ignore le bruit, et divise clairement par sens le plan.

 
Dr. Trader:

Les données utilisées pour l'entraînement, notamment dans le domaine des devises, sont généralement bruyantes. En entraînant le modèle avec une précision de 100 %, nous lui apprenons à reproduire ce bruit tout en obtenant le résultat souhaité. L'apprentissage doit s'arrêter au moment où le SN commence à prédire le résultat correctement, mais ne commence pas à mémoriser les bonnes réponses avec le bruit. Dans mes propres mots. Scientifiquement,https://ru.wikipedia.org/wiki/Переобучение.


https://commons.wikimedia.org/wiki/File:Overfitting.svg

Voici une bonne illustration. Deux modèles,
le premier (ligne du hall) a appris ces données avec une précision de 100%. À l'œil, on peut voir que de nombreux points à la limite des espaces rouge et bleu sont légèrement décalés vers le côté (bruit), et qu'en fait la limite de ces deux espaces ne devrait pas être une ligne brisée, mais une sorte de moyenne.
Le premier modèle est réentraîné.
Et il y a un deuxième modèle (ligne noire) qui ignore le bruit, et divise clairement par sens le plan.

Parfois le cerveau commence à se décomposer... à propos du bruit dans le forex, ce n'est pas un signal radio, non ? Pourquoi y aurait-il du bruit dans le forex ? Si le modèle de Michael faisait 30-50 transactions par mois, 1-2 par jour, était-ce du bruit de trading ou quoi ? D'une certaine manière, cette définition ne convient pas ici :)

Le sur-apprentissage en forex concerne les modèles (temporels) mal classés. Mais il n'y a pas d'autres modèles dans le forex, donc n'importe quel modèle se surentraînera à un degré ou à un autre.

p.s. Vous devez donc faire un tri des instruments et choisir les BP les plus persistants du moment, comme les actions ou les indices en hausse.

 

Tous true !!!! Mais le surentraînement a aussi une explication mathématique.......

Lors de la formation avec un enseignant, nous essayons de réduire l'erreur du réseau sur l'ensemble de formation. Et cette réduction des erreurs peut être infinie si l'on traite des nombres réels. Mais il arrive un moment où la réduction des erreurs entraîne une dégradation du modèle, même sur le jeu de test. Nous pouvons en tirer la conclusion suivante !

Théoriquement, pour chaque ensemble de données, il existe un apprentissage absolu, c'est-à-dire une certaine ligne sur l'échelle d'erreur où 0,000000000000000000000001 modèle n'est pas recyclé et 0,0000000000000000009 est recyclé, une sorte de "zéro absolu", pour le dire en termes de physique. Tous les modèles dont les erreurs se situent à droite de ce point sont considérés comme désappris, ceux qui se trouvent à gauche sont surappris en conséquence. Permettez-moi de rappeler qu'il ne s'agit que d'une théorie de ma compréhension personnelle.

Il s'agit en quelque sorte d'un modèle idéal pour un ensemble de données particulier.

La tâche de toute IA est de se rapprocher le plus possible du point d'apprentissage absolu, mais de ne pas le dépasser. IMHO.


Cette théorie suppose qu'il ne s'agit pas d'un point, mais d'un domaine de modèles entièrement entraînés et surentraînés. Une zone mixte, dont la taille n'est pas suffisante. Juste... imagine...... Pourquoi ? Je l'ai identifié par l'observation.

Quoi qu'il en soit, la première chose que l'IA doit faire est de s'assurer qu'elle atteint cette zone de transition. Mais voilà le problème : ......

Si vous divisez l'échantillon de manière stationnaire, alors il est probable que ce soit une valeur spécifique de la limite de surentraînement (le plus probable), si l'échantillon est divisé de manière aléatoire à chaque fois, alors c'est OVER..... transitoire.... IMHO

Si l'IA ne vient pas dans cette région de manière garantie, c'est qu'elle n'est pas bien faite. L'autre chose est de savoir quel modèle s'arrêtera là !!!!.

J'ai obtenu tout cela en utilisant JPrediction.

En commençant à entraîner le même fichier, en tenant compte de l'échantillonnage aléatoire, j'ai obtenu 10 résultats d'entraînement différents, le pire était de 75%, le meilleur de 85% de généralisation (nous prenons maintenant les chiffres de l'optimiseur, qu'ils soient bons ou mauvais n'est PAS important, maintenant...à titre d'exemple....) Nous pouvons donc supposer que nous avons une zone comprise entre 75 et 85, qui contient un nombre infini de variantes du modèle, un réseau neuronal. En règle générale, je choisis une moyenne autour de 80-82 et vous pouvez alors tomber sur un tel modèle, qui sur OOS sera faible. Parce que déterminer le polynôme ultime n'est pas une mince affaire.

Voici une vidéo et regardez à partir de 35 minutes, il en parle.....

https://www.youtube.com/watch?v=qLBkB4sMztk

001. Вводная лекция - К.В. Воронцов
001. Вводная лекция - К.В. Воронцов
  • 2014.12.22
  • www.youtube.com
Курс "Машинное обучение" является одним из основных курсов Школы, поэтому он является обязательным для всех студентов ШАД. Лектор: Константин Вячеславович Во...
 
Mihail Marchukajtes:

Voici la vidéo et regardez à partir de la 35e minute, il en parle.....

https://www.youtube.com/watch?v=qLBkB4sMztk


Oui, j'ai déjà vu ce type, je vais le regarder à nouveau, thx).

Si vous ne comprenez pas le sens mathématique, mais le sens réel - le surentraînement NS dans le Forex a une signification complètement différente, et il n'y a pas d'échappatoire à un tel surentraînement :) C'est pourquoi il faut soit un tri rigide et la recherche d'instruments de tendance, soit un NS adaptatif réformé en permanence, mais selon quels critères - c'est une question de créativité.

 
Maxim Dmitrievsky:

Oui, j'ai déjà vu ce type, je le reverrai, merci).

La signification mathématique est claire, mais la signification réelle - qu'il y a un NS surentraîné dans le Forex a une toute autre signification, et il n'y a pas d'échappatoire à ce surentraînement :) C'est la raison pour laquelle nous avons besoin soit d'un tri et d'une recherche stricts des instruments de tendance, soit de NS adaptatifs recyclés en permanence, mais selon quels critères - il s'agit ici d'une question de créativité.


Le vrai point, cependant, est le suivant. S'il y a un mauvais fractionnement sur la section d'essai, il n'est pas important que le fractionnement soit correct ou non, le fait est que le fractionnement est faible. Si le modèle n'a pas fonctionné pendant plus de 50% de l'intervalle d'apprentissage, alors un tel modèle est considéré comme surentraîné..... IMHO