Берем RF загоняем в нее фичи:
'Min10',
'Cl/High',
'Vol20',
'tLow%',
'Cl/Low',
'tHigh%-tLow%',
'ATRP(14)',
'DIMinus(14)',
'RSI(Close.20)',
'MomentumPct(Close.14)',
'MFI(20)',
'KST(Close.10.10.15.10.20.10.30.15)',
'TRIX(Close.10)',
'Cl/w_High',
'DSS(10. 20. 5)
Получаем следующие профиты:
Год |
Колл |
% сделка |
2011 |
611 |
0,1 |
2012 |
440 |
0,34 |
2013 |
305 |
0,42 |
2014 |
420 |
1,17 |
2015 |
263 |
0,85 |
2016 |
248 |
0,74 |
2017 |
261 |
0,41 |
2018 |
46 |
0,34 |
Mean: |
323 |
0,66 |
Если убрать прогноз на 2011 год (потому что строился он на основе обучения только за 2010 год и 2018, потому что там первые 3-4 месяца, а не весь год), то мы выходим на 323 сделки по +0,66% каждая. Это не тест, не трейн, это реальный прогноз полученный с помощью CatBoosting (отечественная разработки, не сочтите за рекламу). Можно повысив порог, увеличить средний профит на сделку, уменьшив число сделок, тут уж как каждому нравится.
А теперь та же моделька, тот же период, но давайте воспользуемся арсеналом индикаторов предложенных WealthLab, вот их скромный список:
'WilliamsR(30)',
'Volatility(24.12)',
'VHF(Close.24)',
'TRIX(Close.10)',
'StochRSI(Close.14)',
'StochD(14. 5)',
'StochK(14)',
'StdDev(Close.14.Population)',
'RVI(20)',
'RSquared(Close. 30)',
'RSI(Close.20)',
'ROC(Close.30)',
'QStick(24)',
'MomentumPct(Close.14)',
'Momentum(Close.14)',
'MFI(20)',
'MACD(Close)',
'LinearRegSlope(Close.20)',
'KST(Close.10.10.15.10.20.10.30.15)',
'HV(Close.20.252)',
'EMV(14)',
'EMMinus(Close.40)',
'EMPlus(Close.40)',
'DSS(10. 20. 5)',
'DPO(Close20)',
'CumDown(Close.4)',
'CumUp(Close.4)',
'CMO(Close.20)',
'CMF(21)',
'CCI(20)',
'ATRP(14)',
'ATR(14)',
'AroonDown(Close.20)',
'AroonUp(Close.20)',
'ADX(14)',
'ADXR(14)',
'DIMinus(14)',
'DIPlus(14)',
'DX(20)'
Само собой настройки индикаторов могут быть разными, я взял по умолчанию. На выходе:
Год |
Колл |
% сделка |
2011 |
908 |
0,17 |
2012 |
472 |
0,23 |
2013 |
772 |
0,03 |
2014 |
305 |
0,82 |
2015 |
158 |
0,33 |
2016 |
115 |
0,05 |
2017 |
115 |
0,05 |
2018 |
9 |
0,82 |
Mean: |
323 |
0,25 |
Есть разница? Есть. Модель та же, но стоит подсунуть разные фичи и как все чудно меняется. Поэтому хочу поговорить о фичах, тем более это то, единственное креативное что остается юзающему ML.
А что если использовать по одной фиче для RF? Список лучших фичей:
Фича |
Max |
Min |
Ср% |
срКолл |
'Min10', |
1,20 |
0,07 |
0,59 |
252 |
'Vol20', |
0,90 |
0,23 |
0,57 |
31 |
'Cl/High', |
0,67 |
0,15 |
0,50 |
299 |
'ATRP(14)', |
0,96 |
-0,04 |
0,45 |
175 |
'tLow%', |
0,79 |
0,18 |
0,45 |
644 |
'MomentumPct(Close.14)', |
0,71 |
-0,11 |
0,36 |
204 |
'tHigh%-tLow%', |
0,65 |
0,04 |
0,32 |
368 |
'DIMinus(14)', |
1,27 |
-0,94 |
0,32 |
222 |
'Cl/Low', |
0,52 |
0,16 |
0,31 |
535 |
'TRIX(Close.10)', |
1,27 |
-0,02 |
0,30 |
273 |
'VHF(Close.24)', |
0,46 |
0,03 |
0,27 |
190 |
'CCI(20)', |
1,10 |
-0,10 |
0,27 |
153 |
'Cl/w_Low', |
0,82 |
0,00 |
0,26 |
176 |
'MFI(20)', |
0,76 |
0,07 |
0,25 |
360 |
'KST(Close.10.10.15.10.20.10.30.15)', |
0,70 |
-0,04 |
0,25 |
423 |
'Cl/(maxSMA)', |
0,58 |
-0,18 |
0,23 |
308 |
'wdif', |
0,91 |
-0,16 |
0,23 |
213 |
'ROC(Close.30)', |
0,75 |
-0,10 |
0,20 |
434 |
'StochK(14)', |
0,40 |
0,00 |
0,16 |
186 |
'Cl/w_High', |
0,48 |
-0,14 |
0,16 |
129 |
'CMO(Close.20)', |
0,49 |
-0,12 |
0,14 |
360 |
'DIPlus(14)', |
0,79 |
-0,23 |
0,14 |
269 |
'EMV(14)', |
0,25 |
0,08 |
0,13 |
297 |
'RSI(Close.20)', |
0,33 |
-0,10 |
0,13 |
352 |
'ADX(14)', |
0,40 |
-0,17 |
0,13 |
57 |
'SMA5-SMA21', |
0,20 |
0,00 |
0,11 |
413 |
'StdDev(Close.14.Population)', |
0,30 |
-0,04 |
0,11 |
334 |
'LinearRegSlope(Close.20)', |
0,18 |
-0,01 |
0,11 |
450 |
'HV(Close.20.252)', |
0,24 |
-0,04 |
0,10 |
96 |
'StochRSI(Close.14)', |
0,17 |
-0,04 |
0,10 |
321 |
'GEP', |
0,31 |
-0,19 |
0,09 |
361 |
'MACD(Close)', |
0,22 |
0,03 |
0,09 |
584 |
Как видим даже использовав единственную фичу можно вполне выйти на что то рабочее, это еще один камушек в пользу важности работы с фичами. А что если запихнуть все возможные фичи и всю эту кашу кинуть RF?! Получаем:
Год |
Колл |
% сделка |
2011 |
963 |
0,06 |
2012 |
409 |
0,27 |
2013 |
508 |
0,17 |
2014 |
366 |
1,14 |
2015 |
198 |
0,79 |
2016 |
180 |
0,62 |
2017 |
153 |
0,66 |
2018 |
28 |
0,42 |
|
302 |
0,61 |
Ну видим лучше не стало, стало даже чуть хуже. Как же нам сделать так, чтобы за счет фичей улучшить результаты?
Можно так: берем данные за 2010 год, строим модель, получаем оценку важности фичей, и уже по новой строим модельку с учетом лучших фичей. Лучшие фичи это например лучшие по списку, или из числа фичей, чьи показатели не меньше какого то порогового значения. Ну и делаем прогноз на 2011 год и смотрим профит. Для 2012 года берем оценку важности фичей за 2010-2011 годы… итп. итд. Гешефта не получилось.
Вот например если брать лучшие 20 фичей:
|
RF20 |
Год |
Колл |
% сделка |
2011 |
1026 |
-0,09 |
2012 |
289 |
0,76 |
2013 |
366 |
0,23 |
2014 |
506 |
0,93 |
2015 |
351 |
0,74 |
2016 |
241 |
0,81 |
2017 |
259 |
0,46 |
2018 |
50 |
0,25 |
|
335 |
0,66 |
Стало чуть больше сделок, но принципиально ничего не поменялось. Вот если взять фичи со значимостью более 0,04
Нау |
RF фичи>0,04 +60% |
Год |
Колл |
% сделка |
2011 |
58 |
0,34 |
2012 |
195 |
0,81 |
2013 |
198 |
0,45 |
2014 |
271 |
1,16 |
2015 |
216 |
0,93 |
2016 |
148 |
0,84 |
2017 |
80 |
0,26 |
2018 |
19 |
0,86 |
|
185 |
0,74 |
Средняя выросла, но за счет резкого падения числа сделок. Ерунда.
Но самая большая ерунда это то как RF оценивает важность фичей и то что мы получаем на выходе, в профитах. То как RF оценивает важность фичей, и то как повышают профитность те или иные фичи-это часто два большие разницы. Почему это происходит можно обьяснить тем что настраиваем мы модель на оценку угадал направление движения, а профитность на сделку это не только это но и то далеко рынок прошел по данному направлению. Наверняка многие имеют работающие системы за счет разных составляющих-в одной случаи за счет того что если сделок профитных немного, но их профиты велики (классический пример трендовых систем), а в другом случаи выхлоп профтных сделок и убыточных одинаков, но профитные составляют 75% от общего числа сделок.
Поскольку у Вас есть резалты на отдельных фичах, Вы сразу увидите, в какой паре есть синергетический эффект, а в какой резалт не дает принципиального плюса к лучшей фиче из этой пары.
Следует ли из этого, что свойство «быть лучше» сохранится? Имхо, да, с высокой доле уверенности.
На что я опираюсь в таком выводе в первую очередь? На том, что объем используемых данных запредельно превышает число степеней свободы у фичей и их комбинаций. Автор же показал, что случайные фичи — говно и их простые комбинации ничего не дают. Следовательно, дающие фичи — не случайны.