CloseToAlgoTrading
CloseToAlgoTrading личный блог
21 марта 2020, 16:53

Эксперемент: Часть 5. Неудачи. Торговая система на базе глубокого обучения от начала до реальных торгов.

Всем привет. 

Медленно продалжаем копать в строну нейронных сетей. В этом видео я расскажу о некоторых своих неудачах, которые встретились на моем пути :)



Основаная проблема конечно же в том, что мои данные являются мусором и при этом сильно несбалансированны. 
Так же выяснилось, что ROC кривая довольно плохо работает с несбалансированными данными.

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

Так же хочется сказать пару слов у качестве TenorFlow. Не могу понять отчего там столько ошибок, многие методы просто не работают друг с другом. Складывается ощущение, что они постоянно обновляют API ломая связи.

По ссылке на github вы можете найти код из видео, я его немного структурировал, и если кому интерсно, можете с ним поиграться.
github.com/CloseToAlgoTrading/CodeFromVideo/tree/master/episode_12
14 Комментариев
  • Михаил
    21 марта 2020, 17:14
    Вы можете пояснить, почему Close имеет shape (None, 10, 1) — может какая-то ошибка?
    Что за признак Nr?
      • Михаил
        21 марта 2020, 17:41
        Denis, про shape понял. Про номер тика не понял зачем он нужен — какую содержательную информацию должен нести для предсказаний?
          • Михаил
            21 марта 2020, 18:52
            Denis, тут простой тест — сколько у вас на уникальный номер тика имеется обучающих примеров. Если меньше нескольких тысяч, то вряд ли вы чего-то выучите. Вторая проблема, что у вас признаки слишком разного масштаба из-за этого признака — обычно сети крайне плохо такое перевариавают. 
            Ну и третье — у вас сеть слишком примитивная чтобы выучить какие-нибудь зависимости. Посмотрите на стандартные архитектуры для изображений и анализа звука — там десятки слоев, которые постепенно выуживают сигнал из исходных данных, а у вас несколько слоев при этом известно, что сигнала заведомо мало относительно шума. Тут возможно нужно еще больше слоев. 
            Я лично взял за основу WaveNet и составил сеть с 87 слоями, которая дает приемлемый результат.
    • Михаил
      21 марта 2020, 17:37
      Denis, я делаю регрессию — предсказываю изменение цены в процентах на некое количество временных периодов в перед. 
        • Михаил
          21 марта 2020, 18:44
          Denis, на мой взгляд лучше искать больше данных, а не метки упрощать. Все равно когда вы делаете реальные ставки, то имеете дело с реальными доходностями, а не упрощёнными метками. Кроме того, мне кажется сделать рабочую модель на тиковых данных очень сложно. Там обычно работают стратегии типа парного арбитража, и мало кто занимается торговлей одним инструментом в попытках предсказать его движение. В акциях и так отношение сигнал шум не очень, а на коротком периоде на это еще валются гигантские транзакционные издержки. 
            • Михаил
              21 марта 2020, 19:26
              Denis, у меня сейчас основная модель прогнозирования на основе GBM (Catboost) — там важность признаков из коробки есть, но признаки нужно самому сочинять. За основу взял список рыночных аномалий из академических статей. Выбор оптимальных параметров и признаков с помощью Байсовской оптимизации (hyperopt).
              Сейчас пишу предсказания на основе сетей на основе просто котировок и дивидендов без ручных признаков — есть рабочий прототип, но пока не использую. Пишу тесты, а потом буду писать генетический алгоритм поиска оптимальных параметров. Не знаю сколько времени займет.
              Собираюсь стравить GBM и сети в генетическом отборе.
                • Михаил
                  21 марта 2020, 19:38
                  Denis, выбор алгоритма подгонка, выбор параметров алгоритма подгонка, выбор используемых признаков подгонка, обучение алгоритма это тоже подгонка. Тут просто нужно разумно подойти к процессу. В трейдинге постоянно появляются новые данные. Если в делать тестирование и генетический отбор на новых данных, то имхо тут ничего страшного нет. Страшно, когда учишь тестируешь на одних данных.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн