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

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

ПС.

Для ярых сторонников МКЛ замечу, что без всех тех действий и инструментов, которые обсуждаются на этой ветке, тестер вообще не дает никаких оснований рассуждать о будущем поведении торговой системы. Тестер говорит: "Вот такие результаты для данного временного периода". Все. Тестер дает ровно одну цифру, например, профит фактор, который относится к конкретному историческому периоду. А статистику можно получить только в R.   А тестер - это финальная часть проектирования модели, но не замена всего процесса разработки.

Чушь и бред!

Тестер выдаст ровно столько и то, о чем его спрашивали. Спрашивали профит фактор? - вот вам профит фактор. Если спросим нечто другое или несколько - будет и на это ответ. И статистику можно получить вызвав TesterStatistics() в  OnTester() и всё это доступно уже очень давно. При необходимости можно добавить любые другие стат подсчеты.

Ваш R ровным счетом так же ничего ответить не сможет, если нечего или не знаешь что спросить. 

 
Dr.Trader:

Например вы провели валидацию на отложенной выборке. Допустим модель на отложенных данных слилась. Что вы делаете в таком случае? Если вы начнёте опять что-то подбирать в параметрах чтоб успешно пройти валидацию на отложенной выборке - вы по сути включаете данные из отложенной выборки в свою кроссвалидацию, и кроссвалидация становится тоже подогнанной. Это можно поправить добавив новую отложенную выборку. А что если модель и на ней сольёт? Подбирать параметры чтоб пройти и новую отложенную выборку? Это бесконечная гонка.

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

 

Так что вопрос - допустим модель на отложенных данных слилась. Что вы делаете в таком случае?

Ув. Др.Трейдер, попробую объяснить на картинке. Не волнуйтесь, вопрос этот сложный, но решаемый. Не надо делать так, как вы предполагаете, иначе будет порочный цикл.

 И еще, я постепенно буду закругляться с активностью в этой теме. Уже устаю от форума. Лучше в личке и с примерами.

Так вот:

Model Selection for Noisy Time Series Prediction and Trading

 

 

По шагам:

Обучение модели - модель показывает граальные характеристики

Тестирование модели - модели работают уже заметно хуже. Но среди них есть и такие, которые работают отлично.

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

Если у нас кроссвалидация (данные для разных моделей перемешаны) мы не можем сделать их комитет на тесте (тест перемешан). Вы взамен берем выбранные "лучшие" модели на тесте и проверяем их на отложенной выборке. Что мы ожидаем увидеть? Так как в реальном применении мы будем опираться на характеристики моделей на кроссвалидационных блоках (или однократном тесте, если не хочется морочитьсчя с кроссвал.), мы должны знать, будут ли отобранные лучшие модели показывать схожие характеристики в будущем (на отложенной выборке 1). Если связь есть, уже очень хорошо. По сути, на этом можно остановить исследование и в дальнейшем выбирать лучшие модели по кроссвалидации. 

Но если мы еще хотим сделать комитет, мы должны понять, какие модели выбрать в комитет. Делаем мы это на отложенной выборке 1, но не абы как. Снова вспоминаем, что в реале,мы только будем опираться на тестовые данные (последние данные доступные нам). Поэтому, поочередно включаем в комитет модели, показывающие лучшие результаты на ТЕСТЕ. Добиваемся максимизации характеристики работы комитета на отложенной выборке.

В этот момент вы подвержены multiple model selection bias, так как выбор комитета мы оцениваем на данных, на которых его характеристика уже известна.

Последняя выборка нужна для валидации комитета.

Если на шаге валидации выбранных моделей (на тесте) на отложенной выборке мы видим, что характеристики моделей плавают - это уже смертельно, так как мы не получаем возможности выбрать модель по тесту. На этом шаге нужно менять что-то в подходе.

Если собранный комитет сливает на последней отложенной выборке (это однократный тест), то случалась подгонка комитета под предыдущую выборку.

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

Если даже все отработало нормально на отложенных выборках (то есть мы уменьшили до минимуму model selection bias), вообще хорошо повторить в цикле с ТЕМИ же параметрами всю процедуру и получить распределение работы комитета на последней выборке. При это понятно, что каждый раз нужны другие (хотя бы частично) данные. А это уже очень накладно...

Запомните, пож., эту схему. Она доводит вашу оценку торговли на реале до возможного абсолюта.

 
Раньше в пору былой молодости и доступности Нейрошела, использовали бумажную торговлю. Надеюсь все знают что это такое, однако при работе в реале Тс начинала сливать, и тогда было принято решение не использовать отрезок бумажной торговли, а тренировать сеть, при этом оставлять кусочек реала для оценки правильности работы сети. Я вот например сейчас делаю следующее, я один день, тот который самый последний при условии объёма и открытого инетреса удаляю. Для чего???? вы ведь не редко наблюдали такую картну что в самом начале после участка оптимизации ТС немного сливает, а потом начинает выдавать вполне приличные сигналы. Так вот именно поэтому я один день который мне уже известен удаляю, и ТС как бы начинает торговать со следующего дня.... Что получается вполне не плохо, не без ошибок конечно, но всётаки приемлемо для получения прибыли...
 
Mihail Marchukajtes:


 

Всё так, но эта закономерность очень бородатая, все о ней давно знают, поэтому...

А сейчас простейший классификатор её бы обнаружил, для одного ряда такое толкование цены, объёма и ОИ, маловато данных, нужен  ещё хотя бы ордербук и лента с направлениями сделок, а в случае форекса, так как этой информации нет, нужно её брать с западных ликвидных фьючерсных рынков.

 
Та не, вы задумывались над тем а что если сети подать именно те патерны, которые будут в будущем??? Вопрос как их найти, какие дни нужно выбрать для обучения сети чтобы знать что в текущем дне эти патерны будут. Вот собственно ответ. Выбираем именно те дни в которых были текущий объём и ОИ, соотвественно в надежде что контекст дня будет подобным тем дням, которые попали в обучающую выборку. Сами значения объёма и ОИ я не подаю на вход сети, я лишь выбираю именно эти дна, ну а на вход подаётся AD, Zscore,Kelli и т.д. Тоесть смысл в том чтобы выбрать на истории именно такой набор патернов и реакцию рынка на них, как и в текущем дне. Если есть теории о подобном выборе с помощью других методик, с удовольствием послушал бы....
 
BlackTomcat:
Умные ведь люди, нейросети всякие разрабатывают и тренируют, а простых вещей всё-таки не видят. Прочитал Ваш пост и немало удивился. Если я всё правильно понял, то Вы, грубо говоря, нашли все падения цены на 0,2% после некого хая, потом взяли три свечи в районе этого хая и провели некую манипуляцию с их ценами, приведя в итоге с помощью нейросети их к некой вероятности. Но, простите, Вам самому не кажется такой подход слишком уж примитивным? :) Вы не то и не там копаете. Оттого и результат прямо противоположный реальности. Ваш подход я бы охарактеризовал так: Вы пытаетесь взять 3 пикселя из картинки FullHD, и по этим трём пикселям составить представление о всей картине. Ну ладно, не всей, но какова вероятность правильного прогноза хотя бы 10% площади изображения? Надеюсь, мой пример понятен. Нужно смотреть не на пиксели, чтобы увидеть картинку. Иными словами, нужно смотреть не на отдельные бары, чтобы понять график, нужно смотреть на весь график. И решение задачи лежит, скорее, в области геометрии, а не алгебры, физики или биологии, например. Хотя когда я читаю некоторые исследования, которые люди тут проводят, то у меня возникает стойкое ощущение, что они пытаются постичь строение человека с помощью географии. :)

+1

Я бы даже сказал не "график" а графики кроме того не только цены, а...

Аналогия про 3 пикселя и HD, очень  релевантна на мой взгляд тому чем тут в основном занимаются.

 

Andrey Dik:

 

Или даже скажет кто то: "Да ты просто не умеешь готовить МО!" - наверное да, не умею. Но кто вообще умеет? У кого получалось использовать МО на рынке? 

И Вы не одиноки, это НОРМАЛЬНО, не нормально когда всё таки получается и такие не продают курсы по "успешной торговле", не занимаются партнерками и прочей ересью, а стучатся куданить типа https://www.rentec.com/Jobs.action?data=true если нет желания возиться с привлечением капитала для алготорговли))
Renaissance Institutional
Renaissance Institutional
  • www.rentec.com
RENAISSANCE TECHNOLOGIES, a quantitatively based financial management firm, has openings for programming positions at its Long Island, NY research center. Programming Opportunity We are looking for bright, outstanding programmers who are interested in working in a stimulating and academic environment to implement and support software used in...
 
А я опять глубоко убеждён, чтобы НС заработала, нужно обучить её на таких патернах, которые будут в течении торговли (день, неделя) и главное чтоб реакция рынка на эти патерны была такойже как на периоде обучения. Тогда любой персептрон справится и будет работать на ура. Вопрос, как выбрать именно тот набор патернов, который будет в течении следующего торгового дня или недели????? Тут как грица вот такой подход есть, и не нужно будет выдумывать супер сложные НС или ещё что, если сеть будет обучена на будущие патерны.... 
 
Mihail Marchukajtes:
Та не, вы задумывались над тем а что если сети подать именно те патерны, которые будут в будущем??? Вопрос как их найти, какие дни нужно выбрать для обучения сети чтобы знать что в текущем дне эти патерны будут. Вот собственно ответ. Выбираем именно те дни в которых были текущий объём и ОИ, соотвественно в надежде что контекст дня будет подобным тем дням, которые попали в обучающую выборку. Сами значения объёма и ОИ я не подаю на вход сети, я лишь выбираю именно эти дна, ну а на вход подаётся AD, Zscore,Kelli и т.д. Тоесть смысл в том чтобы выбрать на истории именно такой набор патернов и реакцию рынка на них, как и в текущем дне. Если есть теории о подобном выборе с помощью других методик, с удовольствием послушал бы....

Именно так оно и делается, а как иначе? В тривиальном случае, обучающий датасет это векторная последовательность из нормализованных приращений цены объёма и ОИ, назовем vectorSet[][] нейросетке или какому либо иному классификатору на вход подаём input =  vectorSet [t][], учим выходу output = vectorSet [t+1][]


Если я правильно понял суть вопроса...
 
Mihail Marchukajtes:
Вопрос, как выбрать именно тот набор патернов, который будет в течении следующего торгового дня или недели????? 
К сожалению углубляться не имею права и честно говоря желания, все таки мы же друг у друга бабки отнимаем)))) Но 2 года назад когда я ещё САМ работал, у меня  обрабатывалось  более 500 фич на входе в нейросетку и было около 30 выходов, но время идет... ;)
Причина обращения: