ISSN 0236-235X (P)
ISSN 2311-2735 (E)

Journal influence

Higher Attestation Commission (VAK) - К1 quartile
Russian Science Citation Index (RSCI)

Bookmark

Next issue

4
Publication date:
09 December 2024

Forecasting stock price growth using feedforward neural networks

Date of submission article: 11.10.2014
UDC: 004.8, 004.94, 51-74, 621.37
The article was published in issue no. № 2, 2015 [ pp. 70-74 ]
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 algo-rithms. 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 con-vergence 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 "Gaz-prom". 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 pre-dict 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 mak-ing a conclusion about the possibility of obtaining a reliable forecast of stock growth using feedforward neural networks.
Аннотация:В статье рассматривается проблема прогнозирования курса акций с использованием нейронных сетей прямого распространения. В качестве основы для алгоритмов были использованы однослойный перцептрон (без скрытого слоя) и многослойный перцептрон (по Румельхарту). Реализованы метод обратного распространения ошибки для обучения сети, а также подбор оптимального значения параметра скорости обучения для алгоритмов. Приводятся условия сходимости алгоритмов (в смысле сходимости среднеквадратического значения к некоторой константе) и оценки асимптотической сложности для алгоритмов. Проведены испытание и анализ результатов прогнозирования с использованием временного ряда динамики изменения курса акций российской энергетической компании ОАО «Газпром». Традиционные методики оценки точности прогноза, основанные на измерении отклонения прогноза от реальных данных (например, вычисление средней абсолютной оценки в процентах (MAPE) или средней абсолютной ошибки (MSE)) не всегда позволяют адекватно оценить качество прогноза для динамики стоимости акций, которым свойственна высокая волатильность, поскольку для таких данных важнее определить, когда будет рост, а когда падение, а самое главное – трудно спрогнозировать скачки, отделяющие друг от друга стационарные периоды изменения стоимости. Поэтому в статье была использована методика оценки качества прогноза, альтернативная таким методикам, как подсчет MAPE и MSE. На основе результатов прогнозирования с использованием методики подсчета точности результатов прогнозирования и анализа графика прогноза делается вывод о возможности получения достоверных прогнозов роста курса акций с использованием нейронных сетей прямого распространения.
Authors: Lesik I.A. (_ilialesik@gmail.com) - Tver State University, Tver , Russia,
Keywords: arima, perceptron, stock market, stocks, forecasting, neural network
Page views: 17974
Print version
Full issue in PDF (4.84Mb)
Download the cover in PDF (0.35Мб)

Font size:       Font:

Проблема построения прогнозов изменения курсов акций с помощью нейронных сетей достаточно актуальна, поскольку вызывает большой интерес у инвесторов, аналитиков, а также у участников биржевой торговли (например у трейдеров). В данной статье продемонстрировано, что с помощью нейронных сетей можно добиться лучших результатов прогнозирования, чем с помощью других методов (например ARIMA [1]), даже при использовании относительно простых сетей.

Описание алгоритмов

Для таких целей, как прогнозирование временных рядов, наиболее подходят нейронные сети прямого распространения, использующие обу- чение с учителем [2], поскольку в отличие, например, от задач кластеризации всегда можно подготовить множество контрольных примеров, основываясь на исторических данных, с помощью которых можно вычислить ошибку, необходимую для работы таких алгоритмов. К таким сетям относятся однослойный перцептрон [3], перцептрон Розенблатта [4], многослойный перцептрон [3], сети Ворда, сети на основе радиальных базисных функций, машины опорных векторов и другие. У этих сетей много общего, прежде всего – алгоритм обратного распространения ошибки, что позволяет обобщать и считать класс решаемых с их помощью задач, результаты и ограничения схожими.

Для исследования возможностей прогнозирования были реализованы (с некоторыми доработками, указанными ниже) однослойный и многослойный перцептроны (по Румельхарту [5]).

Рассмотрим алгоритм работы при использовании однослойного перцептрона. В этой модели входные элементы напрямую соединены с выходными с помощью системы весов, и она является частным случаем классического перцептрона, в котором каждый S-элемент однозначно соответствует одному A-элементу, S–A связи имеют вес +1 и все A-элементы имеют порог θ = 1.

Введем обозначения: s – массив входных данных; n – число нейронов (размерность выходных данных); m<½s½ – размер входного сигнала (число входов каждого нейрона); h – параметр скорости (интенсивности) обучения, используемый для адаптации вектора весов (подробнее см. в [3]); x(i) = [x1(i), x2(i), …, xm(i)]T – входной m-мерный сигнал на шаге i; d(i) = [d1(i), d2(i), …, dn(i)]T – выходной n-мерный сигнал (реальный) на шаге i; y(i) – выходной n-мерный сигнал (вычисленный) на шаге i; e(i) – сигнал ошибки (n-мерный) на шаге i; wj(i) = [wj1(i), wj2(i), …, wjm(i)]T,  – синаптические веса нейрона j на шаге i.

Структура сети в случае однослойного перцептрона показана на рисунке 1.

Метод обучения сети: метод обратного распространения ошибки (backpropagation).

Алгоритм работы сети подробно описан и обоснован в [3, 4], поэтому остановимся лишь на его основных шагах.

1.     Инициализируем нейронную сеть (шаг i=0), присвоив значение 0 синаптическим весам нейрона: wjk(0)=0,  Заметим, что в отличие от классического перцептрона не используется дополнительный фиксированный вход x0 (в случае его использования количество входов у каждого нейрона было бы равно m+1).

2.     Используя цикл по массиву исходных данных с помощью метода скользящего окна [6], на каждом шаге i делаем контрольную выборку x(i) из массива входных данных (всего будет ½s½–m–n шагов), а также результирующую выборку d(i), начиная с первого элемента, следующего за контрольной выборкой в s. Шаги 3–6 производятся внутри цикла.

3.     В цикле по всем нейронам вычисляем с помощью результирующей функции фактический отклик y(i) нейрона. Шаги 4, 5, 6 производятся в этом же цикле. Результирующая функция – скалярное произведение контрольной выборки на веса нейрона. В отличие от стандартной модели перцептрона [3] в качестве результата берется само число, а не индикаторная функция числа: .

4.     Находим разницу между фактическим и вычисленным значениями (ошибку): e(i)=d(i) –y(i) (в векторном виде) или то же самое ej(i)=dj(i) –yj(i), .

5.     Производим адаптацию вектора весов по формуле

wjk(i+1)= wjk(i) + hxk(i) ej(i), .  (1)

(полученные значения будут использоваться на следующем шаге итерации i+1).

Данная формула является самой простой в реализации, вместо нее могут использоваться более сложные формулы, дающие более быструю сходимость, в том числе те, в которых η зависит от j.

6.     Смещаем на 1 вправо точку отсчета контрольной выборки в массиве s (увеличиваем i на 1) или выходим, если i = ½s½– m.

Асимптотическая сложность алгоритма [7] как функции четырех параметров: s – массива входных данных, n – числа нейронов, m – размера входного сигнала, η – свободного параметра вектора весов (мало по сравнению с первыми тремя) равна O(½s½×n×m), где ½s½ – число элементов в s. Поясним эту оценку: в алгоритме есть цикл длиной ½s½, внутри которого несколько циклов, в том числе цикл по всем нейронам (длины n), содержащий цикл по всем элементам входного сигнала длины m. Поскольку это будет максимальной вложенностью циклов в алгоритме и остальные циклы не будут оказывать влияние на эту оценку, всего будет ½s½× n× m операций. η не учитывается в оценке, поскольку мало по сравнению с другими параметрами, и участвует только в умножении в формуле (1), не являясь ограничителем какого-либо цикла. В некоторых случаях число нейронов n и размер входного сигнала m заведомо малы по сравнению с ½s½, в этом случае вычислительная сложность будет равна O(½s½).

Данный алгоритм сходится в смысле среднеквадратического значения, то есть при n®¥, если h удовлетворяет условию , где λmax –  наибольшее собственное значение Rx, а Rx – матрица корреляции вектора входного сигнала x(i), определяемая следующим выражением: . Заметим, что матрица Rx будет вырожденной (фактически будет вектором).

На практике значение λmax часто невозможно вычислить и вместо него используются другие, более грубые оценки, например, след матрицы Rx или сумма среднеквадратических значений входных сигналов. Доказательство сходимости выходит за рамки этой статьи, его можно найти в работах [4, 8].

Приведенная оценка η является неконструктивной и не позволяет сузить множество допустимых значений до приемлемого уровня.

Вместо этого можно использовать поиск такого η, при котором сойдется алгоритм, последовательным приближением по следующей схеме. Берется некоторое начальное η, вычисляется с его использованием результат; результат проверяется на адекватность статистических характеристик (они должны соответствовать начальному массиву s). Если характеристики не соответствуют, η уменьшается, например, делением на , а если соответствуют – поиск η останавливается, поскольку дальнейшее уменьшение η будет приводить к ухудшению результатов прогнозирования. Необходимо отметить, что алгоритм поиска η, приведенный выше, является недетерминированным, число его итераций ничем не ограничено. При практической реализации это заставляет ограничивать максимальное число шагов некой константой, при достижении которой дальнейшие поиски η останавливаются.

Алгоритм для многослойной цепи (многослойный перцептрон Румельхарта [3, 5]) аналогичен случаю однослойной цепи, в нем заслуживает внимания лишь способ обратного распространения ошибки для слоев, отличных от начального и конечного. Поскольку на практике использование многослойной сети для задачи прогнозирования курса акций не дало особых преимуществ по сравнению с однослойной сетью, приводить алгоритм полностью не имеет смысла. Остановимся лишь на его основных отличиях от случая однослойной сети.

Введем дополнительные обозначения: L – число слоев нейронной сети; ml,  – количество нейронов l-го слоя нейронной сети, причем mL = n; dlj(i), – локальный градиент j-го нейрона l-го слоя нейронной сети.

У обозначений y(i) и wj(i), введенных ранее (в описании однослойной сети), появится дополнительный индекс l, обозначающий номер слоя нейронной сети.

Шаги алгоритма аналогичны случаю однослойной цепи за некоторыми исключениями.

·       На шаге 3 добавляется цикл по всем слоям, формула для вычисления ylj(i) будет следующей:   , причем

·       На шаге 4 в качестве y(i) используется yL(i).

·       Шаг 5 имеет самую неочевидную реализацию. Вычисления на этом шаге производятся в порядке, обратном порядку слоев (вначале вычисляются значения на L-м слое, потом на слое L–1 и так далее). Для слоя L: , ;

для слоев l,

.

Структура сети в случае многослойного перцептрона показана на рисунке 2.

Метод обучения сети: метод обратного распространения ошибки (backpropagation).

Анализ полученных результатов

Традиционные методики оценки точности прогноза, основанные на измерении его отклонения от реальных данных (например вычисление MAPE, MSE), не всегда позволяют адекватно оценить качество прогноза для динамики стоимости акций (которым свойственна высокая волатильность), поскольку для таких данных важнее определить, когда будет рост, а когда падение, а самое главное – трудно спрогнозировать скачки, отделяющие стационарные периоды изменения стоимости друг от друга. Поэтому следует перейти от рассмотрения временного ряда x цены акции к относительному изменению роста цены y. Он рассчитывается по формуле yi = xi/xi–1 , где n – количество элементов x (количество элементов y будет при этом равно n – 1). Для прогнозирования с помощью многослойной нейронной сети хорошие результаты на практике дают центрирование и нормировка выборки y. Заметим, что при необходимости возможен обратный переход от временного ряда роста к временному ряду цены.

Процент правильности прогноза будем подсчитывать по формуле

,                                                                     (2)

где k – число правильно угаданных направлений возрастаний/убываний; n – число предсказанных значений.

Для тестирования возьмем некоторый временной ряд (курс акций Газпрома за определенный период, снятый с интервалами 5 минут) и перейдем к ряду роста цены y. Построим прогноз по временному ряду a, состоящему из 1 000 значений, требуется спрогнозировать по а временной ряд b1 из 20 значений. Также имеется ряд b2 из 20 значений, которые будут в реальности после a. Ряд b2 не используется для прогнозирования, он нужен для оценки качества прогноза путем сравнения b1 и b2 с использованием формулы (2).

Спрогнозируем также временной ряд b1_arima по ряду a c помощью метода ARIMA для сравнения прогнозирования с помощью нейронной сети с этой популярной и одной из лучших в своем классе методикой.

Представим результаты прогнозирования в виде таблицы и в графическом виде (рис. 3).

Сравнение результатов прогнозирования

Comparing forecast results

b1 (нейронная сеть)

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 с.

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://cmcstuff.esyr.org/vmkbotva-r15/3курс)))/6Семестр/Вычислительная сложность алгоритмов/ abramov10_2005.pdf (дата обращения: 15.10.2014).

8.     Андриенко В.М. Идентификация модели динамики украинского фондового индекса ПФТС. Технологический аудит и резервы производства. 2012. № 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. 1151–1162.

11.  Уоссермен Ф. Нейрокомпьютерная техника. Теория и практика. М.: Мир, 1992. 183 с.


Permanent link:
http://swsys.ru/index.php?id=4001&lang=en&page=article
Print version
Full issue in PDF (4.84Mb)
Download the cover in PDF (0.35Мб)
The article was published in issue no. № 2, 2015 [ pp. 70-74 ]

Perhaps, you might be interested in the following articles of similar topics: