Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 95
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
"Суслика" мне найти не удалось, облажался))) А для чего все эти упражнения... кто "хипует", тот поймет.
ну да, но блин ето же как то не правильно, качественный предиктор это тот который хорошо объясняет целевую, а не тот который объясняет сам себя, хз не понятно мне как можно узнать качество предиктора не сравнивая его с целевой, не понятно мне....
Это зависит смотря с какого конца подходить к проблеме. Первоначально нам неизвестны нужные предикторы, и неизвестна целевая переменная. А для успешной торговли нужно узнать и то и другое. Одновременно узнать и то и другое не получится, поэтому нужно либо подбирать предикторы под свою целевую переменную. Либо набрать качественных предикторов, а дальше уже смотреть по опыту что с ними можно спрогнозировать.
Первый подход. У меня например есть целевая переменная - рост/падение цены за следующий бар. Я её взял не потому что это хорошая целевая переменная, а потому что надо было с чего-то начинать, и я взял что проще :) Дальше взял кучу индикаторов, и теперь пытаюсь научить модель на "куче индикаторов" распознавать "рост/падение". Я рад что хоть что-то из этого получилось, потому что нет никаких гарантий что рандомно взятая целевая переменная вообще предсказуема, и нет никаких гарантий что мои предикторы несут достаточно информации для её предсказания. ForeCA в этом случае служит лишь для предобработки данных, чтобы привести их к виду на котором нейронке будет проще обучиться. Например данные вместо этого можно нормализовать, или взять дельты соседних значений, или сделать из них PCA компоненты, итд. Всё это облегачет работу нейронки, ей на таких предобработанных данных проще обучаться. От ForeCA в данном случае требуется чтобы оно как-то сгруппировало одинаковые классы. Но не факт что ForeCA в этом поможет, это уже как повезёт, зависит от имеющихся предикторов и от целевой переменной.
Если кратко, то в таком случае к целевой переменной подбирается модель и предикторы которые все вместе чудом имеют хоть какую-то предскзательную способность.
Другой подход. Взять кучу предикторов, рассортировать их по некой "достоверности", и удалить ненужные и не значимые. Например если индикатор всё время имеет константное значение, он явно бесполезен. Если предиктор был сгенерирован функией random(), то он тоже бесполезен. Итд, важно оставить те предикторы которые действительно несут в себе какую-то информацию. Я в этом мало разбираюсь, единственное что помню - как найти важность предиктора для PCA компонент (параметр pruneSig в caret), вроде бы адекватная оценка. ForeCA в этом случае должен отсеять мух от котлет, и поможет найти достоверные предикторы. Как все эти пакеты узнают что важно а что нет - загадка, но они действительно находят зашумлённые и рандомные предикторы и отбраковывают их. Качественный предиктор будет тот, который не рандомен, и не шум.
Дальше, имея набор качественных предикторов, нужно пробовать их для предсказания чего-либо. Например можно построить карту кохонена, найти зависимость поведения рынка от класса в карте кохонена. Сделать выводы о том на каких классах торговать, на каких нет, и таким образом построить для себя новую целевую переменную. Целевая переменная будет иметь высокую прогнозируемость имеющимеся предикторами так как построена на них, всё звучит хорошо, но думаю тут будет куча своих проблем и подвохов.
Это зависит смотря с какого конца подходить к проблеме. Первоначально нам неизвестны нужные предикторы, и неизвестна целевая переменная. А для успешной торговли нужно узнать и то и другое. Одновременно узнать и то и другое не получится, поэтому нужно либо подбирать предикторы под свою целевую переменную. Либо набрать качественных предикторов, а дальше уже смотреть по опыту что с ними можно спрогнозировать.
Первый подход.....
Другой подход....
Подходы разнообразные, а торговать собираемся?
Что собираемся торговать?
Тренд?
Отклонение?
Уровень?
При этом в уме держим, что у нас всего два приказа - BUY/SELL. Или их некоторое разнообразие? Войти в рынок BUY/ Выйти из рынка BUY / Войти в рынок SELL / Выйти из рынка SELL
Вот и варианты целевой переменной.
Далее.
А можем ли мы сформировать целевую переменную тому, что мы торгуем?
Или между целевой и идеей торговой системы существует некий зазор, что есть ошибка?
И т.д.
Но начинать надо с того, ЧТО торгуем.
нужно умножить переменную v2 на свой лаг и поделить на v3 .
v2;Lag1_v2;v3;v11(цель);v2*Lag1_v2/v3
Архив с файлом не надо загружать.
лага сеть не видит.
СанСаныч Фоменко:
Знать бы что именно торговать. Вариантов много, но можно выбрать опять нечто малопрогнозируемое, и потратить много времени чтоб узнать о малопрогнозируемости. Нужно выбрать нечто такое, что легче предсказывается на доступных предикторах. Надо много подумать как это сделать.
Сделал тестовый код для прогноза с ForeCA. Нужна таблица trainData, с целевой переменной в последней колонке. Она будет поделена по строкам на 2 части для тренировки/валидации (будет поделена строго посередине). Предскательную модель взял lm, её почему-то всегда с PCA используют в примерах, думаю и тут подойдёт. Можно функцию lm(...) в коде заменить на другую модель.
ForeCA требует данные в матрице с полным рангом после cov(). Я приделал код который проверяет это заранее, и убирает колонки с низким eigenvalue. Там всё в цикле, и долго выполняется, и наверное можно было сделать проще. У меня часть предикторов отсеялась именно таким способом, не знаю хорошо это или плохо.
Результат у меня пока никакой, пакет съел 5 гигов опреативы и надолго задумался, попробуйте, может кому даст хороший прогноз.
Покажи 10 строк с такими столбцами (v2; лаг v2 (Lag1_v2); v3; v11 (цель) и столбец с формулой v2*Lag1_v2/v3)
v2;Lag1_v2;v3;v11(цель);v2*Lag1_v2/v3
Архив с файлом не надо загружать.
Сделал тестовый код для прогноза с ForeCA.....
я тоже.. решил сделать по быстрому взял ирисы, добавил 10 предикторов с шумом
и просто обучил форест, потом взял ту же дату с шумами и у с помощью foreCA уменьшил размерность до 4 предикторов и на них обучил снова форест
результат:
просто форест на новых данных
форест даже не заметил что в данных шумы ...
а с foreca дела по хуже
я тоже.. решил сделать по быстрому взял ирисы, добавил 10 предикторов с шумом
и просто обучил форест, потом взял ту же дату с шумами и у с помощью foreCA уменьшил размерность до 4 предикторов и на них обучил снова форест
результат:
просто форест на новых данных
форест даже не заметил что в данных шумы ...
а с foreca дела по хуже
Правда хорошо, а счастье лучше!
Правда = 42%, о-о-о-чень положительно влияет на депо.
Хотя можно жить счастливо, но с обнуленным депо