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

 

для тех у кого есть 2 часа времени


 
mytarmailS:

для тех у кого есть 2 часа времени


О чем там?

 
mytarmailS:

для тех у кого есть 2 часа времени


Засерает мозги молодежи своими шизойдными фантазиями и ложными выводами.

 
mytarmailS:

Да нет же) ваш правильнее!

ведь сделка которая была открыта "ранее"   (открытие не попало в наш вектор )

то значит что и комиссия была снята "ранее" ,а не в текущем векторе

но это все , несущественные мелочи..

Это действительно мелочи, если не учитывать два момента. Первый - скорость исполнения:

cnt<-function(x){
    n <- 1:(length(x)-1)
    cnt <- 0
    for(i in n) {if(x[i]!=x[i+1]) {cnt<-cnt+1}}
    return(cnt)
}
cnt1 <- function(x){
    length(rle(c(x))$values)
}

sig <- rep(c(1,1,1,-1,-1,-1), 3000)

bench::workout({
    c <- cnt(sig)
    c1 <- cnt1(sig)
})
# A tibble: 2 x 3
  exprs            process     real
  <bch:expr>      <bch:tm> <bch:tm>
1 c <- cnt(sig)     15.6ms   9.21ms
2 c1 <- cnt1(sig)        0   1.15ms

Второй вариант в 15 раз быстрее. А если он участвует в фитнес функции которая вызывается десятки тысяч раз, то это значительные потери времени.

Второй момент. Все хорошо если у нас два состояния Buy/Sell/ Но как правило ТС генерирует три сигнала - Buy/Sell/hold (1, -1, 0). И тогда второй вариант не работает. А первый немного подправив 

sig <- rep(c(1,1,1,-1,-1,-1,0,0,0), 3000)
> length(sig)
[1] 27000
cnt<-function(x){
    n <- 1:(length(x)-1)
    cnt <- 0
    for(i in n) {if(x[i] != x[i+1] & x[i+1] != 0) {cnt<-cnt+1}}
    return(cnt)
}
bench::workout({
    op <- cnt(sig)
    op1 <- cnt1(sig)
})
# A tibble: 2 x 3
  exprs             process     real
  <bch:expr>       <bch:tm> <bch:tm>
1 op <- cnt(sig)     31.2ms  17.43ms
2 op1 <- cnt1(sig)        0   3.23ms
> op
[1] 5999
> op1
[1] 9000

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

 
Vladimir Perervenko:

Это действительно мелочи, если не учитывать два момента. Первый - скорость исполнения:

согласен полностью...

А есть способы обучать сети или леса фитнес функцией ?? 
 
mytarmailS:

согласен полностью...

А есть способы обучать сети или леса фитнес функцией ?? 

Фитнес функция вычисляет значение критерия оптимизации при оптимизационном процессе. Это не имеет отношения к обучению модели.

 

надо спарсить мультикласс катбуст в метак, чтобы добавить "не торговать"

диапазон стратегий увеличится

 

в фитнес функцию вставил новую функцию расчета баланса и учетом комисии  ...

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

Вот графики, прямо видно что когда сделок при обучении мало, то обучению не получается...

серым цветом , это обучение  ТРЕЙН  1500 точек

черным это ТЕСТ  500 точек

ВОТ тут было мало сделок, алго ничему не обучился, очень уж нискочастотно..


Прикольно на 2 дня вперед знать точки входа ))

Но лучше наверное переобучать постоянно, пока не знаю как это все протестировать

 
Vladimir Perervenko:

Фитнес функция вычисляет значение критерия оптимизации при оптимизационном процессе. Это не имеет отношения к обучению модели.

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

Вот то что я сейчас делаю , я же тоже по сути как бы модель создаю из гармоник

 
mytarmailS:

в фитнес функцию вставил новую функцию расчета баланса и учетом комисии  ...

стало по ходу хуже обучаться,......

может еще прикрутить валидацию какую то , чтобы все по классике

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