Что если в качестве лейблов на выход подавать не рост/падение рынка завтра, а срабатывание каких то техиндикаторов? Есть несколько классических правил торговли. Ну например пробой снизу вверх Close BolingerUpperband это к покупке, и сверху вниз BolingerDownperband к шорту. Или дивергенция MACD. Или Close пробивает SMA. Ну а че вы смеетесь? Когда я работал в представительстве Финама, мы предлагали клиентам следовать корпоративной стратегии, а вся стратегия это пробои Болинджеров. Я, как человек который вообще тогда не понимал как это все делается, готовился услышать какую то хитрую систему для зарабатывания денег, от московских экспертов, а когда услышал «тайну», я такой «эээээ....». Или вот дивергенция MACD, открываешь википедию и там прямо «это сильнейший технический индикатор, если дивергенция то вот прям точно точно!».
Месяц назад я пробовал подать на вход CNN+GramianAngular падение/рост рынка, без каких то видимых успехов. Может тут проблема в инструменте? Попробуем спрогнозировать с помощью нейросети срабатывание этих самых техиндикаторов, подав цены накануне. Причем усложним задачу, будем подавать не точное число баров, а фиксированное, скажем 30. То есть нейросетка получает избыточные данные: мы хотим предсказать пересечение Close c SMA(25) а мы ей 30 баров предлагаем.
Сразу скажу, что результаты хорошие. Особо я не утруждался долгим обучением, но видно как сетка очень шустро, от эпохи к эпохе улучшает показатели точности. Ине суть что мы предсказываем — Bolinger, MACD, SMA, результаты примерно одинаковы, или их можно сделать одинаковыми обучив нейросеть чуть подольше. И на test выборке все хуже не становится.
Архитектура такая:
Угадывает она срабатывание тех индикаторов с точностью на test 85-90%.
Для любителей усваивать информацию зрительно, взял котировку какой то фишки, наложил на нее SMA25 и красными стрелками указал пересечение ее Close. Красные черточки сверху это пересечение сверху вниз, нижние-наоборот. Ну а зеленые это прогнозы. Как видим угадываем с высокой точностью.
Ну и некоторые циферки
Если сеть не путать и подавать точно число баров, то сеть начинает чуть быстрей обучаться, а так разницы нет, что позитивненько. Приятная инвариантность. И для смеха я сделал наоборот, дал сети недостаточное число данных (10 баров для пересечения с SMA(25)) — выкручивайся мол. Опять не стал долго обучаться, 10 минут и будя. Тем более что обучение застряла на определенной отметке, без какого то улучшения (что логично, как говорится иди незнаю куда, принеси то незнамо что-это трудно). Ну и на прогнозе чуда не произошло
Если вместо 25 необходимых подать 20 баров, то результаты будет получше:
Ну и если кто то дочитал до этого момента, вполне возможно задастся вопросом, что то типа «а зачем вообще все это нужно?!». Где профит?! Мани где?! Нет тут профитов и нет мани, мы ответили на вопрос-может ли CNN получив на выход сырой ряд ряд цен, спрогнозировать срабатывание тех индикаторов. То есть по сути, может ли CNN улавливать сложные конфигурации time series. Ответ — да, может. Ура товарищи. Вот вы можете по одному виду временного рядка сказать будет на следующем баре дивергенция MACD, или пересечение Bolinger или SMA? А моя нейросеть может.
Хотя одно практическое применение я могу придумать-ну вот например вы нашли какое то чудесное сочетание тех индикаторов, которые приносят профит. И хотите это показать публике. Но засвечивать Грааль не хотите. Ну так проставьте лейблы, и обучаете нейросеть по ним, и вот можете совать свою систему в продакшн, она еще и выглядеть будет круче, ибо «торговая система на основе нейросеть» звучит в наше время интересно, а кому нужна система на техниндикаторах?!
Для справедливости сеть все таки получила не сырой ряд данных, а предобработанный, будет интересно глянуть на сеть, если подать ей именно сырой. 1CNN. Вот этим я и займусь дальше.
А практический вывод из всего этого я вынес что надо поработать с lebeling.
Таки дела.
И коды
https://github.com/Taram1980/finance_ML/tree/master/2D_CNN_forec_SMA
SergeyJu, все тех индикаторы рассчитываются по точных формулам. и вот эти формулы я вытаскиваю из временного ряда с помощью нейросети. ну например-допустим лицо человека можно описать какой то то точной формуле (что кстати вполне возможно, антропологи на этом и сидят). но вы формулу не знаете. зато есть картинки лиц. и вот суем картинку в нейросеть и она эти формулы конечно не прописывает, но определяет что вот эта картинка создана по формуле 1, а это по формуле 2
Читаем книгу Патрик Микула -5 новых техник Эндрюса.В основе графика цены простые зигзаги с разными время циклами.
как пример… только лонг если свеча часовая растущая, то по закрытию часа покупаем и тейк ставим 50 пунктов… стопов понятное дело нет
Вот это как раз непонятно. Вы что именно «предсказывали»?
В локальном случае, когда вы анализируете лишь 1 случайную бумагу вы работаете со стохастической системой, и вам удачи не видать (уж простите).
Но, согласно теории управления, если вы повысите порядок системы у вас, возможно получиться проанализировать систему. Но в этом случае вам придется проявить аналитические способности.
Как пример: Есть бумага Сургутнефтегаз Преф. можно до посинения анализировать цену и индикаторы, но по факту это вторая производная от цены а нефть и цены на доллар. Заведите на вход вашей нейронной сети цены/индикаторы на доллар и нефть (в идеале не то что на бирже, а то что цена реализации купажа сургутнефтегаза) и цену бумаги и пробуйте анализировать так. По идее чем больше входных данных реально влияющих на цену вы сможете завести тем более точный результат вы сможете получить. А вот выбор весов — уже доверьте нейросети они явно будут переменные и нелинейные относительно друг друга.