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

 

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

вв 

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

Я пока отложил этот подход, но считаю его перспективным...

 

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

PRICE <- cumsum(rnorm(300))+1000
layout(1:2)
plot(PRICE,t="l",ylab = "цена" , xlab = "индексы",lwd=2)
Max <- max(PRICE)
Min <- min(PRICE)
range.vector <- seq(Min, Max, length.out=50)
H <- hist(PRICE, breaks = range.vector,
          xlab = "все цены которые есть в етом участке", 
          ylab = "сколько раз график был на одной и той же цене",col = 5)


 сс

Есть как бы надежда на то что сеть будет лучше понимать такое распределение(профиль)  нежели цену в сыром виде, ведь такой профиль можно сказать учитывает все проторговки что были, путем подсчета количества попаданий графика в одну цену, а проторговка это теоретически уровень ...  Нужно проверять... Сказано , сделано :) спасибо D.trader"у за то что помог разобраться с этим распределением

 

Я брал нарезку из 200 значений цены в скользящем окне, скалировал, центрировал , потом делал распредиление, подавал в ""RF"

выходы

H$breaks

H$counts

и последние 5 значений из самой нарезки из которой делалось распредиление, чтоб алгоритм мог ориентироваться по по последнему значению относительно значений из  H$breaks и H$counts, ведь цены то уже все пронормированы

 график 5мин, целевая как всегда, розвороты

 

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

вв 

иногда, входит просто шикарно, качество входов просто супер

аа 

ну и что интересно, нет жесткого слива депо на новых данных

ввв 


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

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

спасибо за внимание ;) 

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

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

Как минимум, нестационарность сырого распределения котира.
Ну я как бы просто чтобы не програмировать профиль рынка заменил его распределением, те нормальное распределение и его свойства тут не учитываться, или я не понял комментария? :)
 
mytarmailS:
Ну я как бы просто чтобы не програмировать профиль рынка заменил его распределением, те нормальное распределение и его свойства тут не учитываться, или я не понял комментария? :)
Не поняли.

Надо сделать не 960, 970, ...
А привести к стационарному виду, например, посчитав разницу от последней цены. Будет: -10, -5, 0, 5, ... 50. Иначе тна одном отрезке к вас будет одно среднее, на другом совсем иное. 900 на одном, 600 на другом. Ничего не будет работать вне выборки.
 
Alexey Burnakov:
Не поняли.

Надо сделать не 960, 970, ...

960, 970, ...  -- это цены , перед тем как делать распределение я каждую нарезку цен скалирую и центрирую (нормализирую) те привожу в стац. вид, просто если бы в примере на картинке я указал бы цены в виде от -2 до 2 то было бы не совсем наглядно для понимания

 
mytarmailS:

960, 970, ...  -- это цены , перед тем как делать распределение я каждую нарезку цен скалирую и центрирую (нормализирую) те привожу в стац. вид, просто если бы в примере на картинке я указал бы цены в виде от -2 до 2 то было бы не совсем наглядно для понимания

Ну тогда ок. Но если нет привязки к последней цене, то машине непонятно где находится ваше среднее. Вот если все цены вычесть из последней, то и среднее в ноль выходить будет и положение это среднего относительно цены зафиксировано.
 
Alexey Burnakov:
Ну тогда ок. Но если нет привязки к последней цене, то машине непонятно где находится ваше среднее. Вот если все цены вычесть из последней, то и среднее в ноль выходить будет и положение это среднего относительно цены зафиксировано.
Есть привязка:)

Выделил жирным синим цветом у себя в посте

 
mytarmailS:
Есть привязка:)

Выделил жирным синим цветом у себя в посте

Ну отлично. Мысль интересная в целом!

Но для полноты обучения не хватает динамической информации. Машина не понимает, что в этом распределении шло до и что после. Надо еще входы добавить.
 
Alexey Burnakov:
Ну отлично. Мысль интересная в целом!

Но для полноты обучения не хватает динамической информации. Машина не понимает, что в этом распределении шло до и что после. Надо еще входы добавить.

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

боюсь чтобы не было переобучения из за большего массива инфы, у меня модель RF та что на картинке с параметрами ntree =20 , mtry = 5 .

Если ставлю ntree =100 то модель вообще на новых данных не делает ни одной сделки, настолько она переобучаеться

 

=============================================

 

Нужно еще придумать как решить проблему  того что бы сеть видела графики которые были в прошлом по тех же ценах

 

ВОТ то что видит сеть сейчас 

дд 

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

лл

А мне почему то кажется что как раз это и есть ключевая информация  

А сеть про нее вообще ничего не знает

 
mytarmailS:


Нужно еще придумать как решить проблему  того что бы сеть видела графики которые были в прошлом по тех же ценах


Это большая проблема. Это то, что почти невозможно решить без ухудшения обучения.

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

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

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

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