@ViPluxa

Нейронная сеть выдает не верные значения. Как можно исправить?

Нейронная сеть на keras предсказывает значения цен за определенный период.
На вход даются значения Open, High, Low, Close, Volume
Далее через LSTM модель предсказываются значения на следующий период
Но выходные данные иногда предсказываются некорректно:
Цена Close может быть больше чем цена High
Цена Low может быть больше чем цена High
Можно ли добавить условия, чтобы значения на выходе были корректными?
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 2
@rPman
Во первых, закономерности в указанных данных может и не быть, нельзя найти то чего нет

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

В третьих, данные должны быть правильно поданы, они должны быть нормированы, быть на интервале (обычно 0-1 или к примеру -1..+1), отличный пример - для торговых объемов, подавай на вход 1/(1+v), это число будет гарантированно будет на интервале (0..1], так же старайся избегать дискретных значений и графиков с острыми вершинами (первая производная - бесконечность)...

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

В пятых, очень рекомендую внимательно подумать над функцией ошибки. Так в классическом виде функция ошибки - это сумма квадратов разницы между целевыми и вычисленными выходами, но ведь можно определить ее как к примеру размер депозита, его ты хочешь максимизировать, так что переверни 1/(a+x), при использовании текущей нейронной сети, если ты будешь торговать по своей стратегии, на каком то интервале (этот интервал должен быть привязан к моменту времени получения входных данных сети, т.е. считаем сеть для момента времени T, и симулируем торговлю за время [T-x..T] или лучше [T..T+x], т.е. в будущем, ты же доход будешь получать на основе будущих сделок после принятия решения на основе текущих значений.

... а еще у тебя может быть тупо недостаточно вычислительных мощностей, размер сети выбран неправильно, неправильно выбрано первоначальное наполнение и много много всего что и означает умение работать с нейронными сетями
Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
А кто вам сказал, что она должна верно предсказывать на все случая жизни?
Ну и предсказывать только на основе предыдущей цены, это как угадывать погоду на завтра только по термометру за окном.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы