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

 
Vizard_:

Я сейчас сделал адекватный подбор параметров модели, обучил, спрогнозировал, теперь получил 0.69102. С прошлым датасетом было 0.69121, на этой неделе лучше, но это за счёт случайности, модель по сути та-же самая. На следующей неделе меня опять куда-то на +- 0.0002 кинет.

Для меня пока-что в этом предел, у меня модель обучена на исходных 21 предикторах, без всяких трюков. Для форекса я например с терминала выгружаю разные индикаторы, подбираю их параметры, итд. Т.е. из 4 предикторов (ohlc) получаю тысячи, потом их отсеиваю, оставляю всего штук тридцать, и обучаю модель.
Мне по идее надо как-то из этих 21 numerai предикторов тоже наделать тысячи, и поотсеивать лишнее. Вот только индикаторы работают с ohlc рядами, а не с с такими равномерно распределёнными, надо подумать как бы из них нагенерировать побольше новых. 

Для проверки отправил им ещё файлик со всеми прогнозами=0.5, оценка = 0.69315 , можно использовать для сравнения.
 
Vizard_:
Нет....

понял, тогда прекращаю засерать ветку этой темой

Dr.Trader:

такими равномерно распределёнными, надо подумать как бы из них нагенерировать побольше новых. 

может скользящее окно добавить?
 
Dr.Trader:

Я сейчас сделал адекватный подбор параметров модели, обучил, спрогнозировал, теперь получил 0.69102. С прошлым датасетом было 0.69121...

а у меня слетело всё, хуже стало, 0.69120 минимум на RF, пробовал MLP но вообще фигня выходит

 

ЗЫ смотрю тут трут посты  по какому то странному алгоритму((

 
Vizard_:
Да все подобные ветки беспонтовы и засраны))) И все кончаются одинаково. Это нормально + и форум уже давно барыжный. А эксперемент можно провести.
Тем более что положительные моменты в нем тоже есть. Просто посмотри потом как деревья строятся на рандомах и из вр. Как будет выглятить модель-тс
на разных рандомах. И пр. и т.д. Я лет десять назад совал в сетки и мэи и астроиндюки, и данные о приливах в разных портах мира, и меграционные пути
животных и пр. что нормальному человеку и в голову не придет))) Пиши и юзай че хочешь, просто с выводами не торопись.

#Сгенирировать рандом, не менее 10К наблюдений
write.csv2(x, file = "D:/1.csv", row.names = FALSE, quote = FALSE)   #запись в файл 1.csv на диск D:/

-----------

Какое окно))) Кстати этот челенж хоть и беспонтовен, но есть и интересные моменты. Например как участники закидывают колибровочные данные,
что позволяет строить предположения о используемой предобработке данных авторами задания...

С форестом уже давно проехали, он был только в первых двух постах, потом я писал что начал отбирать паттерны "своим способом" те тем который когда то описывал когда ищутся хорошие кластера - они же паттерны..

прикрепляю модель.

Это обученый кохонен 

подаете в него последние 10 значений median price

MD <- median price

MD <- scale(MD,T,T)  # нормализируете именно так как здесь

 library(SOMbrero)  # запускаем пакет с кохоненом

MD[is.na(MD)] <- 0   # заменяем возможные НА-шки

pred <- predict(model,MD)  предсказываем кластер

 

если кластер будет под номером 41 (pred==41)то ето покупка, стоп тейк по вкусу...

попробуйте, а вдруг и у вас сработает 

Файлы:
 

Думаю но не могу придумать)) , У кого какие мысли....

есть у нас две свечных конфигурации 

 

я 

По картинке  видно что по сути свечной паттерн то один и тот же, разница в волатильности , как можно привести матиматически  эти два паттерна к эдиному целому?

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

как на картинке

с

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

close-open ,   close[-1]-open[-1]  ,   close[-2]-open[-2]  

 Получим график как на картинке "1", все четко и понятно, все что выше нуля это белая свеча все что ниже нуля это черная свеча.

Теперь осталась решить проблему волатильности(ту что всплыла на самом первом графике), нужно привести график в какой то единый диапазон те нормализовать, то что на картинке "2" но после нормализации мы получаем новую нулевую ось, которая уже не несет никакой информации, МО с такой нормализацыей уже не будет знать белая это свеча или черная

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

 

 


 
mytarmailS:

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

Я это так делал - 

Всего у вас есть 8 точек на графике - O(0), H(0), L(0), C(0), O(1), H(1), L(1), C(1)
Дальше, этим точкам O(0), H(0), L(0), C(0), O(1), H(1), L(1), C(1) можно присвоить порядковые значения 1,2,3,4,5,6,7,8
OHLC - open, high, low, close
(0) и (1) - номер бара

Эти точки можно расположить по убыванию цены на графике, от большей до меньшей - H(0), H(1), O(0), C(1), L(0), C(0), O(1), L(1)

И теперь  H(0), H(1), O(0), C(1), O(0), L(0), O(1), L(1) можно превратить в вектор (2, 6, 1, 8, 3, 4, 1, 7), а его уже и нормализовать в 0-1 при желании.

И получится что оба графика будут иметь одинаковый "паттерн" (2, 6, 1, 8, 3, 4, 1, 7), который описывает порядок в котором эти точки идут вниз на графике

К сожалению мне из этого не удалось выжать выгоды. Имея всего 2 свечи может быть 40320 паттернов. Три свечи = (4*3)! = 479001600 паттернов, итд. Реально будет поменьше, т.к. например H всегда больше O,H,L в этой-же свече; а C меньше. Но число паттернов всё равно огромно.  

Т.е. можно любой конфигурации свечей присвоить некий вектор чисел, и по нему распознавать такие-же конфигурации в будущем. Но, число возможных конфигураций полученных таким способом настолько огромно, что найти какой-то граальный паттерн после которого цена всегда пойдёт вверх/вниз - наверное невозможно. В стратегии "фракталы Билла Вильямса" например паттерн состоит из 5 свечей, и торгуется только пара комбинаций из всех миллиардов возможных.

 

Вот на картинке немного наглядней, для 3 свечей например.

 

 
Vizard_:

Спасибо не надо))) Я лишь предложил рандомы с разных машин...

 Вы не поняли идеи, шум я и себя могу сгенерировать несколько раз и не надо по разным машинам его пихать)

Суть идеи в том что.. 

Я тренирую МО на развороты, в истории котировок разворотов не так уж и много...  Котировки движутся волнообразно(волнами) и по сути если подумать то количество вариантов для разворота вполне конечно, это разные мутации головы и плечей, двойных вершин, тройных вершин и.т.п и эти фигуры появляються не от того что они имеют какое то мифическое влияние на рынок а по тому что в волновом движении сами варианты разворота конечны, либо так, либо, так либо так и никак иначе и по сути если мы построим график что рынка, что кумулятивного рандома, или еще чего то подобного с волновой структурой то мы увидим что развороты происходят одинаковыми фигурами, те и в рандоме будут те же головы и плечи...

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

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

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

 

Vizard_:

как данные  нормализировать так чтобы и "ноль был честным" и проблему с волатильностю устранить???    В %

Dr.Trader:

Я это так делал - 

 Спасибо, буду пробовать....

 
Dr.Trader:

Я это так делал...........

Если я все правильно понял то метод слишком груб..

Давайте возьмем самый простой паттерн из одной свечи

у нас три три варианта 

ч 

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

O<H , O<C , O>L 

H>O , H>C , H>L

C>O , C>L , C<H

L<O , L<C , L<H

если я правильно понял то ваш метод класифицирует все три свечи как один паттерн, а это не есть гуд

 
Vizard_:

как данные  нормализировать так чтобы и "ноль был честным" и проблему с волатильностю устранить???    В %

как именно вы считали разность? 

например разность между хайем и злоузом 

а = хай

б = клоуз 

(a*100)/б    так ?

 

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

 
mytarmailS:

Если я все правильно понял то метод слишком груб.

Попробуйте описывать свечу двумя числами, каждое из которых в диапазоне [-1.0; 1.0]. Это положение O и С отностельно H и L. 
Из Вашего примера получится примерно так :
1. [-0.8; 0.8]
2. [-0.2; 0.2]
3. [-0.9; -0.1]
Причина обращения: