交易中的机器学习:理论、模型、实践和算法交易 - 页 1929

 
mytarmailS:

为促进个人谈话

您的选择

普通版

正如你所看到的,这些值是完全不同的,你可以自己检查一下


在我的模型中。

因此只有一列,但这并不重要。

===================UPD

伙计,你每次运行 umap_tranform 时它们都是不同的,它不应该是这样的

没有注意到。已经有很长一段时间了...

 
mytarmailS:

为促进个人谈话

您的选择

普通版

正如你所看到的,这些值是完全不同的,你可以自己检查一下


在我的模型中。

因此只有一列,但这并不重要。

===================UPD

伙计,你每次运行 umap_tranform 时,它们都是不同的,它不应该是这样的

通常情况下,(内置RNG的)种子被设置为某个值,以保证可重复性。如果没有,则使用随机。这个包可能也有一个 "种子"--检查一下。
 
elibrarius:
通常为了重复性,你将(内置HSS的)种子值设置为某个值。如果没有,则使用随机。也许这个包里也有种子--看看吧。

我想是的,但问题是,如果没有RMS,它应该总是一样的,在 "umap "模拟包中,结果总是一样的。

 
阿列克谢-维亚兹米 金。

对你来说,只有一个希望,就是你能学会r-ku)

install.packages("TTR","uwot")

clos <- d$X.CLOSE.

get.ind <- function(x,n=5){
  
  all_to.all_colums <- function(x,names){
    cb <- combn(ncol(x),2)
    res <- matrix(ncol = 0,nrow = nrow(x))
    for(i in 1:ncol(cb)){
      j1 <- cb[1,i]
      j2 <- cb[2,i]
      
      res <- cbind(res,   x[,j1] - x[,j2]  )
      colnames(res) <- paste0(names, 1:ncol(res))
    }
    return(res)}
  
  library(TTR)
  aroon  <- aroon(x,n)
  BBands <- BBands(x,n)            ;   BBands <- all_to.all_colums( BBands, names = "BBands")
  CCI    <- CCI(x,n)
  CMO    <- CMO(x,n)
  DEMA   <- diff(c(0,DEMA(x,n)))
  Donchian <- DonchianChannel(x,n) ;   Donchian <- all_to.all_colums( Donchian, names = "Donchian")
  MACD   <- MACD(x,n)
  moment <- momentum(x,n)
  PBands <- PBands(x,n)            ;   PBands <- all_to.all_colums( PBands, names = "PBands")
  RSI    <- RSI(x,n)
  SAR    <- diff(c(0,SAR(cbind(x,x,n))))   
  SMA    <- diff(c(0,SMA(x,n)))
  stoch  <- stoch(x,n)
  TDI    <- TDI(x,n)
  VHF    <- VHF(x,n)
  WPR    <- WPR(x,n)
  
  ind <- cbind.data.frame(aroon,BBands,CCI,CMO,DEMA,Donchian,
                          MACD,moment,PBands,
                          RSI,SAR,SMA,stoch,TDI,VHF,WPR)
  return(ind)
}
get.target <- function(x, change){
  zz <- TTR::ZigZag(x,change = change,percent = F)
  zz <- c(diff(zz),0) ; zz[zz>=0] <- 1 ; zz[zz<0] <- -1
  return(zz)
}

X <- get.ind(clos)
Y <- as.factor(get.target(clos,change = 0.001))


library(uwot)

train.idx <- 100:8000
test.idx <- 8001:10000

UM <- umap(X = X[train.idx,],
           y = Y[train.idx], 
            approx_pow = TRUE, 
            n_components = 3, 
            ret_model = TRUE,
            n_threads = 4 L, 
            scale = T)

predict.train <- umap_transform(X = X[train.idx,], 
                                model = UM, n_threads = 4 L, 
                                verbose = TRUE)

predict.test <- umap_transform(X = X[test.idx,], 
                                model = UM, n_threads = 4 L, 
                                verbose = TRUE)



library(car)

scatter3d(x = predict.train[,1], 
          y = predict.train[,2], 
          z = predict.train[,3],
          groups = Y[train.idx],
          grid = F, 
          surface = F,
          ellipsoid = F,
          bg.col = "black",surface.col = c(2,3))

有两个功能

get.ind

и

get.target

第一个创建了一套日期指标,第二个是 "之 "字形的目标。

你需要做的就是加载收盘价 为10k的数据,并将其写入变量close 中。

并获得你的umap与目标


https://github.com/jlmelville/uwot
 
mytarmailS:

对你来说,只有一个希望,就是你能学会P)

有两个功能

и

第一个创建了一套日期指标,第二个创建了一个 "之 "字形的目标。

你需要做的就是加载收盘价 为10k的数据,并将其写入变量close 中。

并得到你的umap与目标


https://github.com/jlmelville/uwot

非常高兴见到你,谢谢

我希望有更多的评论 :)

这里的问题是,如何将文件中的预测器与产生的目标同步?

 
Aleksey Vyazmikin:

非常高兴见到你,谢谢你

我希望有更多的评论 :)

这里的问题是如何将文件中的预测器与目标同步?

那么,由于目标是用价格建立的,它已经是同步的,如果预测器是用同样的场景建立的,那就意味着它们也是同步的)

或者我不明白这个问题。


我试着给变量命名,以便在没有注释的情况下,它们可以被理解。

 

一个书呆子的问题。


有三个变量A、B、C。某种条件是由他们手写的。比如说。

(A > B) && (A - B < C) && (A + 3 * C > 2 * B)


我想自动重现这个条件。我不需要找到它,因为我已经知道它。但我需要有例如几十个权重系数,这些系数的组合可以高概率地达到这个条件,当我在那里设置A、B、C(多项式或HC - 我不知道,因为我知道零)并得到原始条件。


我感兴趣的是,所需的函数有什么样的输入权重,有多少输入权重,这样的原始条件可以通过权重来重现?

 

所以,这些树是如何被训练成集群的,我告诉你,也给你看。

我们得到了以下类别识别的模型

历史上有一个相当准确的0.9196756的精确度--也就是说,集群的逻辑是相当可重复的。

然后我为每个群组训练了一个模型

第1组

第2组

第3组

第4组

所有集群的准确率都在0.53左右。

这就是模型在没有分裂成群的情况下的样子

准确度为0.5293815,与聚类的准确度基本相同。

如果我们比较集群的模型和整个样本的一个树状模型,我们看到集群树有更多的叶子,有目标1和-1的广义样本信息,这在理论上是好的。

让我们看看测试结果如何--首先让我们看一下训练期的情况

没有集群划分的模型。

具有划分集群的模型。

我们看到,没有聚类的模型准确度更高,但与聚类的模型交易更多,这使得财务表现更好。

现在我们来看看训练之外的样本。

而这里是我们的集群。

而没有集群的模型。

这里的情况似乎是相反的--当市场从4月开始抽搐时,大量的交易产生了不利的影响。

我决定在降序直方图上单独看一下集群模型的叶子,如果没有集群的话。


一共有6片无利可图的叶子(零目标删除--这是禁止进入的),原来我们的集群不对?

 
mytarmailS:

那么,由于目标是基于价格的,它已经是同步的了,如果预测器是基于同一场景的,它们也是同步的)

或者我不明白这个问题。


我试着给变量命名,以便在没有注释的情况下,它们可以被理解。

如何将一个带有预测因子和收盘价 的数据集加载到带有收盘价的列中,而不是使用R中生成指标的变量?

按照我的理解,既然目标是ZZ顶,那么带有预测器的部分样本应该被过滤掉,这里,所以为了给预测器提供信息,也应该过滤掉带有预测器的表格,还是什么?

 
fxsaber:

一个书呆子的问题。


有三个变量A、B、C。某种条件是由他们手写的。比如说。


我想自动重现这个条件。我不需要找到它,因为我已经知道它。但我需要有例如几十个权重系数,这些系数的组合可以高概率地达到这个条件,当我在那里设置A、B、C(多项式或HC - 我不知道,因为我知道零)并得到原始条件。


我感兴趣的是,所需的函数有什么样的,有多少输入权重,这样的原始条件可以通过权重再现?

或者

(A > B) && (A - B < C) && (A + 3 * C > 2 * B)

NS的输入是数值A,B,C的n次方(比方说,1000),输出是你对这些数值的公式的答案为0;1。试试吧。并查看分类误差以及模型对条件的再现程度。

如果你想看看到底是什么种类,并对其进行解释,你可以通过树木来进行。

变体2(如果第一个变体效果不好)--A、B、A-B、C、A+3*C、2B--变量,都和第一个变体中的变量一样,放在树上。你可以看到它的结构就像上面Alexey的图片一样