Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 47
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
1) Да возможно вы правы, но эта сеть умеет сама обучаться как принимать решения, те это не обычная классификация без учителя, а значит можно в ней реализовать ту концепцию о которой я давно уже говорил - можно ее учить не стандартной целевой в виде бай-сел-бай или 00011101011, а более абстрактно например тупо поставить условия типа: Сеть! мне пофиг как ты там будешь торговать но я хочу чтоб твой заработок в день составлял не мение 1% просадке 0.5% и она сама будет искать правила , комбинации для решения этой задачи. Если я где то тут не прав и наговорил ахинеи то поправьте меня для моего же блага )
Точно, не подумал об этом, всё правильно. Тогда лучше дать нейронной сети условие на максимизацию sharpe ratio (или recovery factor), и сделать в R что-то вроде простого форекс тестера на реальных котировках для теста модели для оценки эволюции. Но чудо само по себе не произойдёт, проблема переобучения останется, нужно по прежнему делить данные на тренировочную и тестовые выборки, делать кроссвалидации для финальной оценки модели при эволюции. Как работать с sharpe ratio при кроссвалидации я придумать по быстрому не смог, по-моему тут не получится убрать рандомные бары в тестовую выборку, ведь важна будет не точность на каждом баре, а сама непрерывная торговля, со всеми просадками, спредами и комиссиями от каждой новой сделки.
Они там вроде пакет для R готовят. Надо взять на заметку.
Пакет уже есть, только не знаю насколько процентов он готов, покачто на гитхабе. Вот более простой пример, продолжение статьи. Учат сеть извлекать корень.
http://gekkoquant.com/2016/07/17/rneat-square-root-neural-net-trained-using-augmenting-topologies-simple-example/
Дописал позже:
Сделал по примеру классификацию ирисов, код в атачменте (модель не смогла классификацию, я все классы заменил числами для регрессии, и результаты округлил к ближайшим числовым уровням. Наверное это можно было сделать как-то проще).
Для тренировки взял всего 50% данных, на валидации успех 95%, вполне хорошо. Судя по графику модель даже сама убрала первый предиктор.
Форекс сложнее ирисов :) , там результат будет гораздо хуже.
Ещё заметил что в 3 и 4 частях статьи используются разные функции для обучения модели.
3 часть для моделирования каких-либо динамических процессов, например модель может наблюдать за форекс графиком, и открывать/закрывать сделки в реальном времени.
4 часть - просто обучить модель на готовых примерах, и спрогнозировать результат
1) Точно, не подумал об этом, всё правильно. Тогда лучше дать нейронной сети условие на максимизацию sharpe ratio (или recovery factor), и сделать в R что-то вроде простого форекс тестера на реальных котировках
2) Ещё заметил что в 3 и 4 частях статьи используются разные функции для обучения модели.
3 часть для моделирования каких-либо динамических процессов, например модель может наблюдать за форекс графиком, и открывать/закрывать сделки в реальном времени.
4 часть - просто обучить модель на готовых примерах, и спрогнозировать результат
1) Абсолютно верно! именно это я и имел ввиду, прибыль/просадка просто для примера , я думал взять фактор восстановления, но и шарп в принципе ничем не хуже
2) Правильно заметили, в 4 статье автор уже создал что то типа пакета при чем по всем стандартам "R" те максимально просто есть модель - есть целевой вектор - через "predict" прогноз - но именно этот подход нам и не подойдет потому что все функции уже скрыты в пакете... Нужно разбираться с исходным кодом и писать все под себя, потому и говорил что помогите разобраться так как тут все гораздо сложнее чем с "готовым пакетом с примерами к нему" Мне кажется что даже функций из 3 части будет не достаточно для того что нам надо. Так что было бы просто сказочно если бы мы все включились в это дело
1) Абсолютно верно! именно это я и имел ввиду, прибыль/просадка просто для примера , я думал взять фактор восстановления, но и шарп в принципе ничем не хуже
2) Правильно заметили, в 4 статье автор уже создал что то типа пакета при чем по всем стандартам "R" те максимально просто есть модель - есть целевой вектор - через "predict" прогноз - но именно этот подход нам и не подойдет потому что все функции уже скрыты в пакете... Нужно разбираться с исходным кодом и писать все под себя, потому и говорил что помогите разобраться так как тут все гораздо сложнее чем с "готовым пакетом с примерами к нему" Мне кажется что даже функций из 3 части будет не достаточно для того что нам надо. Так что было бы просто сказочно если бы мы все включились в это дело
В сеть надо подать какую-то гладкую функцию. И нам расскажете ) а уж мы насоветуем.
Простите, что вмешиваюсь, но не только гладкую, но ещё и нормализованную.
Чтобы НС никогда не выходила за пределы известных ей областей.
Как-то так.
Не могу понять, чего вцепились в эти сети?
Ведь вышли за рамки убогих пакетов на просторы R! Так нет, старые грехи тянут и тянут ...
Возьмем к примеру caret. Там не только полторы сотни моделей, так еще куча полезных функций предварительной обработки,предсказания...
Так нет, сети и сети...
Не могу понять, чего вцепились в эти сети?
Ведь вышли за рамки убогих пакетов на просторы R! Так нет, старые грехи тянут и тянут ...
Возьмем к примеру caret. Там не только полторы сотни моделей, так еще куча полезных функций предварительной обработки,предсказания...
Так нет, сети и сети...
Так покажите же скорее ваш caret и полторы сотни моделей в деле! :)
Так покажите же скорее ваш caret и полторы сотни моделей в деле! :)
Кстати, я сам юзаю caret и получаю удовлетворительные результаты на форексе.
Пример кода из моих экспериментов:
Не могу понять, чего вцепились в эти сети?
Ведь вышли за рамки убогих пакетов на просторы R! Так нет, старые грехи тянут и тянут ...
Возьмем к примеру caret. Там не только полторы сотни моделей, так еще куча полезных функций предварительной обработки,предсказания...
Так нет, сети и сети...
Обычно библиотека может или очень много но средненько, или что-то одно и качественно. Caret это первый случай, с ней легко проверить в деле десятки моделей и сравнить результаты, но сложно что-то улучшить под свою задачу. Я упёрся в огромные сложности при отборе предикторов по моим правилам - caret умеет simulated annealing для их перебора (и генетику), но не умеет просто взять мою фитнесс функцию для оценки. Нужно создавать новую модель для caret с тренировочной, валидационной и фитнесс функциями; но caret при этом всё равно будет контролировать тренировочные и тестовые выборки данных по своим правилам, со своими кроссвалидациями.
Мне проще взять пакет GA или GenSA для перебора предикторов, и написать всего одну фитнесс-функцию в которой будет и создание модели, и кросс-валидация по нужным мне правилам.
Нейронка не хуже леса, у меня с ней результаты таки в плюсе, или в худшем случае просто без слива депозита. В силу разных алгоритмов, нейронка будет предпочитать другие предикторы чем лес, но все правила отбора предикторов полностью те же что и для леса.
Перенести нейронку в mt5 советник это дело на пару минут (сохранить веса из R в csv, прочитать их в советнике). Перенести лес в mt5 будет намного сложнее, поэтому я предпочитаю нейронку.
Ещё немного поэкспериментировал с RNeat, пришёл к выводу что с ней нельзя работать также как с обычными нейронными сетями.
1) в отличие от обычных моделей, обучение RNeat не использует исходные данные. Модель как-бы рандомно генерируется, улучшается, и только в конце тестируется на исходных данных. Обычно модели используют исходные данные, строят на них свою логику, а дальше на валидационной выборке можно узнать о том правильна ли логика модели, или она просто заучила исходные примеры. В отличие от остальных, RNeat вообще не способна запоминать исходные данные ибо она не знает о них, всё что модель знает это требуемые результаты и насколько она близка к ним.
2) кроссвалидация не поможет улучшить результаты фронттеста. Мы вроде все согласны что можно обучить обычную модель, провести пару кроссвалидаций, и как-то обработать ошибки на всех выборках для итоговой фитнесс оценки модели. Поскольку RNeat не знает исходных данных, для неё не важно в какой выборке находятся данные - тренировочной или тестовой, она будет подстраивать свою логику на нужный результат в любом случае. Теоретически она будет "обучаться" (точнее мутировать :) ) на всех выборках которые используются в фитнесс функции. Всё что можно - обучить модель до нужной точности, и надеяться что она не переобучилась, довольно рискованный подход для форекса. Кроссвалидацию можно использовать только после обучения, как финальную оценку возможного результата во фронттесте, и ни в коем случае не использовать эту валидационную выборку внутри фитнесс функции.