L'Apprentissage Automatique dans le trading : théorie, modèles, pratique et trading algo - page 115
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Seriez-vous par hasard un employé d'une maison de courtage à l'ancienne ?
Je pense que votre "méthode secrète" consiste à échanger des mashki (aléatoires) et à doubler les gains lorsque vous perdez, n'est-ce pas ?)
Messieurs, vous allez devoir vivre sur commission...
Créer un comité, et tester :
Il y a un problème dans la mesure où les classes d'origine sont de type factoriel, et le résultat dans la matrice est converti en numéros ordinaux factoriels correspondants. Ainsi, à la fin, la comparaison passe par as.numberic().
Pour que tout fonctionne correctement avec les facteurs, nous devons créer predictionMatrix en tant que data.frame, mais après cela, ma fonction rbind a donné des résultats erronés, je dois changer quelque chose d'autre, je n'ai pas compris ce qui ne va pas.
Quelques réflexions sur le code :
1. Vous ne devez pas utiliser la construction for(), sauf si c'est absolument nécessaire. Il existe une merveilleuse alternative à foreach() qui, outre une grande vitesse d'exécution, permet de paralléliser les calculs entre les cœurs accessibles.
2) L'ensemble des modèles a un sens et ne donne des résultats que si les modèles présentent des différences significatives. Deux variantes : un jeu de données - différents modèles (RF, DT, SVM) ; un modèle - différents jeux de données. Voici un exemple de ce dernier cas
Choisissez les modèles les plus performants et travaillez avec eux à partir de là.
Bonne chance
Quelques réflexions sur le code :
1. Vous n'avez pas besoin d'utiliser for() sauf si c'est absolument nécessaire. Il existe une merveilleuse alternative à foreach() qui, outre une grande vitesse d'exécution, permet de paralléliser les calculs entre les cœurs disponibles.
2) L'ensemble des modèles a un sens et ne donne des résultats que si les modèles présentent des différences significatives. Deux variantes : un jeu de données - différents modèles (RF, DT, SVM) ; un modèle - différents jeux de données. Voici un exemple de cette dernière option
Choisissez des modèles plus performants et travaillez avec eux.
Bonne chance
Ensuite, nous choisissons le modèle qui présente les meilleurs indicateurs et nous travaillons avec lui.
C'est là que le bât blesse.
Quelle est la meilleure performance en fonction de quelles données ?
Pourquoi je demande cela, parce que Vkontas essaie de comprendre comment choisir un modèle (parmi de nombreux modèles) en utilisant des données de formation et de test. Mais ici, c'est très simple : nous prenons les meilleurs indicateurs et nous travaillons avec eux.
C'est là que le bât blesse.
Quelle est la meilleure performance en fonction de quelles données ?
Pourquoi je demande cela, parce que Vkontas essaie de comprendre comment choisir un modèle (parmi de nombreux modèles) en utilisant des données de formation et de test. Mais ici, c'est très simple : nous prenons les meilleurs indicateurs et nous travaillons avec eux.
L'ensemble initial est divisé en stratifié train/test. Lors de la formation, nous nous entraînons et lors du test, nous testons. Le code n'est-il pas clair ?
Bonne chance
J'aimerais vous voir plus souvent. Ne disparaissez pas.
L'ensemble initial est divisé en stratifié train/test. On train we train on test respectivement on test. Le code n'est-il vraiment pas clair ?
Bonne chance,
Je vais essayer rminer::holdout, merci pour l'exemple. En général, par expérience, si nous choisissons un modèle et ses paramètres de manière à obtenir le meilleur résultat sur un échantillon test - alors le modèle donnera finalement un très bon résultat sur l'échantillon test. Mais le résultat est généralement très faible sur les nouvelles données. Je parle spécifiquement des données forex, dans d'autres domaines, cette approche est tout à fait normale. Je n'espère pas que rminer::holdout pour le forex changera quelque chose de façon spectaculaire.
alors le modèle finira par montrer un très bon résultat sur l'échantillon test. Mais le résultat est généralement très faible sur les nouvelles données. Je parle spécifiquement des données forex,
Le marché va à l'encontre de ses propres statistiques, c'est une théorie que j'ai confirmée par la pratique, c'est la seule théorie que je connaisse qui répond à tout, de la raison pour laquelle le modèle ne fonctionne pas sur les nouvelles données à la raison pour laquelle tout le monde perd de l'argent sur le marché en premier lieu...
pourquoi est-ce si difficile pour toi d'accepter ça ?
les anciennes connaissances et habitudes sont-elles si amortissantes pour les nouvelles informations ?
pourquoi se concentrer autant sur le modèle alors que la différence de performance entre les modèles se situe entre 0,5 et 5 % ?
aucun modèle ne peut aider car tout dépend des données.
J'ai posté cette photo plus d'une fois mais néanmoins.....
Regardez bien ! C'est la différence entre les prévisions cumulées d'achat et de vente de deux réseaux cum(buy.signal) - cum(sell.signal), idéalement si notre modèle est bon alors le graphique bleu devrait être en corrélation avec le prix, cela signifie que le réseau comprend bien les données et y réagit de manière adéquate, en fait ce que nous voyons ????????.
Vous ne pouvez pas dire que le modèle ne comprend pas les données, bien que la corrélation soit inverse mais que la structure soit identique, mais que le marché évolue à l'encontre des prévisions, à l'encontre des statistiques dont le réseau avait tiré des enseignements dans le passé...
Maintenant, dites-moi, quel modèle peut le gérer ? Quelle validation croisée peut aider ici ? toute formation de modèle suivie par des données hors échantillon (nouvelles données) ne serait rien de plus qu'un ajustement d'un modèle qui fonctionne bien sur les données hors échantillon et rien de plus... Et vous le voyez tout le temps lorsque vous formez vous-même des modèles, que sur des données toutes neuves, le modèle échoue toujours, vous ne voyez pas ? ! ? Je vous donne la réponse à cette question !
S'agit-il du graphique avec les données sur lesquelles la formation elle-même a eu lieu, ou s'agit-il simplement d'un test sur les nouvelles données ? Si vous dessinez un graphique pour les deux périodes à la fois, à la fois pour la formation et le test, alors sur la première partie (formation) des données, il y aura un chevauchement complet des graphiques bleu et gris, et lorsque les nouvelles données commencent, il y aura un changement brusque vers une corrélation inverse ?
Si c'était aussi simple, il suffirait d'entraîner n'importe quel modèle et d'inverser ses prédictions. Cela ne fonctionne pas, malheureusement.
Il est tout aussi difficile d'enseigner un modèle qui donne 0% de précision sur de nouvelles données que d'atteindre 100% de précision. Le tirage au sort d'une pièce de monnaie, par exemple, est précis à 50 %, et il est tout aussi difficile de faire un écart de quelques dizaines de pour cent. Le problème n'est pas que les modèles donnent des résultats opposés, mais que certaines barres donneront des résultats corrects, d'autres des résultats erronés, et tout cela est aléatoire et il n'y a aucun moyen de filtrer uniquement les résultats corrects.
Et pourquoi soustraire la prévision S de la prévision B ? Peut-être que tu devrais faire le contraire, S-B ? Alors la corrélation deviendrait soudainement correcte aussi.