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

 
mytarmailS #:
Vous suivez, mais vous ne comprenez rien...(

Par exemple quoi - pour résoudre n'importe quel problème il faut un critère pour résoudre le problème, c'est aussi une erreur))))


Maintenant j'ai remarqué que vous avez complété le post. Je vais donc me permettre de répondre.

Vous ne cherchez que des erreurs. C'est là que réside le problème des rêveurs MO. Ils cherchent des erreurs, pas des résultats de prédiction spécifiques. Même la plus petite erreur est à 100% une erreur.)) Sur les marchés financiers avant tout.

Continuez à vous tromper))) Je ne répondrai plus et n'interviendrai plus.

 
Uladzimir Izerski #:

Je remarque maintenant que vous avez mis à jour l'article.

D'ailleurs, j'ai répondu à votre question il y a longtemps aussi))).


Uladzimir Izerski #:

Vous ne cherchez que des erreurs. C'est le problème des rêveurs du MO. Chercher des erreurs, pas des résultats concrets de prévisions.

Vous avez une vision très, très étroite du concept d'"erreur".

dans un cas, il s'agit d'une erreur de prévision d'un indicateur,

dans un autre cas, par exemple, l'erreur pourrait être la courbe du bilan, ou l'écart par rapport à un capital idéal,

ou la dynamique de la croissance du capital,

ou, par exemple, le nombre d'erreurs d'algorithme (le nombre d'erreurs d'algorithme est également une erreur).

ou vous pouvez regarder le robot algorithme avec vos yeux et lui dire (par code/bouton) - J'aime celui-ci, mais ne fais pas celui-là, et ceci peut être considéré comme une erreur aussi....

Et il y a des millions de variations différentes, et même ce que vous faites, vous avez aussi un certain critère (bon/mauvais). C'est également une erreur.

Le fait que vous ne vous en rendiez pas compte, que vous ne l'admettiez pas, c'est juste la vôtre...


Une erreur est un critère bon/mauvais exprimé par un chiffre.

 

Uladzimir essaie à nouveau, avec son esprit curieux et enfantin, de comprendre des significations qui sont grandes pour lui et de discréditer les participants à ce fil de discussion, à savoir ces significations :

Reconstruction de l'équation:" boîtenoire".

La"boîte noire " est à la fois laformulationla plus difficileet laplus"séduisante " d'un problème de modélisation, iln'y a pas d'information a priori sur l'objet,etdonc sur la structure du modèle. L'intrigue réside dans le fait qu' unmodèlecapable de reproduire le comportement observé ou de donner une prévision de l'évolution futuredevrait être obtenu uniquement à partir de la série observée,c'est-à-direpratiquement"à partir de rien".Leschances de succès sont faibles,mais en cas de chance, un"bon " modèle devient un outil très précieux pour caractériser l'objet et comprendre les"mécanismes " deson fonctionnement: "presque un bluff peut conduire à un grand gain".L'absence d'informations a priori oblige à utiliser des structures universelles d'équations de modèles, parexemple des réseaux neuronaux artificiels, des fonctions debase radiales, despolynômes algébriques, etc.Ces modèles s'avèrent souvent multidimensionnels et contiennent de nombreux paramètres inconnus.


ZY et il y a plus d'un an il a écrit qu'il utilise lui-même des réseaux de neurones et que toutes ses TS sont basées dessus... quel clown cet abzdez

#870

#1826

Notre cher Uladzimir a appris les réseaux neuronaux très rapidement, en 2 mois, il s'avère.

J'aurais aimé qu'il le fasse, mais deux ans plus tôt, il recevait déjà des signaux du NS.

#5758

Donc le type dit des bêtises dans un état d'ébriété et ment, ment, ment, ment.... et ne fait que se discréditer lui-même ainsi que ses indicateurs farfelus.

 

Il s'avère que c'est un assez bon test du modèle à travers le biais de la fenêtre. S'il donne un grand nombre de décalages, au lieu de zéro, avec de meilleures statistiques (comme mi), alors le modèle est basé sur la randomisation.

Sinon, il n'y aurait pas d'ambiguïté, il ne peut pas y avoir autant de TS rentables en même temps.

J'ai essayé de sélectionner par std selon les instructions de Sanych - à peu près la même chose. Mais j'ai sélectionné des ensembles de traits, et non chacun d'entre eux séparément.

J'examinerai à nouveau les caractéristiques séparément

 
>>> results = []
>>> for i in range(25):
...     pr = get_prices()
...     pr = labeling_shift(pr,shift=i)
...     mi = mutual_info_classif(pr[pr.columns[1:-1]], pr[pr.columns[-1]])
...     results.append([mi.mean(), mi.std(), mi, i])
...     print(i)
... 
results.sort()
results[-1]    
pd.DataFrame(results)

Le meilleur score est lag 9, mais le std est meilleur sur 0 :

15  0.002473  0.002008  [0.0, 0.0, 0.0, 7.738132773948969 e-05, 0.00428...   0
16  0.002482  0.002536  [0.0027194272625081783, 0.004082692968791601, ...   4
17  0.002544  0.002137  [0.00016451381901605444, 0.003159073557252867,...   2
18  0.002678  0.002174  [0.0, 0.0015686230398428425, 0.000974887322880...   8
19  0.002749  0.001978  [0.0, 0.001425018820565338, 0.0, 0.0, 0.002788...   1
20  0.002793  0.002378  [0.00535509344523355, 0.0, 0.00400320235670181...  12
21  0.002897  0.002330  [0.00406257691063705, 0.001421806087245736, 0....  13
22  0.003113  0.002501  [0.0, 0.0, 0.004822852461999094, 3.66068989796...  10
23  0.003195  0.002560  [0.0024128008240758003, 0.0, 0.001845732619932...  11
24  0.003255  0.002406  [0.0, 0.0, 0.0034648745240082324, 0.0063568287...   9

Okabe regarde les backtests des deux, 9ème :

0-я :

Le 0e a, logiquement, un écart de valeurs plus faible sur le backtest, parce que le std pour mi est initialement plus petit. Mais cela n'affecte pas les résultats sur OOS, pas plus que la valeur plus élevée de mi (information mutuelle).

Supposons que nous procédions à un réentraînement sur un grand nombre de caractéristiques (14 caractéristiques ici).

MA_PERIODS = [i for i in range(10, 150, 10)]

Examinons les statistiques de chaque caractéristique et sélectionnons les meilleures pour le modèle à 9 retards :

>>> results[24]
[0.003255328338368026, 0.002405621052220332, array([0.        , 0.        , 0.00346487, 0.00635683, 0.00490859,
       0.        , 0.00305732, 0.00268664, 0.00877952, 0.00305562,
       0.00138638, 0.00320064, 0.00415751, 0.00452067]), 9]
>>> 

Certaines caractéristiques sont totalement nulles, c'est-à-dire qu'elles n'ont aucune valeur. Choisissons seulement celles qui sont supérieures à 0,004 et entraînons-nous sur elles :

>>> per = results[24][2]
>>> np.array(per) > 0.004
array([False, False, False,  True,  True, False, False, False,  True,
       False, False, False,  True,  True])
>>> 

MA_PERIODS = [40, 50, 90, 130, 140] - отобранные фичи

Entraînement et test :

Mnde.

Conclusion : une corrélation d'information plus élevée sur l'échantillon d'entraînement ne permet pas d'améliorer le modèle sur l'échantillon de test.

Mais cela peut être utilisé pour arracher des fractions de % dans les compétitions, ce que les professionnels disent, que la présélection des caractéristiques pour les modèles modernes comme Busting ne donne presque rien.

 
Maxim Dmitrievsky #:

Il s'avère que c'est un assez bon test du modèle à travers le biais de la fenêtre. S'il produit un grand nombre de décalages, au lieu de zéro, avec de meilleures statistiques (comme mi), alors le modèle est construit sur le hasard.

sinon, il n'y aurait aucune ambiguïté : il ne peut y avoir autant de CT rentables en même temps.

J'ai essayé de sélectionner par std selon les instructions de Sanych - à peu près la même image. Mais j'ai sélectionné des ensembles de signes, et non chacun d'entre eux séparément.

J'examinerai à nouveau les traits séparément

std de l'estimation numérique de la corrélation entre un trait et un trait cible ?

Il faut d'abord supprimer les caractères corrélés. Pour une raison quelconque, la corrélation optimale pour mes caractères est de 75 %.

Ensuite, sélectionnez 5 à 10 caractères avec le score maximum.

Faites des dessins, comme dans mon post, pour vous assurer que la corrélation divise les notes.

L'erreur de prédiction doit être inférieure à 30 %. Si ce n'est pas le cas, les caractères doivent être éliminés.

 
СанСаныч Фоменко #:

std une estimation numérique de la relation entre un caractère et une cible ?

Il faut d'abord supprimer les caractères corrélés. Sur mes traits, pour une raison quelconque, la corrélation optimale est de 75 %.

Ensuite, il faut sélectionner 5 à 10 attributs ayant le score le plus élevé.

Faites des dessins, comme ci-dessus dans mon message, pour vous assurer que la corrélation est divisée par classes.

L'erreur de prédiction doit être inférieure à 30 %. Si ce n'est pas le cas, les caractéristiques doivent être éliminées.

L'entropie montre que la corrélation est négligeable (0,003), mais qu'elle devrait tendre vers 1.

Mais j'ai estimé la différence, donc cela n'a pas d'importance. Il devrait quand même y avoir une petite amélioration. Peut-être que ce n'est pas le cas parce que la différence est minime.

En général, même si tout est bon (il y en a de bons dans l'ensemble), il n'est pas nécessaire de supprimer les autres caractéristiques

C'est ainsi, un billette pour d'autres choses comme une fenêtre non standard.
 
Maxim Dmitrievsky #:

l'entropie montre clairement que la corrélation est négligeable (0,003), mais qu'elle devrait tendre vers 1.

mais j'ai estimé la différence, donc cela n'a pas d'importance. Il devrait quand même y avoir une petite amélioration. Peut-être que ce n'est pas le cas parce que la différence est minime.

en général, même si tout est bon (il y en a de bons dans le jeu), il n'est pas nécessaire d'enlever le reste des puces.

Le score lui-même est une chose relative.

Je vais répéter les images.

Mauvais, sans espoir


Mieux, s'il y en a plusieurs, on peut parler d'une erreur de prédiction de 30%.



Et il faut éliminer les déchets, car sur l'ensemble d'apprentissage, la puce peut se coucher en faveur des déchets, il est plus facile de trouver la valeur qui mène à l'optimum.

 
Maxim Dmitrievsky #:

la présélection des caractéristiques des modèles modernes de type Busting ne donne pratiquement rien.

Le Busting recherche les meilleurs splits de toutes les colonnes et de tous les exemples, c'est-à-dire qu'il utilise les meilleurs chips. C'est-à-dire qu'il utilise les meilleures puces.
Schuch. forest prend la moitié des puces et la moitié des exemples (la fraction est configurable) pour chaque arbre, puis de 20 à 100 arbres, il trouve la moyenne. S'il n'y a que 5 puces informatives sur 200 puces, certains arbres ne contiendront pas de puces informatives (en moyenne 2,5 puces informatives par arbre). Et nous ferons la moyenne d'une partie des arbres informatifs avec les arbres bruyants. Le résultat sera également très bruité.
Un arbre de bruit fonctionnera bien s'il y a beaucoup de fiches informatives (comme dans les exemples classiques/ tâches de MO).

Busting trouvera et utilisera les fiches les plus informatives, puisqu'il les vérifie toutes. Ainsi, selon la logique de bousting, il sélectionnera lui-même les meilleures fiches. Mais le bousting a aussi ses propres problèmes.

 
elibrarius #:

Busting trouvera et utilisera les jetons les plus informatifs, car il les vérifie tous. Ainsi, selon la logique du bousting, il sélectionnera les meilleurs jetons. Mais l'écrasement a aussi ses propres problèmes.

J'ai créé un sujet avec un échantillon qui prouve le contraire - le boosting n'est pas omnipotent, surtout en dehors de la boîte.

Raison: