Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 88
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Юр, сделай нормальную версию проги(или модернизированную) для людей)))
1.Пусть читает стандартные файло такого типа - шапка(с кавычками и без), данные, разделители пусть хавает зпт, тчк.зпт, табуляцию. Пример-
"Date";"V1";"A77";"V23A";"Целевая"
01.01.2000;4.999995E-03;1.499891E-03;-2.000213E-03;-5.000234E-03;1
2.Пусть для модели используется лишь 10 входов, но загружать сделай чтоб много было можно, потом
в отдельной вкладке или крыжики ставишь(выбираешь входа) или еще как.
3. Без нормализации!(или отключаемую), так как если данные изначально центрированы относительно 0, после преобразования
х-х.мин/....(или какое там у тебя) - улетают)))
4.Выкини рандомность(или отключаемую), пусть просто делит на две части данные, считает по порядку и выводит % удачных предсказаний для 1 (для 0 не надо)
5.Замутил значимость входов - гуд!
6.Пусть помимо той формулы что выводится, выводится и полная!, то есть сейчас
double x2 = 2.0 * (v5 + 1.0) / 2.0 - 1.0;
double decision = -0.2632437547312642 -0.2634178652535958 * x2
+ 0.05267978803936412
надо -
Имя целевой = -0.2632437547312642 -0.2634178652535958 * вставить конструкцию х2= (2.0 * (v5 + 1.0) / 2.0 - 1.0)
+ 0.05267978803936412
получится -
Имя целевой = -0.2632437547312642 -0.2634178652535958 * (2.0 * (v5 + 1.0) / 2.0 - 1.0)
+ 0.05267978803936412
То есть получится мало мальски пригодная приблуда для быстрых исследований. Потом еще можешь вставить и пр., простые (не жадные)
алгоритмы, с возможностью выбора... В противном случае приблуда малопригодна. Пока файл отредактируешь, то, се... проще другое заюзать...
А где 7 версия?
Так себе - просто мозгов и времени не хватает.
Начинать надо с целевой переменной, а потом под нее подбирать предикторы, причем по смыслу, а потом перепроверять математикой, как-то так. По любому процесс муторный и у меня не формализуемый.
4.Выкини рандомность(или отключаемую), пусть просто делит на две части данные, считает по порядку и выводит % удачных предсказаний для 1 (для 0 не надо)
Если пытаться использовать jPrediction для Форекс, то это пожалуй главное что нужно добавить. Есть множество моделей которые могут поделить данные рандомно на две части, затем обучиться на первой, и показать хорошие результаты также на второй части. Но большинство этих моделей будут неэффективны на новых данных. В Форексе нету константных зависимостей, хорошие результаты на рандомной тестовой выборке не гарантируют хороших результатов на новых данных. Единственный способ убедиться что модель подходит для форекса - валк форвард тест:
Модель должна показать хорошую предсказательную способность на данных отмеченных красным цветом. Сейчас в jPrediction такой тест приходится делать вручную, вводя данные заново для каждого проверочного примера, это не годится для серьёзной работы.
И я согласен что лучше показывать оценку только для тестовых данных, чем общую за обучение+тест.
Все оценки которые сейчас выдаёт jPrediction - неадекватны для форекс, и только вводят в заблуждение.
вот кстати как делается валк форвард в пакете caret для R:
http://topepo.github.io/caret/splitting.html (раздел Data Splitting for Time Series)
Модель будет обучаться на первых 1000 примерах, затем тестироваться на примерах 1001-1300. Затем сделается сдвиг на 300, обучение на 301-1300, тест на 1301-1600, итд, пока обучающие примеры не кончатся
Юр, сделай нормальную версию проги(или модернизированную) для людей)))
1.Пусть читает стандартные файло такого типа - шапка(с кавычками и без), данные, разделители пусть хавает зпт, тчк.зпт, табуляцию. Пример-
2.Пусть для модели используется лишь 10 входов, но загружать сделай чтоб много было можно, потом
в отдельной вкладке или крыжики ставишь(выбираешь входа) или еще как.
3. Без нормализации!(или отключаемую), так как если данные изначально центрированы относительно 0, после преобразования
х-х.мин/....(или какое там у тебя) - улетают)))
4.Выкини рандомность(или отключаемую), пусть просто делит на две части данные, считает по порядку и выводит % удачных предсказаний для 1 (для 0 не надо)
5.Замутил значимость входов - гуд!
6.Пусть помимо той формулы что выводится, выводится и полная!, то есть сейчас
7. А где 7 версия?
Если кому что не шибко нравится в jPrediction, то проект открытый с Open Source под лицензией GNU GPL и делать от него форки, чего то там менять и допиливать не только не запрещается, но в какой-то степени даже приветствуется.
Если пытаться использовать jPrediction для Форекс, то это пожалуй главное что нужно добавить. Есть множество моделей которые могут поделить данные рандомно на две части, затем обучиться на первой, и показать хорошие результаты также на второй части. Но большинство этих моделей будут неэффективны на новых данных. В Форексе нету константных зависимостей, хорошие результаты на рандомной тестовой выборке не гарантируют хороших результатов на новых данных. Единственный способ убедиться что модель подходит для форекса - валк форвард тест:
Модель должна показать хорошую предсказательную способность на данных отмеченных красным цветом. Сейчас в jPrediction такой тест приходится делать вручную, вводя данные заново для каждого проверочного примера, это не годится для серьёзной работы.
И я согласен что лучше показывать оценку только для тестовых данных, чем общую за обучение+тест.
Все оценки которые сейчас выдаёт jPrediction - неадекватны для форекс, и только вводят в заблуждение.
вот кстати как делается валк форвард в пакете caret для R:
http://topepo.github.io/caret/splitting.html (раздел Data Splitting for Time Series)
Модель будет обучаться на первых 1000 примерах, затем тестироваться на примерах 1001-1300. Затем сделается сдвиг на 300, обучение на 301-1300, тест на 1301-1600, итд, пока обучающие примеры не кончатся
Все оценки которые сейчас выдаёт jPrediction - неадекватны для форекс, и только вводят в заблуждение.
Это бездоказательные голословные утверждения, т.е. то что в простонародье именуется брехнёй. Чтобы доказать эффективность Walk Forward, будьте добры представить результаты сравнительных исследований моделей полученных в jPrediction и моделей полученных после Walk Forward, в таком виде, чтобы их можно было перепроверить на "вшивость". Если такие результаты подтвердят Ваши слова, то тогда появится смысл заменить алгоритм тестирования, который реализован в данный момент в jPrediction на Walk Forward.
Уже неоднократно сталкивался с тем, что казалось бы "очевидные" идеи после их реализации и проверки опытом, оказывались "пустышками". Результативность даёт только очень малая часть идей и зачастую только после дополнительной правки "напильником". Потому что в идеях упускаются детали. А дьявол сидит в этих самых деталях.
Линус Торвальд (создатель ядра Linux) не устаёт повторять: "Теория рано или поздно встречается с практикой. И практика всегда оказывается критерием истины. Всегда!".
Дополнительная проблема Walk Forward заключается в том, что мы получаем множество моделей на каждом из optimization period. Какую из этих моделей необходимо оставить в качестве рабочей и по какому критерию её отбирать?
Это бездоказательные голословные утверждения, т.е. то что в простонародье именуется брехнёй. Чтобы доказать эффективность Walk Forward, будьте добры представить результаты сравнительных исследований моделей полученных в jPrediction и моделей полученных после Walk Forward, в таком виде, чтобы их можно было перепроверить на "вшивость". Если такие результаты подтвердят Ваши слова, то тогда появится смысл заменить алгоритм тестирования, который реализован в данный момент в jPrediction на Walk Forward.
Уже неоднократно сталкивался с тем, что казалось бы "очевидные" идеи после их реализации и проверки опытом, оказывались "пустышками". Результативность даёт только очень малая часть идей и зачастую только после дополнительной правки "напильником". Потому что в идеях упускаются детали. А дьявол сидит в этих самых деталях.
Линус Торвальд (создатель ядра Linux) не устаёт повторять: "Теория рано или поздно встречается с практикой. И практика всегда оказывается критерием истины. Всегда!".
Дополнительная проблема Walk Forward заключается в том, что мы получаем множество моделей на каждом из optimization period. Какую из этих моделей необходимо оставить в качестве рабочей и по какому критерию её отбирать?
Не стоит ссориться. Мы работаем над очень сложным объектом исследования. Тут есть много допущений. И эти допущения приводят к переобученности и сливу вне выборки.
Два простых правила: обмануть рынок, не обмануть себя.
Walk Forward конечно хороший метод. Но там же основные параметры это глубина обучения и длина теста. При этом (!!!) если эти параметры перебрать так, что результат на форварде станет лучшим, мы переобучим Walk Forward! поэтому даже для такого хорошего метода нужны данные вне выборки. То есть на одном большом куске многократно делаем оптимизацию Walk Forward. На другом не пересекающемся куске пробуем лучшие параметры Walk Forward на "обучении" и проводим еще один раз полный волк форвард, но делаем это однократно. Если результат хороший, значит заложенная модель улавливает зависимости. Если результат плохой, значит мы просто переобучили Walk Forward на не очень хорошей модели.
Такая же проблема есть и при однократном тестировани на отложенной выборке. Я сейчас над этим работаю: освобождаю свои результаты от переобученности. Результаты на кроссвалидации должны коррелировать с отложенной выборкой для финального тестирования. При этом отбор лучшей модели по кроссвалидации даст приближенно лучшие результаты вне выборки. Иначе - если корреляция отсутствует или отрицательная - у нас неадекватная для форекса модель, которую нужно менять.
Это бездоказательные голословные утверждения, т.е. то что в простонародье именуется брехнёй. Чтобы доказать эффективность Walk Forward, будьте добры представить результаты сравнительных исследований моделей полученных в jPrediction и моделей полученных после Walk Forward, в таком виде, чтобы их можно было перепроверить на "вшивость". Если такие результаты подтвердят Ваши слова, то тогда появится смысл заменить алгоритм тестирования, который реализован в данный момент в jPrediction на Walk Forward.
Уже неоднократно сталкивался с тем, что казалось бы "очевидные" идеи после их реализации и проверки опытом, оказывались "пустышками". Результативность даёт только очень малая часть идей и зачастую только после дополнительной правки "напильником". Потому что в идеях упускаются детали. А дьявол сидит в этих самых деталях.
Линус Торвальд (создатель ядра Linux) не устаёт повторять: "Теория рано или поздно встречается с практикой. И практика всегда оказывается критерием истины. Всегда!".
Дополнительная проблема Walk Forward заключается в том, что мы получаем множество моделей на каждом из optimization period. Какую из этих моделей необходимо оставить в качестве рабочей и по какому критерию её отбирать?
Не стоит ссориться.
Согласен. Но для этого нужно минимизировать количество бездоказательных обвинений в топике. Самый лучший вариант приводить результаты сравнительных исследований с возможностью перепроверки.
Мы работаем над очень сложным объектом исследования.
Кто-то работает, а кто-то звиздит бездоказательно (не будем показывать пальцем)
Не стоит ссориться.
Согласен.
Тут есть много допущений. И эти допущения приводят к переобученности и сливу вне выборки.
Допущения на хлеб не намажешь, в карман не положишь. Поэтому всё нужно сверять опытным путём, а не допускать непроверенные допущения, чтобы не наступить на грабли - переобученности и сливу вне выборки.
Walk Forward конечно хороший метод. Но там же основные параметры это глубина обучения и длина теста. При этом (!!!) если эти параметры перебрать так, что результат на форварде станет лучшим, мы переобучим Walk Forward! поэтому даже для такого хорошего метода нужны данные вне выборки. То есть на одном большом куске многократно делаем оптимизацию Walk Forward. На другом не пересекающемся куске пробуем лучшие параметры Walk Forward на "обучении" и проводим еще один раз. Если результат хороший, значит заложенная модель улавливает зависимости. Если результат плохой, значит мы просто переобучили Walk Forward на не очень хорошей модели.
Такая же проблема есть и при однократном тестировани на отложенной выборке. Я сейчас над этим работаю: освобождаю свои результаты от переобученности. Результаты на кроссвалидации должны коррелировать с отложенной выборкой для финального тестирования. При этом отбор лучшей модели по кроссвалидации даст приближенно лучшие результаты вне выборки. Иначе - если корреляция отсутствует или отрицательная - у нас неадекватная для форекса модель, которую нужно менять.
Суть в том, что у всех методов есть достоинства и недостатки. Допущения преувеличивают достоинства и не принимают во внимание недостатки.
Ещё большая суть в том, что никакие методы не позволяют отбирать модели по критерию лучшего качества, а все методы отбирают по принципу отбраковки - отфильтровывают только заведомо непригодное. Потенциальную пригодность того, что осталось после отбраковки ни один метод в ML не может вычислить.
Тем паче в нестационарных средах. Можно отобрать казалось бы наиболее пригодные с точки зрения обобщающей способности модели, но завтра какой нибудь главарь ЦБ на заседании что нибудь пукнет и все модели пойдут коту под хвост.
Суть в том, что у всех методов есть достоинства и недостатки. Допущения преувеличивают достоинства и не принимают во внимание недостатки.
Ещё большая суть в том, что никакие методы не позволяют отбирать модели по критерию лучшего качества, а все методы отбирают по принципу отбраковки - отфильтровывают только заведомо непригодное. Потенциальную ригодность того, что осталось после отбраковки ни один метод в ML не может вычислить.
Тем паче в нестационарных средах. Можно отобрать казалось бы наиболее пригодные с точки зрения обобщающей способности модели, но завтра какой нибудь главарь ЦБ на заседании что нибудь пукнет и все модели пойдут коту под хвост.