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

 
Maxim Dmitrievsky:

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

Нет, не так. Форвард просто показывает потенциальную прибыль в реальной торговле. Возьми лучший результат бектеста, и посмотри на его фронттест - это то что бы ты заработал.
Можно ведь даже для советника на машках получить хоть один прибыльный форвард при оптимизации, но такой советник всё равно сольёт как его ни крути. Генетика делает более 10000 подборов параметров, среди всегда случайно оказываются такие которые прибыльны и в бэктесте, и во фронттесте, но это просто случайность.

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


Maxim Dmitrievsky:

Еще не совсем понятно, лучше-ли для функции нормировки брать сразу массив в 5000 баров а не в 50, что бы она с самого начала нашла более правильные макс и мин, а не обновляла их с течением времени, потому что получится, что в начале участка тестирования будут подаваться не совсем корректно нормированные значения на вход, а потом все точнее и точнее

Да, будет точнее с 5000. А ещё при реальной торговле после запуски эксперта, перезапуска терминала, итд - значения мин и макс будут сбрасываться. Вся оптимизация собьётся. Депозит будет уничтожен.
Я тоже пробую что-нибудь поменять в коде чтоб была прибыль - я например взял просто чистый результат линейной регрессии без всяких дополнений, и домножил на 1000, потом прибавил 0.5. Результат будет почти всегда в [0;1] (если всё-таки выйдет за пределы - выведу ошибку в лог, и уменьшу множитель потом), центр всегда в 0.5, и всё это никогда не собьётся.


Maxim Dmitrievsky:

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

Наклон регрессии на стационарном ряде будет ноль, это искать не надо. В общем-то если хочется найти наклон текущего тренда на последних N барах - то линейная регрессия вполне ок, в коде всё уже и так хорошо.
С автокорреляцией как-то мутно будет, это ведь ни одно значение, а длинный вектор (корреляция с лагом 1, корреляция с лагом 2, корреляция с лагом 3, итд). Все эти значения в RNN не влезут. 

 
Dr. Trader:

Наклон регрессии на стационарном ряде будет ноль, это искать не надо. В общем-то если хочется найти наклон текущего тренда на последних N барах - то линейная регрессия вполне ок, в коде всё уже и так хорошо.
С автокорреляцией как-то мутно будет, это ведь ни одно значение, а длинный вектор (корреляция с лагом 1, корреляция с лагом 2, корреляция с лагом 3, итд). Все эти значения в RNN не влезут. 


Нет-нет, наклон регр считаем по норм графикам, а автокорреляюцию ищем по детренд, мб передавать как-то периодичность цикла от 0 до 1, типа в какой фазе цикла сейчас находимся

Т.е. на входе будем иметь направление в виде наклона регрессии и цикличность внутри этого направления

 
Maxim Dmitrievsky:

И как вам мысль использовать RNN типа как автоэнкодер для MLP?

В этой фразе что-то совсем не так :)


Автоэнкодер - такая нейронка которая может:
1) взять какой-то вектор (например верменной ряд), и на выходе выдать другой вектор, меньшей длинны. Эдакая компрессия данных с небольшой потерей.
2) Взять тот ранее полученный короткий вектор данных, и из него восстановить оригинальные данные (ну почти оригинальные, зависит от потерь на первом шаге). То бишь декомпрессия.

Пример из жизни - у нас есть картинка в формате BMP, формат который занимает много места на диске. Автоэнкодер берёт её пиксели, и возвращает нам новый вектор - пиксели картинки в формате JPG. Таже картинка, но занимает меньше места на диске, и немного помутневшая.
А потом можно при желании из JPG обратно получить BMP, но оригинальную яркость и красочность уже не вернуть.
JPG алгоритм в нейронку думаю не всунуть, пример чисто для наглядности.


Вот, а RNN принимает во первых не временной ряд а в данном случае уже RSI, и вернёт нам всего одно значение, по которому оригинальные цены уже никак не восстановить.



Maxim Dmitrievsky:

Нет-нет, наклон регр считаем по норм графикам, а автокорреляюцию ищем по детренд, мб передавать как-то периодичность цикла от 0 до 1, типа в какой фазе цикла сейчас находимся

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

А, понял.
 
Dr. Trader:

В этой фразе что-то совсем не так :)

Вот, а RNN принимает во первых не временной ряд а в данном случае уже RSI, и вернёт нам всего одно значение, по которому оригинальные цены уже никак не восстановить.

но мы же можем восстановить обратно показания 3-х рси :) он просто сжал их и выдал вероятность, не? )

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

 
Yuriy Asaulenko:
Тоже посмотрел. Имхо, это не наша предметная область.


Ну, почему же? Видел публикации для EURUSD для М1, куда уж дальше.

Смотреть надо в rugarch 

Этих GARCН туча. Имеют три группы параметров: сама модель, тип средней и вид распределения остатка. и все надо обосновывать, т.е. datamining во всей красе. По каждому из типов параметров последний писк. Тут выше обсуждается детрендирование. Так в GARCH детрендирование с помощью ARFIMA, т.е. с дробный дифференцированием (Херст).

 
СанСаныч Фоменко:


Ну, почему же? Видел публикации для EURUSD для М1, куда уж дальше.

Смотреть надо в rugarch 

Этих GARCН туча. Имеют три группы параметров: сама модель, тип средней и вид распределения остатка. и все надо обосновывать, т.е. datamining во всей красе. По каждому из типов параметров последний писк. Тут выше обсуждается детрендирование. Так в GARCH детрендирование с помощью ARFIMA, т.е. с дробный дифференцированием (Херст).


ну а как в сетку пихать гарч? так же некоторые показатели на вход. Ведь сеть сама должна создать модель внутри себя
 
Maxim Dmitrievsky:

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

Плюнь на сетку и не пихай приличные вещи в неприличные
 
СанСаныч Фоменко:

Плюнь на сетку и не пихай приличные вещи в неприличные

Да нет, заюзаться то надо ради интереса, придумать применение сеткам явно можно
 
Maxim Dmitrievsky:

Да нет, заюзаться то надо ради интереса, придумать применение сеткам явно можно
Все модели машинного обучения и НС чрезвычайно зависят от предикторов, которые надо подбирать к целевой функции. Все это очень много раз обсуждалось выше. Основные трудозатраты на dataminig, а сама сетка особого значения не имеет.
 
СанСаныч Фоменко:
Все модели машинного обучения и НС чрезвычайно зависят от предикторов, которые надо подбирать к целевой функции. Все это очень много раз обсуждалось выше. Основные трудозатраты на dataminig, а сама сетка особого значения не имеет.

ну я выше как раз пытался обсуждать варианты предикторов :) попробую, че