Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 172
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
ПС.
Для ярых сторонников МКЛ замечу, что без всех тех действий и инструментов, которые обсуждаются на этой ветке, тестер вообще не дает никаких оснований рассуждать о будущем поведении торговой системы. Тестер говорит: "Вот такие результаты для данного временного периода". Все. Тестер дает ровно одну цифру, например, профит фактор, который относится к конкретному историческому периоду. А статистику можно получить только в R. А тестер - это финальная часть проектирования модели, но не замена всего процесса разработки.
Чушь и бред!
Тестер выдаст ровно столько и то, о чем его спрашивали. Спрашивали профит фактор? - вот вам профит фактор. Если спросим нечто другое или несколько - будет и на это ответ. И статистику можно получить вызвав TesterStatistics() в OnTester() и всё это доступно уже очень давно. При необходимости можно добавить любые другие стат подсчеты.
Ваш R ровным счетом так же ничего ответить не сможет, если нечего или не знаешь что спросить.
Например вы провели валидацию на отложенной выборке. Допустим модель на отложенных данных слилась. Что вы делаете в таком случае? Если вы начнёте опять что-то подбирать в параметрах чтоб успешно пройти валидацию на отложенной выборке - вы по сути включаете данные из отложенной выборки в свою кроссвалидацию, и кроссвалидация становится тоже подогнанной. Это можно поправить добавив новую отложенную выборку. А что если модель и на ней сольёт? Подбирать параметры чтоб пройти и новую отложенную выборку? Это бесконечная гонка.
Включать отложенную выборку в кроссвалидацию, и создавать новую отложенную выборку это не выход, а бесконечный повтор до тех пока удача вам улыбнётся и модель случайно пройдёт отложенную валидацию. Тогда можно остановиться, но это не решение форекса, а просто удача вам улыбнулась, что однако по статистике будет сливом.
Так что вопрос - допустим модель на отложенных данных слилась. Что вы делаете в таком случае?
Ув. Др.Трейдер, попробую объяснить на картинке. Не волнуйтесь, вопрос этот сложный, но решаемый. Не надо делать так, как вы предполагаете, иначе будет порочный цикл.
И еще, я постепенно буду закругляться с активностью в этой теме. Уже устаю от форума. Лучше в личке и с примерами.
Так вот:
Model Selection for Noisy Time Series Prediction and Trading
По шагам:
Обучение модели - модель показывает граальные характеристики
Тестирование модели - модели работают уже заметно хуже. Но среди них есть и такие, которые работают отлично.
Тут наступает момент, когда нужно выбирать модели. Вы и я выбираем модели, которые лучше отработали на тесте (это могут быть блоки валидации в кроссвалидации). И сразу становится ясно, что коли мы выбираем модель по периоду, где уже известна ее характеристика, мы делаем оптимистичный выбор.
Если у нас кроссвалидация (данные для разных моделей перемешаны) мы не можем сделать их комитет на тесте (тест перемешан). Вы взамен берем выбранные "лучшие" модели на тесте и проверяем их на отложенной выборке. Что мы ожидаем увидеть? Так как в реальном применении мы будем опираться на характеристики моделей на кроссвалидационных блоках (или однократном тесте, если не хочется морочитьсчя с кроссвал.), мы должны знать, будут ли отобранные лучшие модели показывать схожие характеристики в будущем (на отложенной выборке 1). Если связь есть, уже очень хорошо. По сути, на этом можно остановить исследование и в дальнейшем выбирать лучшие модели по кроссвалидации.
Но если мы еще хотим сделать комитет, мы должны понять, какие модели выбрать в комитет. Делаем мы это на отложенной выборке 1, но не абы как. Снова вспоминаем, что в реале,мы только будем опираться на тестовые данные (последние данные доступные нам). Поэтому, поочередно включаем в комитет модели, показывающие лучшие результаты на ТЕСТЕ. Добиваемся максимизации характеристики работы комитета на отложенной выборке.
В этот момент вы подвержены multiple model selection bias, так как выбор комитета мы оцениваем на данных, на которых его характеристика уже известна.
Последняя выборка нужна для валидации комитета.
Если на шаге валидации выбранных моделей (на тесте) на отложенной выборке мы видим, что характеристики моделей плавают - это уже смертельно, так как мы не получаем возможности выбрать модель по тесту. На этом шаге нужно менять что-то в подходе.
Если собранный комитет сливает на последней отложенной выборке (это однократный тест), то случалась подгонка комитета под предыдущую выборку.
Повторять всю процедуру с разными параметрами, добиваясь максимизации характ. на финальных отложенных выборках нельзя, так как это будет также оптимистичным выбором моделей.
Если даже все отработало нормально на отложенных выборках (то есть мы уменьшили до минимуму model selection bias), вообще хорошо повторить в цикле с ТЕМИ же параметрами всю процедуру и получить распределение работы комитета на последней выборке. При это понятно, что каждый раз нужны другие (хотя бы частично) данные. А это уже очень накладно...
Запомните, пож., эту схему. Она доводит вашу оценку торговли на реале до возможного абсолюта.
Всё так, но эта закономерность очень бородатая, все о ней давно знают, поэтому...
А сейчас простейший классификатор её бы обнаружил, для одного ряда такое толкование цены, объёма и ОИ, маловато данных, нужен ещё хотя бы ордербук и лента с направлениями сделок, а в случае форекса, так как этой информации нет, нужно её брать с западных ликвидных фьючерсных рынков.
Умные ведь люди, нейросети всякие разрабатывают и тренируют, а простых вещей всё-таки не видят. Прочитал Ваш пост и немало удивился. Если я всё правильно понял, то Вы, грубо говоря, нашли все падения цены на 0,2% после некого хая, потом взяли три свечи в районе этого хая и провели некую манипуляцию с их ценами, приведя в итоге с помощью нейросети их к некой вероятности. Но, простите, Вам самому не кажется такой подход слишком уж примитивным? :) Вы не то и не там копаете. Оттого и результат прямо противоположный реальности. Ваш подход я бы охарактеризовал так: Вы пытаетесь взять 3 пикселя из картинки FullHD, и по этим трём пикселям составить представление о всей картине. Ну ладно, не всей, но какова вероятность правильного прогноза хотя бы 10% площади изображения? Надеюсь, мой пример понятен. Нужно смотреть не на пиксели, чтобы увидеть картинку. Иными словами, нужно смотреть не на отдельные бары, чтобы понять график, нужно смотреть на весь график. И решение задачи лежит, скорее, в области геометрии, а не алгебры, физики или биологии, например. Хотя когда я читаю некоторые исследования, которые люди тут проводят, то у меня возникает стойкое ощущение, что они пытаются постичь строение человека с помощью географии. :)
+1
Я бы даже сказал не "график" а графики кроме того не только цены, а...
Аналогия про 3 пикселя и HD, очень релевантна на мой взгляд тому чем тут в основном занимаются.
Andrey Dik:
Или даже скажет кто то: "Да ты просто не умеешь готовить МО!" - наверное да, не умею. Но кто вообще умеет? У кого получалось использовать МО на рынке?
Та не, вы задумывались над тем а что если сети подать именно те патерны, которые будут в будущем??? Вопрос как их найти, какие дни нужно выбрать для обучения сети чтобы знать что в текущем дне эти патерны будут. Вот собственно ответ. Выбираем именно те дни в которых были текущий объём и ОИ, соотвественно в надежде что контекст дня будет подобным тем дням, которые попали в обучающую выборку. Сами значения объёма и ОИ я не подаю на вход сети, я лишь выбираю именно эти дна, ну а на вход подаётся AD, Zscore,Kelli и т.д. Тоесть смысл в том чтобы выбрать на истории именно такой набор патернов и реакцию рынка на них, как и в текущем дне. Если есть теории о подобном выборе с помощью других методик, с удовольствием послушал бы....
Именно так оно и делается, а как иначе? В тривиальном случае, обучающий датасет это векторная последовательность из нормализованных приращений цены объёма и ОИ, назовем vectorSet[][] нейросетке или какому либо иному классификатору на вход подаём input = vectorSet [t][], учим выходу output = vectorSet [t+1][]
Если я правильно понял суть вопроса...
Вопрос, как выбрать именно тот набор патернов, который будет в течении следующего торгового дня или недели?????