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

 
Aleksey Vyazmikin #:

Et l'ancien code-script qui a été posté un peu plus tôt a cessé de fonctionner - il fonctionnait avant les mises à jour.

library(patchwork)

Est-il installé ?

 
Aleksey Vyazmikin #:

Dans les mises à jour générales, même l'erreur n'est pas écrite, mais le résultat est le même - tout est presque terminé.

Je l'ai lancé, j'ai eu la même image))


Je me suis rendu compte de l'erreur, là j'ai eu un aperçu du futur dans la cible... ouais... on perd la main.

Cette ligne devrait être remplacée

dp <- с(diff(close),0)   

par

dp <- tail(c(diff(close),0),nrow(X))


J'ai réécrit le code pour le rendre un peu plus lisible.

close <- cumsum(rnorm(10000,sd = 0.00001))+100
par(mar=c(2,2,2,2))  ; plot(close,t="l")


D <- make_data(close)
tr <- 1:500
R <- make_rules(y = D$Y[tr] , x = D$X[tr,])
# head(R)
buy_rules <- R$condition[ R$pred==1 ]



plot(x = 1:2000,y = rep(NA,2000), ylim = c(-0.001,0.001)) 
for(i in 1:length(buy_rules)){
  cum_profit <- cumsum( D$diff_price[  eval(str2expression(buy_rules[i]))  ] )
  lines(cum_profit,col=8,lwd=1)}
for(i in 1:length(buy_rules)){
  cum_profit <- cumsum( D$diff_price[  eval(str2expression(buy_rules[i]))  ] )
      
      if(length(cum_profit)>30){
      ccor <- cor(cum_profit, 1:length(cum_profit))
      if(ccor>=0.95)  lines(cum_profit,col=i,lwd=2)
      }
}
abline(h = 0,col=2,lty=2)
gc(T,T)

fonctions d'aide

make_rules <- function(y, x){
  library(inTrees)  # ?inTrees::getRuleMetric()
  library(RRF)
  rf <- RRF(x = x,y = y,ntree=100)
  rule <- getRuleMetric(unique(extractRules(RF2List(rf),x)),x,y)
  rule <- data.frame(rule,stringsAsFactors = F)
  for(i in c(1,2,3,5)) rule[,i] <- as.numeric(rule[,i])
  return(rule)}
make_data <- function(close){
  sw <- embed(x = close,dimension = 10)[,10:1] #  make slide window data
  X <- t(apply(sw,1,scale)) #  normalase data
  
  dp <- tail(c(diff(close),0),nrow(X)) #  diff prices
  Y <- as.factor( ifelse(dp>=0,1,-1) ) #  target for classification
  res <- list(Y=Y,X=X,diff_price=dp)
  return(res)
}


 
Maxim Dmitrievsky #:

S'il n'y a pas d'autres critères d'évaluation, c'est la stabilité des paramètres qui doit être prise en compte.

on peut également représenter les valeurs de sortie du TS comme des signaux dans le temps, mesurer leur entropie et la comparer au hasard. Si le TS capture certaines régularités qui se répètent avec une certaine périodicité, il sera reflété.

Cela peut être utile pour les constructeurs d'automates personnalisés.

La meilleure mesure est le temps et les tests dans la vie réelle. Tout CT cessera de fonctionner.

J'ai déjà compris pourquoi tout cela ne fonctionne pas sur de nouvelles données, et je sais même à peu près ce qu'il faut faire.

 
Aleksey Nikolayev #:

La question concernant ONNX à partir d'ONNX est née simplement de la juxtaposition de deux affirmations que j'ai rencontrées : 1) l'acquisition d'un modèle peut être représentée comme un pipeline, 2) le pipeline peut être converti au format ONNX.

Il est clair que cela n'est guère possible dans la pratique. En fait, j'aimerais comprendre ce qui empêche exactement la mise en œuvre d'une telle possibilité, afin de réaliser les limites fondamentales de cette technologie dans son ensemble.

C'est une chose si ce sont des limitations comme l'impossibilité d'écrire dans un fichier et une autre si ce sont des limitations comme le manque de support pour les types de données (dataframes, par exemple).

Les deux affirmations sont vraies. Obtenir un modèle incluant le prétraitement est possible. Malheureusement, ce n'est pas le cas dans tous les frameworks et seulement dans les plus simples. TF/Keras implémente les premières couches du NN en effectuant le prétraitement. scikit-learn a le choix le plus riche de pipeline+modèle. Voir scl2onnx.

Il est bon de voir que des contributeurs sérieux réalisent qu'ONNX devrait inclure l'ensemble du pipeline en commençant par le prétraitement. Les nouvelles données en production doivent passer par les mêmes étapes de prétraitement qu'en formation. Sinon, les résultats du modèle ONNX seront imprévisibles.

Cette direction se développe rapidement et je pense que ce problème sera bientôt résolu. Pour l'instant, vous devriez expérimenter.

Je vous souhaite bonne chance.

 
Les commentaires non pertinents pour ce fil de discussion ont été déplacés vers "Manière inacceptable de communiquer".
 
mytarmailS #:

je l'ai lancé, j'ai eu la même image ))


J'ai réalisé mon erreur, j'ai jeté un coup d'œil dans le futur dans la cible... oups... je perds la main.

Cette ligne devrait être remplacée

à


légère réécriture du code pour le rendre plus lisible

fonctions auxiliaires


Essai du code modifié

close <- cumsum(rnorm(10000,sd = 0.00001))+100
par(mar=c(2,2,2,2))  ; plot(close,t="l")


D <- make_data(close)
tr <- 1:500
R <- make_rules(y = D$Y[tr] , x = D$X[tr,])
#  head(R)
buy_rules <- R$condition[ R$pred==1 ]



plot(x = 1:2000,y = rep(NA,2000), ylim = c(-0.001,0.001)) 
for(i in 1:length(buy_rules)){
  cum_profit <- cumsum( D$diff_price[  eval(str2expression(buy_rules[i]))  ] )
  lines(cum_profit,col=8,lwd=1)}
for(i in 1:length(buy_rules)){
  cum_profit <- cumsum( D$diff_price[  eval(str2expression(buy_rules[i]))  ] )
  
  if(length(cum_profit)>30){
    ccor <- cor(cum_profit, 1:length(cum_profit))
    if(ccor>=0.95)  lines(cum_profit,col=i,lwd=2)
  }
}
abline(h = 0,col=2,lty=2)
gc(T,T)

make_rules <- function(y, x){
  library(inTrees)  # ?inTrees::getRuleMetric()
  library(RRF)
  rf <- RRF(x = x,y = y,ntree=100)
  rule <- getRuleMetric(unique(extractRules(RF2List(rf),x)),x,y)
  rule <- data.frame(rule,stringsAsFactors = F)
  for(i in c(1,2,3,5)) rule[,i] <- as.numeric(rule[,i])
  return(rule)}
make_data <- function(close){
  sw <- embed(x = close,dimension = 10)[,10:1] #  make slide window data
  X <- t(apply(sw,1,scale)) #  normalase data
  
  dp <- tail(c(diff(close),0),nrow(X)) #  diff prices
  Y <- as.factor( ifelse(dp>=0,1,-1) ) #  target for classification
  res <- list(Y=Y,X=X,diff_price=dp)
  return(res)
}

J'obtiens une erreur

> D <- make_data(close)
Error in make_data(close) : could not find function "make_data"
> source('~/.active-rstudio-document', echo=TRUE)

> close <- cumsum(rnorm(10000,sd = 0.00001))+100

> par(mar=c(2,2,2,2))  ; plot(close,t="l")

> D <- make_data(close)
Error in make_data(close) : could not find function "make_data"
> source('~/.active-rstudio-document', echo=TRUE)

> close <- cumsum(rnorm(10000,sd = 0.00001))+100

> par(mar=c(2,2,2,2))  ; plot(close,t="l")

> D <- make_data(close)
Error in make_data(close) : could not find function "make_data"
> 
 
Aleksey Vyazmikin #:

Essai du code modifié

J'obtiens une erreur

Parce que les fonctions doivent être déclarées d'abord et utilisées ensuite...

Vous trollez ou quoi ?
 
mytarmailS #:
Parce que les fonctions doivent d'abord être déclarées et ensuite utilisées...

Vous êtes en train de troller ou quelque chose comme ça ?

Comment le saurais-je ?

Voici donc l'erreur

> D <- make_data(close)
Error in h(simpleError(msg, call)) : 
  ошибка при оценке аргумента '.data' при выборе метода для функции 'embed': argument ".data" is missing, with no default
 
Article intéressant sur RL. https://habr.com/ru/articles/349800/
Egalement une conversation intéressante dans le cometarium entre le créateur de CE fil et un autre membre.
 
mytarmailS #:
Article intéressant sur RL. h ttps:// habr.com/ru/articles/349800/
Egalement une conversation intéressante dans le cometarium entre le créateur de CE fil et un autre membre.

Le concept de RL n'est-il pas redondant pour les tâches d'échange ? Nous avons l'influence de l'environnement sur l'agent, mais existe-t-il une influence de l'agent sur l'environnement ? Il est probablement possible d'introduire artificiellement cette seconde influence, mais cela a-t-il un sens ?

Deux (ou trois) idées tirées de l'article ne sont pas du tout superflues pour nous : la fonction de perte doit refléter exactement ce dont nous avons besoin et doit être lisse (et monotone). Dans notre cas, il doit s'agir du bénéfice et il doit dépendre de manière lisse et monotone des paramètres du modèle.

La régularité d'un analogue du profit peut probablement être obtenue d'une manière ou d'une autre (par exemple, par quelque chose comme le lissage du noyau). Mais je doute beaucoup de la monotonicité.

Raison: