Программные продукты и системы /Software & Systems
№ 2 (110), 2015
УДК 004.8, 004.94, 51-74, 621.37 Дата подачи статьи: 11.11.14
DOI: 10.15827/0236-235X.110.070-074
РЕШЕНИЕ ЗАДАЧИ ПРОГНОЗИРОВАНИЯ С ИСПОЛЬЗОВАНИЕМ НЕЙРОННЫХ СЕТЕЙ ПРЯМОГО РАСПРОСТРАНЕНИЯ НА ПРИМЕРЕ ПОСТРОЕНИЯ ПРОГНОЗА РОСТА КУРСА АКЦИЙ
И. А. Лесик, магистр, старший инженер (Тверской государственный университет, ул. Желябова, 33, г. Тверь, 170100, Россия, НПО РусБИТех, ул. Жигарева, 50, г. Тверь, 1 70022, Россия)
В статье рассматривается проблема прогнозирования курса акций с использованием нейронных сетей прямого распространения. В качестве основы для алгоритмов были использованы однослойный перцептрон (без скрытого слоя) и многослойный перцептрон (по Румельхарту). Реализованы метод обратного распространения ошибки для обучения сети, а также подбор оптимального значения параметра скорости обучения для алгоритмов. Приводятся условия сходимости алгоритмов (в смысле сходимости среднеквадратического значения к некоторой константе) и оценки асимптотической сложности для алгоритмов. Проведены испытание и анализ результатов прогнозирования с использованием временного ряда динамики изменения курса акций российской энергетической компании ОАО «Газпром».
Традиционные методики оценки точности прогноза, основанные на измерении отклонения прогноза от реальных данных (например, вычисление средней абсолютной оценки в процентах (MAPE) или средней абсолютной ошибки (MSE)) не всегда позволяют адекватно оценить качество прогноза для динамики стоимости акций, которым свойственна высокая волатильность, поскольку для таких данных важнее определить, когда будет рост, а когда падение, а самое главное - трудно спрогнозировать скачки, отделяющие друг от друга стационарные периоды изменения стоимости. Поэтому в статье была использована методика оценки качества прогноза, альтернативная таким методикам, как подсчет MAPE и MSE.
На основе результатов прогнозирования с использованием методики подсчета точности результатов прогнозирования и анализа графика прогноза делается вывод о возможности получения достоверных прогнозов роста курса акций с использованием нейронных сетей прямого распространения.
Ключевые слова: нейронные сети, прогнозирование, акции, фондовый рынок, перцептрон, ARIMA.
Проблема построения прогнозов изменения курсов акций с помощью нейронных сетей достаточно актуальна, поскольку вызывает большой интерес у инвесторов, аналитиков, а также у участников биржевой торговли (например у трейдеров). В данной статье продемонстрировано, что с помощью нейронных сетей можно добиться лучших результатов прогнозирования, чем с помощью других методов (например ARIMA [1]), даже при использовании относительно простых сетей.
Описание алгоритмов
Для таких целей, как прогнозирование временных рядов, наиболее подходят нейронные сети прямого распространения, использующие обучение с учителем [2], поскольку в отличие, например, от задач кластеризации всегда можно подготовить множество контрольных примеров, основываясь на исторических данных, с помощью которых можно вычислить ошибку, необходимую для работы таких алгоритмов. К таким сетям относятся однослойный перцептрон [3], перцеп-трон Розенблатта [4], многослойный перцептрон [3], сети Ворда, сети на основе радиальных базисных функций, машины опорных векторов и другие. У этих сетей много общего, прежде всего -алгоритм обратного распространения ошибки, что позволяет обобщать и считать класс решаемых с их помощью задач, результаты и ограничения схожими.
Для исследования возможностей прогнозирования были реализованы (с некоторыми доработками, указанными ниже) однослойный и многослойный перцептроны (по Румельхарту [5]).
Рассмотрим алгоритм работы при использовании однослойного перцептрона. В этой модели входные элементы напрямую соединены с выходными с помощью системы весов, и она является частным случаем классического перцептрона, в котором каждый S-элемент однозначно соответствует одному A-элементу, S-A связи имеют вес +1 и все A-элементы имеют порог 0 = 1.
Введем обозначения: s - массив входных данных; n - число нейронов (размерность выходных данных); m< | s | - размер входного сигнала (число входов каждого нейрона); ц - параметр скорости (интенсивности) обучения, используемый для адаптации вектора весов (подробнее см. в [3]); x(i) = [xj(i), x2(i), ..., xm(i)]T - входной m-мерный сигнал на шаге i; d(i) = [dj(i), d2(i), ..., dn(i)]T - выходной n-мерный сигнал (реальный) на шаге i; y(i) - выходной n-мерный сигнал (вычисленный) на шаге i; e(i) - сигнал ошибки (n-мерный) на шаге i;
wj(i) = [w,1(i), w^O), ..., wjm(i)]T, j = 1,n - синаптические веса нейрона j на шаге i.
Структура сети в случае однослойного перцептрона показана на рисунке 1.
Метод обучения сети: метод обратного распространения ошибки (backpropagation).
70
Программные продукты и системы /Software & Systems
№ 2 (110), 2015
Алгоритм работы сети подробно описан и обоснован в [3, 4], поэтому остановимся лишь на его основных шагах.
1. Инициализируем нейронную сеть (шаг i=0), присвоив значение 0 синаптическим весам нейрона: wjk(0)=0, j = 1, n, k = 1, m. Заметим, что в отличие от классического перцептрона не используется дополнительный фиксированный вход х0 (в случае его использования количество входов у каждого нейрона было бы равно m+1).
2. Используя цикл по массиву исходных данных с помощью метода скользящего окна [6], на каждом шаге i делаем контрольную выборку x(i) из массива входных данных (всего будет | s \ —m—n шагов), а также результирующую выборку d(i), начиная с первого элемента, следующего за контрольной выборкой в s. Шаги 3-6 производятся внутри цикла.
3. В цикле по всем нейронам вычисляем с помощью результирующей функции фактический отклик y(i) нейрона. Шаги 4, 5, 6 производятся в этом же цикле. Результирующая функция - скалярное произведение контрольной выборки на веса нейрона. В отличие от стандартной модели перцептрона [3] в качестве результата берется само число, а не индикаторная функция числа:
m __
yj (О = Z xk (0 wjk (i)j =1 n.
k=1
4. Находим разницу между фактическим и вычисленным значениями (ошибку): e(i)=d(i) -y(i) (в векторном виде) или то же самое ej(i)=dj(i) —y/j), j = 1, n .
5. Производим адаптацию вектора весов по формуле
Wjk(i+1)= wJk(i) + цхк(Г) e}(i), j = 1, n, к = 1, m .(1) (полученные значения будут использоваться на следующем шаге итерации i+1).
Данная формула является самой простой в реализации, вместо нее могут использоваться более сложные формулы, дающие более быструю сходимость, в том числе те, в которых п зависит от j.
6. Смещаем на 1 вправо точку отсчета контрольной выборки в массиве s (увеличиваем i на 1) или выходим, если i = \ s \ - т.
Асимптотическая сложность алгоритма [7] как функции четырех параметров: s - массива входных данных, n - числа нейронов, т - размера входного сигнала, п - свободного параметра вектора весов (мало по сравнению с первыми тремя) равна O( | s \-n т), где | s \ - число элементов в s. Поясним эту оценку: в алгоритме есть цикл длиной \ s \, внутри которого несколько циклов, в том числе цикл по всем нейронам (длины n), содержащий цикл по всем элементам входного сигнала длины т. Поскольку это будет максимальной вложенностью циклов в алгоритме и остальные циклы не будут оказывать влияние на эту оценку, всего будет \ s \- n ■ т операций. п не учитывается в оценке, поскольку мало по сравнению с другими параметрами, и участвует только в умножении в формуле (1), не являясь ограничителем какого-либо цикла. В некоторых случаях число нейронов n и размер входного сигнала т заведомо малы по сравнению с \ s \, в этом случае вычислительная сложность будет равна O( \ s \).
Данный алгоритм сходится в смысле средне-
e2 (n)
квадратического значения, то есть------> const
при n^x, 2
0 < ц <
I
если ц
, где Хтах
удовлетворяет условию наибольшее собственное
значение Rx, а Rx - матрица корреляции вектора входного сигнала x(i), определяемая следующим
1 г
выражением: R = lim — x (n)x(n). Заметим, что
n^x n
матрица Rx будет вырожденной (фактически будет вектором).
На практике значение Xmax часто невозможно вычислить и вместо него используются другие, более грубые оценки, например, след матрицы Rx или сумма среднеквадратических значений входных сигналов. Доказательство сходимости выходит за рамки этой статьи, его можно найти в работах [4, 8].
Приведенная оценка п является неконструктивной и не позволяет сузить множество допустимых значений до приемлемого уровня.
Вместо этого можно использовать поиск такого п, при котором сойдется алгоритм, последова-
71
Программные продукты и системы /Software & Systems
№ 2 (110), 2015
тельным приближением по следующей схеме. Берется некоторое начальное п, вычисляется с его использованием результат; результат проверяется на адекватность статистических характеристик (они должны соответствовать начальному массиву s). Если характеристики не соответствуют, п уменьшается, например, делением на а если соответствуют - поиск п останавливается, поскольку дальнейшее уменьшение п будет приводить к ухудшению результатов прогнозирования. Необходимо отметить, что алгоритм поиска п, приведенный выше, является недетерминированным, число его итераций ничем не ограничено. При практической реализации это заставляет ограничивать максимальное число шагов некой константой, при достижении которой дальнейшие поиски п останавливаются.
Алгоритм для многослойной цепи (многослойный перцептрон Румельхарта [3, 5]) аналогичен случаю однослойной цепи, в нем заслуживает внимания лишь способ обратного распространения ошибки для слоев, отличных от начального и конечного. Поскольку на практике использование многослойной сети для задачи прогнозирования курса акций не дало особых преимуществ по сравнению с однослойной сетью, приводить алгоритм полностью не имеет смысла. Остановимся лишь на его основных отличиях от случая однослойной сети.
Введем дополнительные обозначения: L - число слоев нейронной сети; mi, l = 1, L - количество
нейронов i-го слоя нейронной сети, причем mL = n; 8lj(i), j = 1, m - локальный градиент j-го нейрона i-го слоя нейронной сети.
У обозначений y(i) и Wj(i), введенных ранее (в описании однослойной сети), появится дополнительный индекс i, обозначающий номер слоя нейронной сети.
Шаги алгоритма аналогичны случаю однослойной цепи за некоторыми исключениями.
• На шаге 3 добавляется цикл по всем слоям l = 1, L, формула для вычисления yy(i) будет сле-
mi-i __
дующей: yj (О = У y(i_1)к (0 Wjk OX l = 1L,
k=1
j = 1, m , причем yok (i) = xk (i), k = 1, m; m0 = m.
• На шаге 4 в качестве y(i) используется yL(i).
• Шаг 5 имеет самую неочевидную реализацию. Вычисления на этом шаге производятся в порядке, обратном порядку слоев (вначале вычисляются значения на L-м слое, потом на слое L-1 и так далее). Для слоя L: 8Lj (i) = e (i), j = 1,n,
WLjk (i +1) = WLjk (i) (i) yLk j = l mL, k = 1 mL-1 ;
для слоев 1<L:
ml+2 ___ __________
8 j(i) = Z 8(l+1 )h (i)w«+1) jh (il J=1 m+1, l =1,(L -1),
h=1
wljk+1) = wm (0+^8j- (0 Ул (^), j = 1 m, k = 1 m-1.
Структура сети в случае многослойного пер-цептрона показана на рисунке 2.
Input Layer 1 Layer 2 Layer L
Рис. 2. Структура сети в случае нескольких слоев: input - входной сигнал, layer x - слой нейронов x Fig. 2. A multilayer network structure: input - input signal, layer x - neural layer x
72
Программные продукты и системы /Software & Systems
№ 2 (110), 2015
Метод обучения сети: метод обратного распространения ошибки (backpropagation).
Анализ полученных результатов
Традиционные методики оценки точности прогноза, основанные на измерении его отклонения от реальных данных (например вычисление MAPE, MSE), не всегда позволяют адекватно оценить качество прогноза для динамики стоимости акций (которым свойственна высокая волатильность), поскольку для таких данных важнее определить, когда будет рост, а когда падение, а самое главное - трудно спрогнозировать скачки, отделяющие стационарные периоды изменения стоимости друг от друга. Поэтому следует перейти от рассмотрения временного ряда x цены акции к относительному изменению роста цены у. Он рас-
считывается по формуле yi = xilxi-1 i = 2, n, где n -количество элементов x (количество элементов y будет при этом равно n - 1). Для прогнозирования с помощью многослойной нейронной сети хорошие результаты на практике дают центрирование и нормировка выборки y. Заметим, что при необходимости возможен обратный переход от временного ряда роста к временному ряду цены.
Процент правильности прогноза будем подсчитывать по формуле
к
Р = ~
(2)
n
где k - число правильно угаданных направлений возрастаний/убываний; n - число предсказанных значений.
Для тестирования возьмем некоторый временной ряд (курс акций Газпрома за определенный период, снятый с интервалами 5 минут) и перейдем к ряду роста цены y. Построим прогноз по временному ряду a, состоящему из 1 000 значений, требуется спрогнозировать по а временной
ряд b1 из 20 значений. Также имеется ряд b2 из 20 значений, которые будут в реальности после a. Ряд b2 не используется для прогнозирования, он нужен для оценки качества прогноза путем сравнения b1 и b2 с использованием формулы (2).
Спрогнозируем также временной ряд b l_arima по ряду a c помощью метода ARIMA для сравнения прогнозирования с помощью нейронной сети с этой популярной и одной из лучших в своем классе методикой.
Представим результаты прогнозирования в виде таблицы и в графическом виде (рис. 3).
Сравнение результатов прогнозирования Comparing forecast results
Ь1 (нейронная сеть) b1 arima (ARIMA (1, 0, 1)) b2 (фактическое значение)
0,8410152456 0,0357256 -0,187476664
-0,6085871832 0,00304046 -0,250027267
-0,2958138942 -0,0040121 0,062526288
0,0602101273 -0,00398321 0,062521419
0,6979096991 -0,00398407 0,000000001
0,2241404152 -0,00398404 -0,062516551
-1,0177433198 -0,00398405 -0,375128513
-0,5518799968 -0,00398385 0,250202574
0,2205202909 -0,00398385 -0,187593472
0,1053097131 -0,00398385 0,000000001
-0,2236531147 -0,0039835 -0,125091542
-0,1824541551 -0,00398345 -0,062555517
-0,0207276381 -0,00398355 -0,062560391
-0,0148044261 -0,00398365 -0,375391597
-0,2578582159 -0,00398305 -0,125189064
-0,632071778 -0,0039830 -0,37562576
-0,2379154636 -0,00398316 -0,688969551
0,3325241658 -0,00398295 0,313436938
0,0613303216 -0,00398278 0,563966327
0,0915681749 -0,00398265 0,250475764
Точность прогноза, вычисленная по формуле 2, составляет 75 % для нейронной сети и 55 % для ARIMA. Видно, что с помощью нейронной сети удалось более правильно угадать направления роста и падения, чем у ARIMA, что подтверждает результаты, полученные в [6].
На основании изложенного сделаем следующие выводы. С помощью нейронных сетей можно добиться хороших результатов в прогнозировании курса акций, прогноз будет гораздо точнее отражать поведение временного ряда, чем при использовании таких методов прогнозирования, как тренды и ARIMA.
Литература
1. Седжвик Р., Уэйн К. Алгоритмы на Java. 4-е изд. М.: Вильямс, 2013. 848 с.
73
Программные продукты и системы /Software & Systems
№ 2 (110), 2015
2. Мицель А.А., Ефремова Е.А. Прогнозирование динамики цен на фондовом рынке. Изв. Томского политех. ун-та. 2006. № 8. Т. 309. С. 197-201.
3. Хайкин С. Нейронные сети: полный курс. М.: Вильямс, 2006. 1105 с.
4. Розенблатт Ф. Принципы нейродинамики. Перцептро-ны и теория механизмов мозга. М.: Мир, 1965. 478 с.
5. Терехов С.А. Лекции по теории и приложениям искусственных нейронных сетей. Лаборатотория искусственных нейронных сетей НТО-2, ВНИИТФ, Снежинск; URL: http:// alife.narod.ru/lectures/neural/Neu_index.htm (дата обращения: 15.10.2014).
6. Крючин О.В., Козадаев А.С., Дудаков В.П. Прогнозирование временных рядов с помощью искусственных нейронных сетей и регрессионных моделей на примере прогнозирования котировок валютных пар // Исследовано в России. 2010; URL: http://zhurnal.ape.relarn.ru/articles/2010/030.pdf (дата об-
ращения: 15.10.2014).
7. Абрамов С.А. Вычислительная сложность алгоритмов: конспект лекций, 2005. URL: http://cmcstuffesyr.org/vmkbotva-r15/3курс)))/6Семестр/Вычислительная сложность алгоритмов/ abramov10_2005.pdf (дата обращения: 15.10.2014).
8. Андриенко В.М. Идентификация модели динамики украинского фондового индекса ПФТС. Технологический аудит и резервы производства. 2012. N° 4 (8). Т. 6. С. 3-4.
9. Шиян Д., Гутуров А. Отдельные проблемы прогнозирования курсов акций с учетом периодической компоненты // Рынок ценных бумаг. 2007. № 3. С. 77-80.
10. Widrow B., McCool J.M., Larimore M.G. and Johnson Jr. C.R. Stationary and nonstationary learning characteristics of the LMS adaptive filter. Proc. of the IEEE, 1976, vol. 64, pp. 11511162.
11. Уоссермен Ф. Нейрокомпьютерная техника. Теория и практика. М.: Мир, 1992. 183 с.
DOI: 10.15827/0236-235X.109.070-074 Received 11.11.14
FORECASTING STOCK PRICE GROWTH USING FEEDFORWARD NEURAL NETWORKS Lesik I.A., Senior Engineer, Master, [email protected] (Tver State University, Zhelyabov St. 33, Tver, 170100, Russian Federation,
NPO RusBITeh, Zhigarev St. 50, Tver, 170022, Russian Federation)
Abstract. The article considers the problem of predicting stock prices using feedforward neural networks. The author used a single-layer Perceptron (without the hidden layer) and a multilayer perceptron (by Rumelhart) as a basis for the algorithms. He also implemented a backpropagation algorithm for training neural networks and optimum value selection of a learning rate parameter for algorithms. The paper specifies the conditions of algorithm convergence (in the sense of rms convergence to some constant). There is an estimate for the asymptotic complexity of algorithms. The paper also includes a test and analysis of forecast results using time series of share prices changes dynamics in of Russian power company OAO "Gazprom".
Traditional methods of estimating prediction accuracy are based on the measurement of the forecast deviation from real data (for example, the calculation of the average absolute percentage assessment (MAPE) or average absolute error (MSE). They do not always make possible to assess forecast quality for stock value dynamics adequately. Stocks are characterized by high volatility since such data needs to determine when the growth and fall will be, and most importantly it is difficult to predict leaps separating stationary periods of value changes. Therefore, this article uses assessment methodology of forecast quality which is an alternative to such methods as MAPE and MSE counting.
The results of prediction using the calculation of prediction accuracy and the analysis of the forecast diagram allow making a conclusion about the possibility of obtaining a reliable forecast of stock growth using feedforward neural networks.
Keywords: neural networks, forecasting, stocks, stock market, perceptron, ARIMA.
References
1. Sedgewick R., Wayne K. Algorithms. Addison-Wesley Professional Publ., 2011, 4th ed., 992 p. (Russ. ed.: Moscow, Vilyams Publ., 2013, 848 p.).
2. Mitsel A.A., Efremova E.A. Forecasting stock market price dynamics. Izvestiya Tomskogo politekhnicheskogo universiteta [News of Tomsk Polytechnical Univ.]. 2006, vol. 309, no. 8, pp. 197-201 (in Russ.).
3. Haykin S. Neyronnye seti: polny kurs [Neural Networks: A Comprehensive Foundation]. 2nd ed., Vilyams Publ., 2006, 1105 p.
4. Rosenblatt F. Principles of neurodynamics. Perceptrons and the theory of brain mechanisms. Washington, Spartan Books Publ., 1962, 616 p. (Russ. ed.: Moscow, Mir Publ., 1965, 478 p.).
5. Terekhov S.A. Lektsiipo teorii iprilozheniyam iskusstvennykh neyronnykh setey [Lectures on the Theory and Applications of Artificial Neural Networks]. Laboratotoriya Iskusstvennykh Neyronnykh Setey NTO-2. VNIITF Publ., Snezhinsk. Available at: http://alife.narod.ru/lectures/neural/Neu_index.htm (accessed October 15, 2014).
6. Kryuchin O.V., Kozadaev A.S., Dudakov V.P. Forecasting time sets using artificial neural networks and regression models as the example of forecasting currency pairs quotation. Issledovano v Rossii [Researhed in Russia]. 2010. Available at: http://zhurnal.ape.relarn.ru/articles/2010/030.pdf (accessed October 15, 2014).
7. Abramov S.A. Konspekt lektsiy "Vychislitelnaya slozhnost algoritmov” [Computing Complexity of Algorithms: Lecture Notes]. 2005. Available at: http://cmcstuff.esyr.org/vmkbotva-r15/3 курс)))/6Семестр/Вычислительная сложность ал-горитмов/abramov10_2005.pdf (accessed October 15, 2014).
8. Andrienko V.M. Uthentication of model of dynamics ukrainian fund index of PFTS. Tekhnologicheskiy audit i rezervyproizvodstva [Technology Audit and Production Reserves]. 2012, vol. 6, no. 4 (8), pp. 3-4.
9. Shiyan D., Guturov A. Several issues of forecasting stock prices in terms of periodical element. Rynok tsennykh bumag [Stock Market]. 2007, no. 3, pp. 77-80 (in Russ.).
10. Widrow B., McCool J.M., Larimore M.G., Johnson Jr. C.R. Stationary and nonstationary learning characteristics of the LMS adaptive filter. Proc. of the IEEE. 1976, vol. 64, pp. 1151-1162.
11. Wasserman P.D. Neural computing: Theory and Practice. Van Nostrand Reinhold, 1989 (Russ. ed.: Moscow, Mir Publ., 1992, 183 p.).
74