Приходит как-то раз поручик Ржевский к своему командиру и говорит: "Вы знаете, сейчас ведь на дворе зима, очень холодно! Легко простудиться можно... Ну, вот, жена моя и простудилась, а лекарства сейчас, знаете, какие дорогие?... Моей зарплаты не всегда хватает. Не могли бы Вы, Ваша Светлость, одолжить мне несколько рублей до получки на лекарства жене?". На что командир ему и отвечает: "Проучик, поцелуйте меня в шею!". Поручик недоумевает: "???". А командир говорит: "Ну, Вы же тоже издалека начали!"
То не сказка еще, то - призказка. Сказка - впереди!
Поскольку решить вопрос о прогнозировании временного ряда не удалось наскоком, начнем подбираться к решению издалека. Хочу начать с прогнозирования самого простого: сглаженного временного ряда. Или, проще говоря - с прогнозирования поведения отдельно взятой скользящей средней (или в паре-тройке с другими скользящими средними с сопоставимыми периодами усреднения).
Перед тем, как экспериментировать, - снова порассуждаем....
Ну, во-первых, как ни крути, а скользящие средние у нас отражают тренд. Являясь, по сути, простейшим цифровым фильтром (отфильтровываются высокочастотные колебания, но "проходят" низкочастотные), скольящая средняя (СС или МА, - по "ихнему". Здесь и далее по тексту, если будет в скобках указываться значение, то это - период усреднения: наприме, МА(3) - скользящая средняя с периодом 3) хорошо указывает общее направление тенденции и ее (тенденции) "динамичность": бывают быстрые и медленные тренды.
При чем, есть даже такое мнение, что за все эти десятки (а если начинать отсчет еще от японцев, придумавших "свечной анализ", то сотни, получается) лет, что существует технический анализ, пока что еще не придумано ничего более простого и точного, чем СС.
В то же время, конечно, нельзя не отметить недостатков СС, а именно - запаздывания сигнала. Второй недостаток - это масса ложных сигналов во время флэта (когда тренд горизонтальный, а рынок идет "вправо"). Запаздывает СС в силу своей же собственной природы: на половину периода усреднения. Т.е., можно сказать, что СС с бОльшим периодом усреднения, конечно, в общем случае, дает более надежный сигнал, но гораздо поже, чем хотелось бы.
Классический ТА (теханализ) борется с этим явлением, например, таким образом, что период усреднения СС динамически изменяется: для этого, в частности (как один из многих вариантов), используется ЕR - коэффициент эффективности рынка (его краткое описание - в ветке "Эксперимент 1"), и построенная на его основе AMA - адаптивная скользящая средняя.
Как она работает? В те периоды, когда ны рынке - флэт, т.е., нет направленного вверх или вниз движения, период усреднения СС резко возрастает: она становится гораздо менее чувствительна к незначительным колебаниям рынка. Но, как только рынок становится эффективным, период усреднения падает и АМА гибко реагирует даже на небольшие движения.
(Более подробное описание АМА и ER - на сайте Константина Копыркина (см. Яндекс), а, собственно, индикатор АМА, написанный под МТ можно скачать на сайте Метаквотов. Я скажу лишь еще только то, что в АМА используется не простая скользящая средняя, а экспоненциальная).
Я же пред(по)лагаю побороться с запаздыванием путем предсказания будущего поведения ее (этой самой СС). Ибо, даже АМА не лишена некоторого запаздывания, обусловленного, в частности, тем, что для вычисления ER также требуется определенный период.
Ну, и теперь - самое главное: из первого эксперимента стало ясно, что если просто подавать на НС приращения значений СС за несколько периодов тому назад, и просить от нее значение этого самого приращения на один период тому вперед, то возможности такого предсказателя будут весьма ограничены. Я даже сомневаюсь, что при такой постановке вопроса НС вообще сможет предсказывать изменения направления СС, но не буду утверждать: не экспериментировал.
Итак, надо определить некоторый круг параметров, присущих СС в каждый данный момент. И уже от этих параметров как-то пытаться прогнозировать. Возможно, при наличии нескольких параметров, и углубления скользящего окна более, чем на 4-5 периодов назад окажется не лишним, а ведь, в противном случае (см. ветку "Эксперимент 1") - нейросети совершенно не важно для прогнозирования следующего шага, как СС вела себя 125 лет тому назад гы-гы!
К делу!
Во-вервых, у любого тренда есть направление: предполагается в одельный параметр вынести направление СС:
-1 = снижение; 0 = горизонтальное движение; 1 - рост.
Тогда и приращения можно будет брать по модулю, а, следовательно, количество примеров как бы возрастет (??).
Во-вторых, у любого тренда есть скорость: предполагается добавить в качестве отдельного параметра некоторую среднююю скорость приращения СС в данный момент времени (за n периодов), ибо, как стало понятно, если НС видит, что последнее приращение составило, например, 10 пунктов, а предпоследнее - 8 пунктов, а еще до того - 5 пунктов, то для нейросети вовсе не очевидно, что скорость роста скользящей средней от раза к разу увеличивается!
В третьих, у любого тренда есть длительность: предполагается ввести для каждого тренда (вплоть до смены его на противоположный) - нумерацию значений. Таким образом, будет видно, что данное значение, подаваемое на входы НС в очередной раз уже 125-е по счету (к примеру), - и отсюда нейросеть узнает, что бывают длительные тренды, у которых на 125-м значении все только начинается, а бывают - короткие, у которых 125 - это "потолок" - последнее значение перед сменой тренда.
Ну, если изголяться дальше, то можно ввести еще, например, угол касательной СС в данной точке по отношению к оси абсцисс. Правда, я не уверен, что это необходимо, но поэкспериментировать можно фик его знает, на какие глубокие размышления о смысле бытия это натолкнет мои электронных мозги.
Ах, да! и вот еще что! Когда я производил эксперименты в первой серии я еще задумывался: нет ли смысла подавать на входы НС не только приращения каждой из СС в отдельности (если речь идет о паре или тройке СС, рассматриваемых вместе), но и еще и расстояние между ними! Так вот, думаю, что есть... опять же - буду экспериментировать.
Ну, и если речь пошла уже о сочетаниях СС, то, видимо, еще есть смысл отдельно подавать на входы НС, находится ли "быстрая" СС выше или ниже "медленной". Хотя, казалось бы, это - и так очевидно из знака расстояния от одной из СС до другой.... впрочем, это - очевидно для человека... но фик его знает очевидно ли это для инскусственного интеллекта???
Пока буду с этим экспериментировать... а заодно, подумаю, что еще можно выделить в качестве свойств СС, чтобы подать сие на входы НС ...