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

 
Mihail Marchukajtes:
Приветствую!!!! Пользуюсь LibVMR Но видать старой версией, потому как вылетает ошибка "Bad Data" . Я так понимаю что вышла новая версия. Где её можно скачать??? Если это возможно??

Свежачки и сырцы к ним сейчас распространяются через репозиторий BitBucket по ссылке: https://bitbucket.org/jprediction/jprediction/downloads

Название проекта тоже сменилось с libVMR на jPrediction

 
Yury Reshetov:

Не совсем понятно? Вы берёте цены в виде OHLC для паттернов или их какие-то преобразования?

Дело в том, что если взять OHLC, как есть, то похожий паттерн, но отстоящий на 1000 пунктов выше или ниже от сравниваемого будет по евклидову расстоянию отличаться сильнее, чем совершенно не похожий паттерн, но отстоящий на 10 пунктов выше или ниже от сравнивемого. Причём разница будет на два порядка, а соответственно и ошибка сравнения также будет двухпорядковая.

Когда мерял евклидом то все вектора нормализировались и ценрировались
 
mytarmailS:
Когда мерял евклидом то все вектора нормализировались и ценрировались
Каким образом?
 
mytarmailS:

Решение все же было найдено..... 

Решение состояло в том что если применить спектральный анализ к текущему вектору (тек. ценам) и разложить его на более простые составляющие то такие составляющие из за своей простой структуры могут быть более легко найдены в истории

s

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

library(Rssa)
s <- ssa(price)
r <- reconstruct(s)

par(mfrow=c(1,2))
plot(price,t="l")
plot(r$F2,t="l")
for(i in 3:50) {lines(r[[i]],col=i)}

 Для разложения я использовал метод "гусениа" или "ssa"   http://www.milanor.net/blog/wp-content/uploads/2014/07/SingularSpectrumAnalysisWithRssa.pdf

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

 

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

ss 

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

 

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

 

Dr.Trader

как там ваша нейросеть? натренировалась? 

RNeat? Нет, обучение очень медленное, фитнесс который определяет модель сейчас 0.018, растёт по одной сотой в день. Точность на тренировочных и валидационных данных сейчас 0.52, очень мало, но хотя бы в плюсе и без переобучения.
 
Yury Reshetov:
Каким образом?

ну просто перед тем как сравнивать два вектора  я скалировал функцией   " scale "

 

 scale(x = data , center = TRUE, scale = TRUE )

 
Yury Reshetov:
Каким образом?
Интересно скачал версию 6.0 потому как 5.0 не сохраняет и не создаёт текстовый файл, так вот не понятно почему при тренировке одни показатели ошибок, а в текстовом файле значения совершенно другие???
 
Mihail Marchukajtes:
Интересно скачал версию 6.0 потому как 5.0 не сохраняет и не создаёт текстовый файл, так вот не понятно почему при тренировке одни показатели ошибок, а в текстовом файле значения совершенно другие???
В текстовом файле характеристики для бинарного классификатора, а после тренировки для тернарного. Там две сетки и если их показания совпадают, то получаем утвердительный ответ, если различаются то выдаёт прочерк. Бинарные классификаторы выдают всегда только утвердительные ответы, независимо от того, были ли данные по схожим паттернам в выборке или нет. Тернарный классификатор иногда не даёт утвердительных ответов, если в обучающей выборке не было похожих паттернов.
 
Dr.Trader:
RNeat? Нет, обучение очень медленное, фитнесс который определяет модель сейчас 0.018, растёт по одной сотой в день. Точность на тренировочных и валидационных данных сейчас 0.52, очень мало, но хотя бы в плюсе и без переобучения.
Оо  52 это уже лучше чем 50 , на сколько я помню в прошлый раз было 0,017 получается одна сотая поднимает точность прогноза на 2% )  , я думаю если сеть достойна внимания то ее лучше на СИ переписать, держите меня в курсе, мне крайне интересно...
 
mytarmailS:
Оо  52 это уже лучше чем 50 , на сколько я помню в прошлый раз было 0,017 получается одна сотая поднимает точность прогноза на 2% )  , я думаю если сеть достойна внимания то ее лучше на СИ переписать, держите меня в курсе, мне крайне интересно...

Фитнесс может вырасти просто потому что модель улучшила свою топологию и выкинула пару нейронов, при той-же точности.
Насколько я понял по комментариям в коде - это порт с Lua. А Lua это тоже порт, потому что оригинал и так уже был на c++: http://nn.cs.utexas.edu?neat
Порт с порта это неудачно, много ненужных действий, лучше бы автор RNeat взял C++ код за основу, и применил существующие генетические пакеты R для эволюции сети.