Марат
Марат личный блог
21 ноября 2019, 15:52

Парочка способов улучшить прогноз

  Из тестов которые я привел в прошлых постах, следует что для задач с ограниченной выборкой и моим виденьем рынка, следует использовать GB, как наиболее эффективный инструмент, далее близко идет RF, а а где то далеко позади, глотая пыль плетется нейросеть. Также следует необходимость чистки от левых фичей. В чем вообще вопрос?! Лишние фичи это возможность инструментам ML найти черную кошку даже если ее там нет, особенно феерически это показала нейросеть, которая при относительно небольшом числе примеров откровенно творит (от слова тварь). Давайте попробуем зациклить чистку фичей и сделаем это системно. Системно это в частности избежать заглядывание в будущее а танцев с бубнами. Мои данные это около 50 тысяч дневок для наиболее ликвидных российских фишек с 2010 по апрель 2018 года (2008 год безудержного падения, 2009 год безудержного роста, поэтому все что до 2010 года оставил за бортом, как заведомо простые для извлечения профита годы), заглянуть на них в будущее это в частности использовать для прогноза движения цен в 2011 году данные о ценности фичей за все года. Мы так делать не будем. Мы представим что переместились в начале 2011 года и имеем только данные за 2010 год.  Для прогноза 2011 года используем данные о ценности фичей на тесте за 2010 год. Как используем? Да просто — из более чем трех десятков фичей используем только 5, 10, 20 наиболее информативных. Для прогноза 2012 года используем данные о ценности фичей на основе теста 2010-2011 годов итд. (Код разбухает, становится все менее читаемым, впору задумываться о ООП). После получения прогнозов, для удобство переведу их в столь любимое для трейдеров виде: профит на сделку, и сравню их с результатами если бы каждый раз использовались все доступные фичи. А их 34 штуки. Чистка фичей это будет во первых.
  Во вторых попробую улучшить результат за счет скалерновской VotingClassifier, которая будет выводить нечто среднее из прогнозов RF и XGB.
  Приступим с первого пункта. 

  RF RF5 RF10 RF20
Год Колл % сделка Колл % сделка Колл % сделка Колл % сделка
2011 1026 -0,09 1026 -0,09 1026 -0,09 1026 -0,09
2012 195 0,98 1022 0,43 420 0,56 289 0,76
2013 315 0,36 425 0,25 424 0,27 366 0,23
2014 487 0,92 697 0,64 859 0,54 506 0,93
2015 320 0,76 1351 0,18 1001 0,31 351 0,74
2016 214 0,77 446 0,8 339 0,75 241 0,81
2017 230 0,42 419 0,37 363 0,44 259 0,46
2018 35 0,49 101 0,18 55 0,24 50 0,25

  RF это если каждый раз использовать весь набор фичей, RF5 — если лучшие 5 фичей из последнего теста итд. Как видим никакого взрывного улучшения не произошло. Число сделок понятным образом увеличилось, а вот средняя профитность припала. Одним словом-фигня. 
  Кстати вот как от года к году менялся набор 10 самых значимых фич:

GEP           0.177   GEP           0.189   GEP           0.208   Week          0.230
Min10         0.167   tLow%         0.146   Week          0.176   GEP           0.223
tLow%         0.155   Week          0.138   tLow%         0.138   Min10         0.126
Week          0.148   Min10         0.109   Min10         0.110   tLow%         0.100
Cl/(minSMA)   0.118   tHigh%-tLow%  0.091   Cl/Low        0.085   Cl/Low        0.081
Vol20/Vol200  0.093   Cl/High       0.082   Cl/High       0.067   Vol20/Vol200  0.069
Cl/(maxSMA)   0.060   Cl/w_Low      0.074   Cl/(minSMA)   0.063   Cl/SMA21      0.065
wdif          0.031   Cl/SMA21      0.071   tHigh%        0.055   Cl/(minSMA)   0.038
dif           0.026   Cl/(minSMA)   0.066   Cl/SMA21      0.055   SMA5-SMA21    0.034
Cl/w_High     0.026   Vol20/Vol200  0.033   tHigh%-tLow%  0.043   tHigh%-tLow%  0.034
             
GEP          0.185   tLow%         0.208   tLow%        0.196    
tLow%        0.176   GEP           0.144   Week         0.188    
Min10        0.144   Min10         0.144   Min10        0.146    
Cl/High      0.098   Cl/High       0.093   GEP          0.134    
Week         0.094   tHigh%        0.093   tHigh%       0.068    
Cl/SMA21     0.083   Week          0.090   Cl/High      0.066    
Cl/Low       0.077   Cl/SMA21      0.087   Cl/SMA21     0.065    
Cl/(minSMA)  0.060   tHigh%-tLow%  0.057   Cl/Low       0.050    
tHigh%       0.051   Cl/w_Low      0.052   Cl/(minSMA)  0.047    
Cl/w_Low     0.033   Cl/Low        0.030   Cl/w_Low     0.039    

 
Жирным я пометил фичу Min10 которая одна давала 100-150 сделок по +1% в год в период с 200-какого то там до 2016. RF ее на первое место ни разу не поставили, ранжируя ее значимость на «бронзу». А вот если не оставить ей выбора, оставив только одну Min10, получим следующее:

  RF c Min10
Год Колл % сделка
2011 410 -0,33
2012 93 1,18
2013 93 0,6
2014 205 1,53
2015 252 1,11
2016 162 0,74
2017 129 0,46
2018 24 0,73

 На минус в 2011 году не стоит обращать внимания, RF еще не настроилась имея мало данных, и на найдя правильный порог у Min10, ну а дальше сами видите. Ну это так, лирическое отступление....
  А вот насчет VotingClassifier. Брал RF и XGB, то есть есть скрещивал ежа с ежом, нечто весьма похожее, логично получив те же яйца в профиль:  

  RF XGB VotingClassifier
Год Колл % сделка Колл % сделка Колл % сделка
2011 1026 -0,09 1210 0,18 1044 0,14
2012 195 0,98 277 0,69 244 0,69
2013 315 0,36 228 0,48 234 0,36
2014 487 0,92 472 0,54 446 0,89
2015 320 0,76 814 0,29 321 0,9
2016 214 0,77 160 0,91 181 0,76
2017 230 0,42 199 0,38 222 0,47
2018 35 0,49 30 0,2 32 0,28

  
  В общем тоже никакого особого гешефта не наблюдаю.  


2 Комментария
  • SergeyJu
    21 ноября 2019, 16:13
    Видно только одно. Нужны хорошие фичи!

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

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