Aleksey Terentev: Сеть [64 GRU + 32 GRU + 2 Dense] в задаче классификации по модели OHLC -> Buy/Sell (7000 бар) на ~24 прогоне обучения дает 0.9 - 0.8 точности. И все это секунд за 30.
elibrarius: А как в торговле эти результаты? Каков прирост депозита в % за месяц/год? Если обучать не на 7000 бар, а на 100000?
До торговли дело не дошло. Занят автоматизацией.
Также процесс подбора модели нейро-сети достаточно щепетильный. Нужно учитывать вид активационных функций в слоях, функцию ошибки, метод обучения и правильную предподготовку выхода, а также кучу других нюансов МО. Все обучение может свести каждый сигнал очень быстро к 0 в диапазоне [-1;1].
Around September of 2016 I wrote two articles on using Python for accessing, visualizing, and evaluating trading strategies (see part 1 and part 2). These have been my most popular posts, up until I published my article on learning programming languages (featuring my dad’s story as a programmer), and has been translated into both Russian (which...
Есть примета что для обучения классификационной модели нужно отбалансировать число классов, чтоб количество обучающих примеров с классом "1" совпадало с количеством обучающих примеров с классом "2" (а лишние примеры удалить)
Я заметил похожее требование и к некоторым регрессионным моделям, но тут сложнее - число примеров с таргетом 0.001 должно совпадать с кличеством обучающих примеров с таргетом -0.001, количество примеров с таргетом 0.002 должно совпадать с количеством примеров с таргетом -0.002, итд
Вот скрипт чтоб сделать подобную балансировку -
#Подготовка таблички для обучения модели, тут рандомные значения
#таргет в колонке 11
trainTable <- cbind(matrix(runif(10000), nrow = 1000, ncol=10),
round(sample(c(-runif(480)*runif(480), runif(520)*runif(520))*0.1), 3))#рандомные значения для таргета, 3 знака после запятой.
#Позитивных значений на 40 больше чем негативных имитируя тренд в исходных ценах.
#Требуется взять для обучения модели только такие строки таблицы когда число позитивных и негативных значений будет равно и отбалансировано по уровням
target <- trainTable[,11]
target <- round(target, 3) #округление до определённой точности, тут 3 знака после запятой
targetFactor <- factor(target)
targetFactorLevels <- as.numeric(levels(targetFactor))
balancedIndexes <- c()
for(i in 1:length(targetFactorLevels)){
idx <- which(target == targetFactorLevels[i])
idxN <- which(target == -targetFactorLevels[i])
minLength <- min(length(idx), length(idxN))
balancedIndexes <- c(balancedIndexes, tail(idx, minLength), tail(idxN, minLength))
}
balancedIndexes <- sort(unique(balancedIndexes))
trainTableBalanced <- trainTable[balancedIndexes, ] #новая табличка на которой можно обучать модель
Когда данные показывают высокую волантильность и гэпы, что является типичным в большинстве высокочастотных финансовых временных рядов, прогнозирование становится еще более сложным. Используя высокочастотные данные обменного курса, мы показываем, что вейвлеты, которые устойчивы к высокой волантильности и гэпам, являются полезными прогнозистами в высокочастотных применениях, когда высокая волантильность - доминирующий признак, который влияет на оценку оценки, прогноз зоны или их обоих. Результаты указывают, что разложение временного ряда в гомогенные компоненты, которые затем используются в моделях прогнозирования временного ряда, очень важно. Различные компоненты становятся более полезными, чем другие для различных данных, связанных с режимом волантильности. Мы рассматриваем широкий спектр линейных и нелинейных моделей временного ряда для прогнозирования высокочастотного ряда приращения обменного курса. Наши результаты указывают, что, когда данные выводят на экран нестандартные признаки с высокой волантильностью, нелинейные модели опережают линейные альтернативы. Однако, когда данные находятся в низких диапазонах волантильности и для оценок и для прогнозов, простые линейные авторегрессивные модели преобладают, несмотря на то, что требуются значительные усилия по удалению шума в данных через вейвлеты.
Есть примета что для обучения классификационной модели нужно отбалансировать число классов, чтоб количество обучающих примеров с классом "1" совпадало с количеством обучающих примеров с классом "2" (а лишние примеры удалить)
Я заметил похожее требование и к некоторым регрессионным моделям, но тут сложнее - число примеров с таргетом 0.001 должно совпадать с кличеством обучающих примеров с таргетом -0.001, количество примеров с таргетом 0.002 должно совпадать с количеством примеров с таргетом -0.002, итд
Вот скрипт чтоб сделать подобную балансировку -
Что это значит по сути? Если несколько месяцев подряд доллар рос (был тренд), то выравниванием количества обучающих примеров, мы покажем НС, как будто все это время был флет. И обучится она соответственно на флет. Правильно ли это? Может пусть учится все-же на тренд?
Сеть [64 GRU + 32 GRU + 2 Dense] в задаче классификации по модели OHLC -> Buy/Sell (7000 бар) на ~24 прогоне обучения дает 0.9 - 0.8 точности. И все это секунд за 30.
Что в признаках и ауте?
"OpenHighLowClose -> Buy/Sell"
update: buy/sell сигнал уже выкладывал в этой ветке.
А как в торговле эти результаты? Каков прирост депозита в % за месяц/год? Если обучать не на 7000 бар, а на 100000?
До торговли дело не дошло. Занят автоматизацией.
Также процесс подбора модели нейро-сети достаточно щепетильный. Нужно учитывать вид активационных функций в слоях, функцию ошибки, метод обучения и правильную предподготовку выхода, а также кучу других нюансов МО. Все обучение может свести каждый сигнал очень быстро к 0 в диапазоне [-1;1].
Поэтому я и не спешу делиться результатами.
Нужна формула L2 нормализации. Не могу ее найти. Может кто поможет.
https://www.mathworks.com/matlabcentral/answers/65580-what-mean-l2-norm
https://www.tensorflow.org/api_docs/python/tf/nn/l2_normalize
https://rorasa.wordpress.com/2012/05/13/l0-norm-l1-norm-l2-norm-l-infinity-norm/
Спасибо. То что нужно.
А кто в R понимает? завтык в первом же примере с загрузкой котировок через quantmod, не могу нарисовать полученные котировки
https://www.r-bloggers.com/an-introduction-to-stock-market-data-analysis-with-r-part-1/
А кто в R понимает? завтык в первом же примере с загрузкой котировок через quantmod, не могу нарисовать полученные котировки
Выполнил код из статьи, всё заработало с первого раза.
Версия R 3.4.2, но не думаю что это особо важно.
Есть примета что для обучения классификационной модели нужно отбалансировать число классов, чтоб количество обучающих примеров с классом "1" совпадало с количеством обучающих примеров с классом "2" (а лишние примеры удалить)
Я заметил похожее требование и к некоторым регрессионным моделям, но тут сложнее - число примеров с таргетом 0.001 должно совпадать с кличеством обучающих примеров с таргетом -0.001,
количество примеров с таргетом 0.002 должно совпадать с количеством примеров с таргетом -0.002, итд
Вот скрипт чтоб сделать подобную балансировку -
When are wavelets useful forecasters?
Когда данные показывают высокую волантильность и гэпы, что является типичным в большинстве высокочастотных финансовых временных рядов, прогнозирование становится еще более сложным. Используя высокочастотные данные обменного курса, мы показываем, что вейвлеты, которые устойчивы к высокой волантильности и гэпам, являются полезными прогнозистами в высокочастотных применениях, когда высокая волантильность - доминирующий признак, который влияет на оценку оценки, прогноз зоны или их обоих. Результаты указывают, что разложение временного ряда в гомогенные компоненты, которые затем используются в моделях прогнозирования временного ряда, очень важно. Различные компоненты становятся более полезными, чем другие для различных данных, связанных с режимом волантильности. Мы рассматриваем широкий спектр линейных и нелинейных моделей временного ряда для прогнозирования высокочастотного ряда приращения обменного курса. Наши результаты указывают, что, когда данные выводят на экран нестандартные признаки с высокой волантильностью, нелинейные модели опережают линейные альтернативы. Однако, когда данные находятся в низких диапазонах волантильности и для оценок и для прогнозов, простые линейные авторегрессивные модели преобладают, несмотря на то, что требуются значительные усилия по удалению шума в данных через вейвлеты.
Есть примета что для обучения классификационной модели нужно отбалансировать число классов, чтоб количество обучающих примеров с классом "1" совпадало с количеством обучающих примеров с классом "2" (а лишние примеры удалить)
Я заметил похожее требование и к некоторым регрессионным моделям, но тут сложнее - число примеров с таргетом 0.001 должно совпадать с кличеством обучающих примеров с таргетом -0.001,
количество примеров с таргетом 0.002 должно совпадать с количеством примеров с таргетом -0.002, итд
Вот скрипт чтоб сделать подобную балансировку -
Если несколько месяцев подряд доллар рос (был тренд), то выравниванием количества обучающих примеров, мы покажем НС, как будто все это время был флет. И обучится она соответственно на флет. Правильно ли это? Может пусть учится все-же на тренд?