Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 279

 
Yerlan Imangeldinov:
Говорите прямо, сегодня воскресенье некуда торопиться, да и везде есть доля правды. Я не думаю что ваш метод прям шарлотанский, довольно хороший метод с фундаментальными основаниями.
что говорить? я ни о каком "своем" методе не говорил
 
mytarmailS:
что говорить? я ни о каком "своем" методе не говорил
Вы же о чем то смеетесь так расскажите и мне посмеемся вместе.
 
Yerlan Imangeldinov:
Вы же о чем то смеетесь так расскажите и мне посмеемся вместе.

спасибо, я уже насмеялся 

 
mytarmailS:

спасибо, я уже насмеялся 

Все можно объяснить, были бы понимание.
 
СанСаныч Фоменко:

Желательно увидеть результаты расчетов 

Ок, выкроится свободных пол дня, сделаю набросок расчетов. Но советую Вам самому проверить на собственных инструментах, так как проблема может крыться в мелких нюансах реализаций отдельных функций.  Например отображение ZZ в “категориальный вид”, может быть смещенно вправо на один бар, у меня не смещенно, где колено ZZ там и заканчивается изменения индикатора знака производной ZZ. Ну и ряд других подводных камней. Проверяется просто, где скор обучения выше, там и правильней, главное чтобы признаки были без подглядывания, а таргеты обязаны подглядывать, в этом их сущность. Но факт остаётся фактом, конкретно ZZ(его наклон) сразу таргет, так как показывает тренд с заглядыванием в будущее и идеальные направление позиции в данный момент.

 
toxic:

Ок, выкроится свободных пол дня..

в R это за 3 минуты можно сделать, так что если Санычу уж так сильно пруфа хочется то мог бы и потратить эти три минуты
 
mytarmailS:
в R это за 3 минуты можно сделать, так что если Санычу уж так сильно пруфа хочется то мог бы и потратить эти три минуты

Вы хоть поняли что сделать нужно за эти «три минуты»?  Если поняли то запишите видеоролик камтасией, где Вы это делаете за три минуты снуля, без ускорок и монтажа с первого раза.

 
toxic:

Вы хоть поняли что сделать нужно за эти «три минуты»?  Если поняли то запишите видеоролик камтасией, где Вы это делаете за три минуты снуля, без ускорок и монтажа с первого раза.

 вот...

только я на синусоиду еще шум наложил потому что чистая синусоида предсказуемая и модель в обоих случаях предсказывала без ошибки 

# создаем  синус
make.sin <- function(){
  t <- seq(0,50,0.1)
  s <- sin(t)
  return(s)
}
S <- make.sin()

noise <- rnorm(length(S))
S <- (S+noise)+1000

# хенкель для создания скользящего окна
hankel <- function(data, r=5) {
  do.call(cbind,
          lapply(0:(r-1),function(i) { data[(i+1):(length(data)-(r-1-i))]}))}
S <- hankel(S)

# делаем зиг и целевую с него
library(TTR)
make.zz <- function(ch=0.2){
  zz <- ZigZag(S[,ncol(S)], change = ch, percent = T, retrace = F, lastExtreme = T)
  n <- 1:length(zz);
  for(i in n) { if(is.na(zz[i])) zz[i] = zz[i-1]}
  dz<-c(NA,diff(zz))
  sig<-ifelse(dz>0, 1, ifelse(dz<0, 0, NA))
  return(list(label=sig , zz=zz))
}
Y <- make.zz()

layout(1:2)
# рисуем для наглядности синусоиду ,
# зигзаг на ней и внизу бинарный сигнал бай/сел
plot(S[,ncol(S)],t="l")
lines(Y$zz,col=4,lwd=2)
plot(Y$label ,t="l")

# подготовка данных
dat <- na.omit(  cbind.data.frame(var=S, label=Y$label) )

label <- as.factor(dat$label)
dat <- dat[,-ncol(dat)]

# тренировки модели
tr <- 1:400
ts <- 401:nrow(S)

library(randomForest)
# тренируем модель как есть те целевая
# не заглядывает в будущее на один шаг

rf1 <- randomForest(label[tr]~., dat[tr,])
pr1 <- predict(rf1, dat[ts,])

# теперь тренируем вторую модель которая
# уже пробует предсказать следующее значение

label2 <- label[-1]
dat2 <- dat[-nrow(dat),]

rf2 <- randomForest(label2[tr]~., dat2[tr,])
pr2 <- predict(rf2, dat2[ts,])

# проверяем результаты
library(caret)

#ошибка без попытки предсказать
confusionMatrix(pr1,label[ts])
#ошибка с предсказанием на шаг
confusionMatrix(pr2,label2[ts])


 в среднем без предсказания

Accuracy : 0.7895 

с предсказанием

Accuracy : 0.6702  

 

P.S. Я немного не внимательно прочитал, потому в предикторах  вместо моментума  у меня сама синусоида посл. 5 значений с наложенным сверху шумом  

 

mytarmailS:

 в среднем без предсказания

Accuracy : 0.7895 

с предсказанием

Accuracy : 0.6702  

 

Ну вот...

Скор на лесу на 10% больше без сдвига ZZ, что и требовалось доказать, так как ZZ будущее предсказывает в конкретный момент, не нужно его сдвигать.

 
toxic:

Ну вот...

Скор на лесу на 10% больше без сдвига ZZ, что и требовалось доказать, так как ZZ будущее предсказывает в конкретный момент, не нужно его сдвигать.

Ничего это не доказывает. 

Правило простое: при подготовке данных для обучения целевую сдвигаем влево ("в будущее") на один бар, вне зависимости от того как Вы  сгенерировали сигнал. Не догадываетесь почему? 

Если не знаете я распишу подробно.

Удачи 

Причина обращения: