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

 
Dr.Trader:

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

 
Dr.Trader:
...

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

Не Вы ли, не так давно, в ветке где обсуждался оптимизатор МТ, демонстрировали свой супер-алгоритм на R? Он разве не справляется?
 
Dr.Trader:

Ответ не так прост. Вот например один способ, с нейронкой, но нужно понимать как работает нейронка, какие в ней формулы итд. 

Допустим есть простенькая нейронка...

код

Код выше можно засунуть в оптимизатор... 

Какие то Вы страсти рассказываете)))

А чем бэкпроп не подошел, если не секрет? Точнее, в случае одного слоя и одного таргета, всё сильно упрощается,  итеративно нужно из весов вычитать ошибку умноженную на интпут до сходимости, дельта правило называется, или правило Хэба, точно не помню. Wt = Wt-1 - lernrate*error*Input, в общем обычный градиентный спуск

 
Andrey Dik:
Не Вы ли, не так давно, в ветке где обсуждался оптимизатор МТ, демонстрировали свой супер-алгоритм на R? Он разве не справляется?

Я, да, нет.

toxic:

А чем бэкпроп не подошел, если не секрет?

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

А этот код было ответом на вопрос что делать если цель не определена и просто хочется научить нейронку торговать в плюс. Пускай она сама разбирается где лучше купить, где лучше продать, лишь бы профит в плюс шёл.
Ну типа даём ей приросты ohlc по барам, получаем предсказания что делать на следующем баре, по предсказаниям симулируем торговлю, и находим шарп ратио торговли. Этот шарп ратио - единственная оценка которая даётся нейронке на всём наборе исходных данных.
Оптимизатор будет оптимизировать веса нейронки так чтоб шарп ратио рос. 
Вот если найти градиенты весов по отношению к щарп ратио - можно и градиентый спуск делать, будет гораздо лучше чем вслепую веса менять.

 
Dr.Trader:

Я, да, нет.


Неужели среди сотен тысяч пакетов в R нет такого, какой бы справился с задачей с удовлетворительным результатом?
 
Andrey Dik:

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

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

 
Dr.Trader:

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

Напомнило старый прикол автомобилистов:

- Что, плохо машина заводится?

- Нет, хорошо заводится, но долго.

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



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

скачал с онады исторические данные баланса покупателей против продавцов от сюда https://www.oanda.com/forex-trading/analysis/historical-positions

построил графики и посчитал корреляцию баланса с ценой

oanda <- read.csv("C:/User................OANDA_historical_position_ratios_data_EUR_USD.csv")

layout(1:2)
plot(oanda$price ,t="l" , main = "EUR")
plot(oanda$pct_long ,t="l" , main = "balanse",col=2)
abline(h = 50)

cor(oanda$pct_long  , oanda$price)

фы

 коэффициент корреляции -0.76  

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

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

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

Historical Forex Position Ratios | Currency Trend Analysis | OANDA
Historical Forex Position Ratios | Currency Trend Analysis | OANDA
  • www.oanda.com
The following graph shows the historical trend of long-short positions on fxTrade platform alongside the market price for the selected currency pair and time period. Note the Net Position graph is calculated by subtracting the percentage of short positions from long positions. For example, a net position of +20% for EUR/USD means percentages of...
 
СанСаныч Фоменко:

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

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

Определяющим является определение целевой и ее предикторов.

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

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

  • предиктор должен иметь отношение к целевой переменной  - предсказательную способность для целевой переменной
  • предиктор должен опережать целевую переменную

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


В очередной раз призываю сосредоточится на целевой переменной и обоснованию предикторов для этой конкретной целевой переменной.  

Согласен. 

 
Dr.Trader:


А этот код было ответом на вопрос что делать если цель не определена и просто хочется научить нейронку торговать в плюс. Пускай она сама разбирается где лучше купить, где лучше продать, лишь бы профит в плюс шёл.
Ну типа даём ей приросты ohlc по барам, получаем предсказания что делать на следующем баре, по предсказаниям симулируем торговлю, и находим шарп ратио торговли. Этот шарп ратио - единственная оценка которая даётся нейронке на всём наборе исходных данных.
Оптимизатор будет оптимизировать веса нейронки так чтоб шарп ратио рос. 
Вот если найти градиенты весов по отношению к щарп ратио - можно и градиентый спуск делать, будет гораздо лучше чем вслепую веса менять.

Честно говоря не пробовал, почему то сразу это показалось какой то алхимией, не очень хорошей идей, для однослойного персептрона с небольшим количеством инпутов может быть и что то будет находиться жутко медленно, многослойный точно не получится, ИМХО толку мало. Кроме того прибыльность ТС на прямую зависит от прогнозирования суммарного ретурна на N баров в перед, ничем нельзя исправить плохое прогнозирование, целиком стратегию оптимизировать куда больше риска обмануть себя.

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