Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 30
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
2. См. видео:
Извини, но обычная заумь малообразованного аспиранта ...
Как говориться, за что купил, за то и продаю. Мне был задан вопрос, я привёл видео, где на него есть развёрнутый ответ. Лектор там не умничает, а шпарит по статистической теории обучения.
см. Vapnik V.N. Statistical Learning Theory. NY: John Wiley, 1998
СанСаныч Фоменко:
1. Заметным ухудшением обобщающей способности, если убрать из выборки хотя бы один информативный предиктор
Поверь, к сожалению это ничего не доказывает. Более того, если набор предикторов плохой (много шумовых) то этот эффект будет тем сильнее, чем больше шума. Это объясняется очень просто: чем больше шума, тем проще алгоритму подобрать "удобное" значение.
Как говориться, на вкус и цвет ...
СанСаныч Фоменко:
По поводу твоего файла.
1. Построить 6 моделей классификации на твоих данных не удалось: ошибка свыше 50%. Если хочешь могу выложить здесь результаты
СанСаныч Фоменко:
2. Причиной такого результата является то, что у тебя очень плохой набор предикторов - шум, т.е. предикторы, не имеющие отношение к целевой переменной. Предикторы 6, 7 и 8 имеют некоторую предсказательную способность, но очень маленькую. Я с такими предикторами не работаю. Остальные просто шум.Ну, дык. Без шума любой дурень сумеет правильно классифицировать. Шум там есть и в приличном количестве. Полезная информация тоже имеется. Вот, например, результаты старенького libVMR 3.01:
/**
* The quality of modeling in out of sample:
*
* TruePositives: 245
* TrueNegatives: 113
* FalsePositives: 191
* FalseNegatives: 73
* Total patterns in out of samples with statistics: 622
* Total errors in out of sample: 264
* Sensitivity of generalization abiliy: 56.19266055045872%
* Specificity of generalization ability: 60.752688172043015%
* Generalization ability: 16.94534872250173%
* Indicator by Reshetov: 0.1075044213677977
*/
Т.е. наковырял информации в обобщающей способсности почти на 17%
У новенького результативность заметно лучше.
Используйте кроссвалидацию для подбора количества компонент. Лучшее значение на кроссвалидации затем проверяйте на валидацонном наборе.
Вышло опять не очень. Я бы взял 20 компонент, т.к. min(trainwinrate. validate1winrate, validate2winrate) самый большой по сравнению с другими количествами компонент. И получил бы результат во фронттесте ~55%, ещё хуже чем было. Странная модель вышла - процент выигрыша немного больше 50% (для форекса не подходит), кроссвалидация не работает, важность предикторов не вытащить. Можно только распечатать, и повесить на стенку :)
* TruePositives: 245
* TrueNegatives: 113
* FalsePositives: 191
* FalseNegatives: 73
Вышло опять не очень. Я бы взял 20 компонент, т.к. min(trainwinrate. validate1winrate, validate2winrate) самый большой по сравнению с другими количествами компонент. И получил бы результат во фронттесте ~55%, ещё хуже чем было. Странная модель вышла - процент выигрыша немного больше 50% (для форекса не подходит), кроссвалидация не работает, важность предикторов не вытащить. Можно только распечатать, и повесить на стенку :)
Это результаты моего большого эксперимента. Из-за ошибки в винде код прервался и я не дообучил на всех символах. Но мне пока и этого хватит. На eurusd хорошие результаты.
Я вывел только максимальные найденные значения, без указания параметров. Есть уже неплохой результат. Тонкости настройки GBM помогают.
Предсказывая eurusd на 512 минут вперёд, можно зарабатывать 1.5 пипса за сделку, я правильно понял? И спред тоже учитывается? Ещё важно знать максимальную просадку за это время, нет смысла торговать советником ради даже 10 пипсов, если просадка за эта время была всех двести. Для оценки торговли хорошо бы использовать Шарп ратио, но я в R такого не видел, для начала можно ограничаться recovery фактором: (итоговый профит)/(максимальная просадка по эквити за всё время).
Для примера, скажем есть сигнал 1. За год трейдер заработал 1000%, но его максимальная просадка была 50%. И при этом есть сигнал2, где автор заработал за год всего 600%, но его макс. просадка была 25%. Может показаться что трейдер 1 лучше (по прибыли), но на самом деле нет, он просто рискует в два раза больше. Recovery factor первого - 1000/50 = 20, у второго - 600/25 = 24. Значит лучше подписаться на второй сигнал, и при желании увеличить риск в два раза если есть желание рискнуть на 50% депозита.
Также само и в вашем эксперименте важно оценить риски. Торговля в маленьком интервале может быть гораздо прибыльнее, ибо модель может вовремя реагировать но скачки цен и зарабатывать на них, а не пересиживать громадную просадку рискуя поймать стоплосс.
Коллеги, если будет время, можете мне позадавать вопросы под статьей? https://habrahabr.ru/company/aligntechnology/blog/303750/
А то Хабр молчит вообще!
Очень много буков.
Предсказывая eurusd на 512 минут вперёд, можно зарабатывать 1.5 пипса за сделку, я правильно понял? И спред тоже учитывается? Ещё важно знать максимальную просадку за это время, нет смысла торговать советником ради даже 10 пипсов, если просадка за эта время была всех двести. Для оценки торговли хорошо бы использовать Шарп ратио, но я в R такого не видел, для начала можно ограничаться recovery фактором: (итоговый профит)/(максимальная просадка по эквити за всё время).
Для примера, скажем есть сигнал 1. За год трейдер заработал 1000%, но его максимальная просадка была 50%. И при этом есть сигнал2, где автор заработал за год всего 600%, но его макс. просадка была 25%. Может показаться что трейдер 1 лучше (по прибыли), но на самом деле нет, он просто рискует в два раза больше. Recovery factor первого - 1000/50 = 20, у второго - 600/25 = 24. Значит лучше подписаться на второй сигнал, и при желании увеличить риск в два раза если есть желание рискнуть на 50% депозита.
Также само и в вашем эксперименте важно оценить риски. Торговля в маленьком интервале может быть гораздо прибыльнее, ибо модель может вовремя реагировать но скачки цен и зарабатывать на них, а не пересиживать громадную просадку рискуя поймать стоплосс.
То есть процент выигрыша на test.csv у вас 57,6%, да? Я попробую своим методом отсеять предикторы и обучить нейронку, завтра отпишусь о результатах.
Не выигрыша, а количества правильных предсказаний будущего направления цены. Классификатор на тестовой выборке выдаёт одно из двух значений: Positive - предполагается будущий рост цены, Negative - предполагается будущее снижение цены. Если он предсказал какой нибудь тестовый пример правильно, то ему засчитывается True. Если он ошибся, то False.
Sensitivity of generalization abiliy: 56.19266055045872% - правильно предсказан будущий рост цены: 100% * TP / (TP + FP) = 100% * 245 / (245 + 191) = 100% * 245 / 436 = 56.192660550458715%
Specificity of generalization ability: 60.752688172043015% - правильно предсказано будущее снижение цены: 100% * TN / (TN + FN) = 100% * 113 / (113 + 73) = 100% * 113 / 186 = 60.75268817204302%
Не выигрыша, а количества правильных предсказаний будущего направления цены. Классификатор на тестовой выборке выдаёт одно из двух значений: Positive - предполагается будущий рост цены, Negative - предполагается будущее снижение цены. Если он предсказал какой нибудь тестовый пример правильно, то ему засчитывается True. Если он ошибся, то False.
Sensitivity of generalization abiliy: 56.19266055045872% - правильно предсказан будущий рост цены: 100% * TP / (TP + FP) = 100% * 245 / (245 + 191) = 100% * 245 / 436 = 56.192660550458715%
Specificity of generalization ability: 60.752688172043015% - правильно предсказано будущее снижение цены: 100% * TN / (TN + FN) = 100% * 113 / (113 + 73) = 100% * 113 / 186 = 60.75268817204302%
Юрий, первая проба на ваших данных:
Два разных набора значений параметров для обучения. Примечательно, что на кроссвалидации AUC ниже плинтуса.
В общем, точность 51.5% на тесте - это лучшее, что получилось.
Даже не знаю, как у вас получается порядка 60%.