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

 
Здравствуйте! я новичок в машинном обучении и у меня возник вопрос, почему вы все стараетесь предсказать именно направление цены, либо зигзагом либо просто через приращение следующей свечи, в рынке же присутствует много хаоса, нужно в предсказание включать некий коридор в котором цена могла бы "погулять" . Мне кажется что более эффективным было бы брать за целевую результат торгов. Например во время обучения считаем идеальную кривую дохода и целевая будет обозначаться как не отклонение от идеала более чем на 15% например, или другой вариант, считать фактор востановления и чтоб он не падал ниже n ,  такие целевые будут более гибкими для рыночных данных.  И самое интересное как функцию в таком виде реализовать например для того же random forest"а ?
 
mytarmailS:
Здравствуйте! я новичок в машинном обучении и у меня возник вопрос, почему вы все стараетесь предсказать именно направление цены, либо зигзагом либо просто через приращение следующей свечи, в рынке же присутствует много хаоса, нужно в предсказание включать некий коридор в котором цена могла бы "погулять" . Мне кажется что более эффективным было бы брать за целевую результат торгов. Например во время обучения считаем идеальную кривую дохода и целевая будет обозначаться как не отклонение от идеала более чем на 15% например, или другой вариант, считать фактор востановления и чтоб он не падал ниже n ,  такие целевые будут более гибкими для рыночных данных.  И самое интересное как функцию в таком виде реализовать например для того же random forest"а ?
Здравствуйте. А вы можете графически изобразить эту целевую, чтобы было понятнее?
 
 

Здравствуйте! 

слева это просто типа цена, справа черным обозначена кривая идеального баланса (все что можно было заработать) , зеленым обозначен некий рендж (коридор) от кривой идеал. баланса за который мы не должны выходить в своей торговле, серым обозначен баланс типа реальной торговли)

 Так вот суть целевой не прогнозирование цены и целевой в виде вектора 11100001111100  , а нахождение некого состояния в котором серая линия не будет заходить за рамки зеленой 

 

Но как это сделать я сам не понимаю, по этому хочется  дискуссии )

 
mytarmailS:

Здравствуйте! 

слева это просто типа цена, справа черным обозначена кривая идеального баланса (все что можно было заработать) , зеленым обозначен некий рендж (коридор) от кривой идеал. баланса за который мы не должны выходить в своей торговле, серым обозначен баланс типа реальной торговли)

 Так вот суть целевой не прогнозирование цены и целевой в виде вектора 11100001111100  , а нахождение некого состояния в котором серая линия не будет заходить за рамки зеленой 

 

Но как это сделать я сам не понимаю, по этому хочется  дискуссии )

Угол наклона линии при торговле с ошибками будет меньше идеального. Вы изобразили торговлю серым цветом, где скорее всего увеличением лота осуществляется возврат к запланированному углу.

То есть это торговля на предсказание направления цены, но при накоплении ошибки система как-то начинает усиленно работать в плюс чаще.

Мы тут обсуждали три варианта целевой. 
1) закрытие сделки через интервал времени
2) закрытие сделки при пробитии уровня (тп/сл)
3) общее направление тренда, где закрытие сделки не явно определено. Может быть по времени или тп/сл.

При этом вариант 3 самый размытый с точки зрения критерия выхода.
 
Alexey Burnakov:
Угол наклона линии при торговле с ошибками будет меньше идеального. Вы изобразили торговлю серым цветом, где скорее всего увеличением лота осуществляется возврат к запланированному углу.

То есть это торговля на предсказание направления цены, но при накоплении ошибки система как-то начинает усиленно работать в плюс чаще.
Не понял ))  нет никаких лотов, нету никакой системы которая работает усилено),  это рандомно сгенерированая дата..  просто изобразил целевую какая должна работать лучше чем зигзаг по моему скромному мнению конечно, но как такое реализовать не знаю, думал может кто подскажет
 
mytarmailS:
Не понял ))  нет никаких лотов, нету никакой системы которая работает усилено),  это рандомно сгенерированая дата..  просто изобразил целевую какая должна работать лучше чем зигзаг по моему скромному мнению конечно, но как такое реализовать не знаю, думал может кто подскажет

Я вас тоже понять не могу.

Ваша серая кривая - это похоже на торговлю с переменным лотом, чтобы всегда возвращаться на линию с высоким углом наклона.

Это как мартин, у которого всегда один угол наклона линии торговли. 

В реальности так торговать не реально. При наличии ошибок (убыточных сделок) ваша реальная кривая будет гораздо более ближе к нулю.

Как целевка реализуется тоже не понятно. Такой вид временного ряда возможен только тогда, когда торговля возвращается всегда в плюс после накопления минусов. Это вряд ли возможно заложить в обучение, по крайней мере стандартно.

 

Да это не система никакая, а иллюстрация ))) нету там никакой торговли.

Извините я наверное плохо излагаю свои мысли 

вот код 

PRICE <- cumsum(rnorm(200))+1000

par(mfrow=c(1,2))

plot(PRICE,t="l",,lwd=2)

PD <- c(0,diff(PRICE))

BAL <- PD

for (i in 1:length(PD)){

  if(BAL[i] < 0) BAL[i] <- BAL[i]/-1

}

BAL <- cumsum(BAL)

lowBAL <- BAL - 50

plot(BAL,t="l",lwd=3)

lines(lowBAL,t="b",col="green")

realBAL <- BAL+rnorm(200,sd = 20)

lines(realBAL,t="l",col="grey")


 Давайте начнем сначала, есть стандартная целевая функция это вектор который обозначает направление движения , описать можно зигзагом или просто следующее закрытие свечи, вектор преобразовуют  как правило в 1110000111 или -1-1-11111

Так я умею делать, но по моему такие подходы ущербны

Я  предлагаю сделать так : пусть алгоритм во время обучения как то имитирует свою торговлю(серый график) и сравнивает с идеальным доходом который мог бы бить (черный график)  то есть алгоритм не пытается предсказать следующую цену а просто старается не заходить за зеленую линию.  Вот и все что пытался показать на графике.

Вопрос : возможно ли такое реализовать , ведь все алгоритмы которые я видел (neural,RF...) хотят в виде целевой вектор из 11100011

 
mytarmailS:

Да это не система никакая, а иллюстрация ))) нету там никакой торговли.

Извините я наверное плохо излагаю свои мысли 

вот код 

PRICE <- cumsum(rnorm(200))+1000

par(mfrow=c(1,2))

plot(PRICE,t="l",,lwd=2)

PD <- c(0,diff(PRICE))

BAL <- PD

for (i in 1:length(PD)){

  if(BAL[i] < 0) BAL[i] <- BAL[i]/-1

}

BAL <- cumsum(BAL)

lowBAL <- BAL - 50

plot(BAL,t="l",lwd=3)

lines(lowBAL,t="b",col="green")

realBAL <- BAL+rnorm(200,sd = 20)

lines(realBAL,t="l",col="grey")


 Давайте начнем сначала, есть стандартная целевая функция это вектор который обозначает направление движения , описать можно зигзагом или просто следующее закрытие свечи, вектор преобразовуют  как правило в 1110000111 или -1-1-11111

Так я умею делать, но по моему такие подходы ущербны

Я  предлагаю сделать так : пусть алгоритм во время обучения как то имитирует свою торговлю(серый график) и сравнивает с идеальным доходом который мог бы бить (черный график)  то есть алгоритм не пытается предсказать следующую цену а просто старается не заходить за зеленую линию.  Вот и все что пытался показать на графике.

Вопрос : возможно ли такое реализовать , ведь все алгоритмы которые я видел (neural,RF...) хотят в виде целевой вектор из 11100011

Спасибо. Я вас понял сразу. Просто это стандартно не реализуемо.

 

Возьмем random forest. Вы с этим методом машинного обучения, я предполагаю, знакомы.

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

 

Если вы хотите, чтобы машина учитывала отклонение реальной точности торговли от идеала, нужно, чтобы область решений подбиралась соответственно, а не на основе перекоса в классах. При этом нужно учитывать динамическое изменение отклонения то идеальной торговли, что также не реализуемо стандартно. ДЛя этого нужно машине в динамике подавать данные о совершенной торговли. Для этого нужно заново писать метод. Стандартные средства просто не могут это сделать.

 

Есть же градиента функции. Для стандартного леса градиент задается своим способом. Если нужно оптимизировать отклонение торговли от идеала, это будет совсем другой градиент. Я как-то не думаю, что лично могу его написать прямо на коленке. 

 
Спасибо за прояснения, теперь я вас отлично понял, а генетические алго тут могут помочь? вместо RF, у меня есть немало интересных идей по реализации целевой, хотелось бы попробовать их..