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

 
Aleksey Nikolayev #:

Le principal problème lié à l'utilisation de matstat pour de telles tâches est que la recherche de TS est effectuée par sélection à partir d'un grand nombre de variantes. Il est toujours possible de choisir quelque chose de très beau à partir d'un grand ensemble de variantes - par un exemple simple, j'ai montré ici qu'en modélisant les prix comme un CB, vous pouvez toujours "trouver" une bonne heure de la semaine pour le trading. Et il ne s'agit que de 120 variantes parmi lesquelles choisir.

Le matstat ne dit pas que le TS sélectionné est nécessairement mauvais, il dit seulement qu'un tel résultat PEUT (PAS DOIT) être simplement le résultat d'une sélection à partir du SB.

Je ne comprends toujours pas, il n'y a aucun moyen de dire avec certitude si le résultat final est statistiquement significatif ou non ? TC ou non ?

Aleksey Vyazmikin #:

J'obtiens une erreur lors du lancement de

1) Les données sont-elles les mêmes que dans l'exemple ?

2) Peut-être que dans le nouveau R, les noms des arguments des fonctions ont changé.

?embed
 

L'une des orientations pourrait consister à rechercher non pas les meilleurs, mais les paramètres les plus stables du TS, c'est-à-dire à écarter les variantes dont les résultats varient à différents moments de l'histoire.

Une solution consiste à inclure des indicateurs de stabilité des résultats dans les critères d'évaluation.

 

Il existe un excellent logiciel sur l'optimisation bayésienne...

Vous pouvez faire de l'optimisation multicritère, de l'optimisation sur des fonctions avec du bruit et beaucoup d'autres choses, un package très intéressant.

J'ai réalisé un petit exemple de la manière dont l'algorithme recherche un minimum dans un vecteur unidimensionnel.

library(mlrMBO)

set.seed(123)
xx <- cumsum(rnorm(1000))
par(mar=c(2,2,2,2))
plot(xx,t="l")

fun = function(i){
  plot(xx,t="l",col=8)
  points(i,xx[i],col=4,lwd=4)
  return(xx[i])
}

obj.fun = makeSingleObjectiveFunction(name = "noisy_parable", 
                                      fn = fun,
                                      has.simple.signature = TRUE, 
                                      par.set = makeNumericParamSet("i", 1, 1, length(xx)),
                                      noisy = F)


ctrl = makeMBOControl(final.method = "best.true.y", final.evals = 10)
ctrl = setMBOControlInfill(ctrl, crit = crit.eqi)
ctrl = setMBOControlTermination(ctrl, iters = 40)

configureMlr(on.learner.warning = "quiet", show.learner.output = F)
res = mbo(obj.fun, control = ctrl, show.info = T)

points(res$x$i, xx[res$x$i] , col=2,lwd=5, pch=10)
Bayesian Optimization and Model-Based Optimization of Expensive Black-Box Functions
  • mlrmbo.mlr-org.com
Flexible and comprehensive R toolbox for model-based optimization (MBO), also known as Bayesian optimization. It implements the Efficient Global Optimization Algorithm and is designed for both single- and multi- objective optimization with mixed continuous, categorical and conditional parameters. The machine learning toolbox mlr provide dozens of regression learners to model the performance of the target algorithm with respect to the parameter settings. It provides many different infill criteria to guide the search process. Additional features include multi-point batch proposal, parallel execution as well as visualization and sophisticated logging mechanisms, which is especially useful for teaching and understanding of algorithm behavior. mlrMBO is implemented in a modular fashion, such that single components can be easily replaced or adapted by the user for specific use cases.
 
mytarmailS #:

Je ne comprends toujours pas, il n'y a aucun moyen de dire avec certitude si les résultats finaux sont statistiquement significatifs ou non. ou non ?

Ne mélangez pas deux choses qui sont liées à l'utilisation du même indicateur :

1) L'évaluation du résultat d'un TS par cet indicateur.

2) La sélection d'un TS parmi un grand nombre d'options en maximisant cet indicateur.

Dans le premier cas, la valeur de l'indicateur peut être statistiquement significative, mais dans le second cas, c'est peu probable.

 
mytarmailS #:

Je ne comprends toujours pas, il n'y a aucun moyen de dire avec certitude si les résultats finaux sont statistiquement significatifs ou non. ou non ?

1) Les données sont-elles les mêmes que dans l'exemple ?

2) Peut-être que dans le nouveau R, les noms des arguments des fonctions ont changé.

1. oui

2. Peut-être - j'ai activé la version 3.5.0 - j'ai demandé la bibliothèque - je l'ai installée et j'ai de nouveau eu des erreurs.

installing the source package ‘inTrees’

trying URL 'https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/contrib/inTrees_1.3.tar.gz'
Content type 'application/octet-stream' length 16771 bytes (16 KB)
downloaded 16 KB

ERROR: dependency 'arules' is not available for package 'inTrees'
* removing 'C:/Users/S_V_A/Documents/R/win-library/3.5/inTrees'
In R CMD INSTALL
Warning in install.packages :
  installation of package ‘inTrees’ had non-zero exit status
 
Aleksey Vyazmikin #:

1. oui

2. Peut-être - j'ai activé la version 3.5.0 - j'ai demandé la bibliothèque - je l'ai installée et j'ai de nouveau eu des erreurs.

voir quels arguments la fonction prend

?embed

dans la version qui avait l'erreur avec cette fonction.

C'est moi qui l'ai écrite !

 
Aleksey Nikolayev #:

Ne mélangez pas deux choses qui impliquent l'utilisation du même indicateur :

1) L'évaluation du résultat d'une CT sur cet indicateur.

2) Sélection d'un TS parmi un grand nombre d'options en maximisant cet indicateur.

Dans le premier cas, la valeur de l'indicateur peut avoir une signification statistique, mais dans le second cas, c'est loin d'être le cas.

En d'autres termes, si j'évalue une TS en fonction de sa signification statistique, elle est bonne,

si j'ai 100 TS et que je choisis le meilleur selon le même critère, c'est mauvais ?


J'ai dû mal comprendre quelque chose ? ça ne peut pas être juste non plus ?

 
Andrey Dik #:

L'une des orientations pourrait consister à rechercher non pas les meilleurs, mais les paramètres les plus stables du TS, c'est-à-dire à écarter les variantes dont les résultats varient à différents moments de l'histoire.

Une solution consiste à inclure des indicateurs de stabilité des résultats dans les critères d'évaluation.

Quelle est votre variante de l'évaluation de la stabilité ? Nous avons récemment discuté de deux options.
 
mytarmailS #:

voir quels sont les arguments pris par la fonction

dans la version dans laquelle il y a eu une erreur avec cette fonction.

C'est moi qui l'ai écrite !

embed {stats}   R Documentation
Embedding a Time Series

Description

Embeds the time series x into a low-dimensional Euclidean space.

Usage

embed (x, dimension = 1)
Arguments

x       
a numeric vector, matrix, or time series.
dimension       
a scalar representing the embedding dimension.
Details

Each row of the resulting matrix consists of sequences x[t], x[t-1], ..., x[t-dimension+1], where t is the original index of x. If x is a matrix, i.e., x contains more than one variable, then x[t] consists of the tth observation on each variable.

Value

A matrix containing the embedded time series x.

Author(s)

A. Trapletti, B.D. Ripley

Examples

x <- 1:10
embed (x, 3)
[Package stats version 4.0.2 Index]
 
Aleksey Vyazmikin #:

C'est bien, cela devrait fonctionner.

Vous êtes sûr de ne pas avoir modifié le code ? Montrez-moi le code où l'erreur se produit.