Материал: Разработка веб-приложения для прогнозирования временных рядов методом фрактального анализа

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

а)      Пассивная модель - модель не имеет никаких способов воздействовать на представление или контроллер, и используется ими в качестве источника данных для отображения. Все изменения модели отслеживаются контроллером и он же отвечает за перерисовку представления, если это необходимо. Такая модель чаще используется в структурном программировании <#"818333.files/image077.jpg">

Рисунок 2.1 - Схема паттерна MVC

Важно отметить, что как представление, так и контроллер зависят от модели. Однако модель не зависит ни от представления, ни от контроллера. Тем самым достигается назначение такого разделения: оно позволяет строить модель независимо от визуального представления, а также создавать несколько различных представлений для одной модели.

3. Реализация приложения

3.1 Краткое описание программы


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

Пользователь может просматривать исторические данные различных котировок, которые он может с легкостью импортировать в приложение.

Также в приложении есть возможность проведения RS анализа временных рядов для нахождения экспоненты Херста. Она в свою очередь необходима для расчета фрактальной размерности при проведении псевдофазовой реконструкции. Присутствует также возможность расчета оптимальной временной задержки.

Характерной чертой программы является возможность проведения псевдофазовой реконструкции для подготовки входных данных для нейронной сети. Также есть возможность обучения нейронной сети. В приложении используется многослойный перцептрон, а нейронная сеть обучается методом обратного распространения ошибки.

В итоге можно получить прогноз на будущий период.

3.2 Архитектура приложения

Ниже представлена диаграмма классов приложения (Рисунок 3.1):

Рисунок 3.1 - Диаграмма классов

Класс Quote описан в таблице 1.

Таблица 1 - Описание класса Quote

Свойства и методы

Описание

Id

уникальный идентификатор котировки

Name

название тикера

url

путь, по которому доступны данные котировок по тикеру

Hurst

значение показателя Херста

tableName()

возвращает имя таблицы, с которой работает модель

rules()

возвращает массив с параметрами валидации

attributeLabels()

возвращает массив с русскоязычными названиями свойств

search($model)

возвращает массив всех объектов этой модели


Класс Stock описан в таблице 2.

Таблица 2 - Описание класса Stock

Свойства и методы

Описание

Id

уникальный идентификатор тикера

ticker_id

внешний ключ на таблицу с тикерами

Дата

Quote

значение котировки

tableName()

возвращает имя таблицы, с которой работает модель

rules()

возвращает массив с параметрами валидации

attributeLabels()

возвращает массив с русскоязычными названиями свойств

search($model)

возвращает массив всех объектов этой модели

relations()

возвращает массив с внешними связями данной модели с другими моделями

linear_regression($x, $y)

считает регрессию


Класс NeuralNetwork описан в таблице 3.

Таблица 3 - Описание класса NeuralNetwork

Свойства и методы

Описание

NeuralNetwork($nodecount)

конструктор нейронной сети

activation($value)

возвращает значение выходного нейрона после применения к нему функции активации

Свойства и методы

Описание

addControlData($input,$output)

добавляет данные для обучения, не для тестирования

addTestData($input,$output)

добавляет тестовые данные для обучения НС

calculate($input)

возвращает выходное значение НС для заданного входного вектора

derivative_activation($value)

реализует производную функции активации

getControlDataIDs()

возвращает идентификаторы входных векторов при тестировании

getLearningRate($layer)

возвращает коэффициент скорости обучения для определенного слоя

getMomentum()

возвращает импульс НС

getRandomWeight($layer)

- при генерации НС задает рандомные веса нейронов

getTestDataIDs()

возвращает идентификаторы входных векторов при обучении

isVerbose()

отображаются ли ошибки НС

load($filename)

по заданному пути загружает НС

save($filename)

сохраняет НС в файл

setLearningRate($learningrate)

задает коэффициент скорости обучения

setMomentum($momentum)

задает импульс НС

setVerbose($is_verbose)

задает отображение ошибок НС

showWeights()

выводит текущие веса нейронов

train($maxEpochs,$maxError)

запускает тренировочный процесс


Класс MainController описан в таблице 4.

Таблица 4 - Описание класса MainController

Свойства и методы

Описание

Index()

выводит главную страницу приложения

Login()

выводит страницу логина, а также проводит аутентификацию и авторизацию

Logout()

удаляет сессию пользователя


Класс EParseQuotesManager описан в таблице 5.

Свойства и методы

Описание

UpdateDB()

парсит котировки в БД


Класс StockController описан в таблице 6.

Таблица 6 - Описание класса StockController

Свойства и методы

Описание

$layout

ссылка на базовую разметку страницы

Filters()

возвращает массив с фильтрами доступа к контроллеру

AccessRules()

возвращает массив прав доступа

Create()

возвращает форму создания нового тикера

Update($id)

возвращает форму обновления тикера

Delete($id)

по определенному id удаляет тикер

Admin()

возвращает административную страницу управления тикерами

LoadModel($id)

по id возвращает определенную модель тикера

ShowGraph($id)

возвращает график по id тикера

Hurst()

считает показатель Херста для всех тикеров

TestAnn()

обучает НС


Класс RSAnalyze описан в таблице 7.

Таблица 7 - Описание класса RSAnalyze

Свойства и методы

Описание

$quotes

массив котировок

GetLog($values)

возвращает массив логарифмированного временного ряда

GetAvgInSubperiod($n, $values)

возвращает массив со средними значениями для каждого подпериода

GetSumDevPerPeriod($avgPerPeriod, $values)

возвращает временной ряд накопленных отклонений

GetR($sumDev, $n)

возвращает массив размахов для каждого подпериода

GetS($avgPerPeriod, $values)

возвращает массив стандартных отклонений для каждого подпериода

GetRS($arrR, $arrS)

возвращает показатель R/S

GetArrN($values)

возвращает все возможные количества элементов в подпериоде

GetOptR($values)

возвращает оптимальную временную задержку

Свойства и методы

Описание

PseudoReconst($values, $m, $tau)

проводит псевдофазовую реконструкцию, возвращает 2 массива, входных и выходных векторов

3.3 Интерфейс приложения


Главное окно приложения представлено на рисунке 3.2:

Рисунок 3.2 - Главное окно приложения

Для добавления новых исторических данных необходимо зайти в меню «Справочники» и выбрать «Компании» (Рисунок 3.3).

Рисунок 3.3 - Меню компании

Затем необходимо нажать на кнопку «Добавить компанию». Откроется форма (Рисунок 3.4). Введите название компании и путь к текстовому файлу с историческими данными и нажмите «Сохранить».

Рисунок 3.4 - Добавление компании

В меню «Действия» (Рисунок 3.5) доступны следующие функции:

«Обновить БД» - записывает исторические данные в базу данных

«Обновить Херста» - рассчитывает экспоненту Херста

«Обучение НС» - выполняет псевдофазовую реконструкцию и проводит обучение нейронной сети


С историческими данными можно ознакомиться в меню «Графики» (Рисунок 3.6):

Рисунок 3.6 - Исторические данные

С прогнозами временных рядов можно ознакомиться в меню «Прогнозы» (Рисунок 3.7):

Рисунок 3.7 - Прогнозы

Заключение

Главной целью дипломной работы являлась разработка веб-приложения для прогнозирования временных рядов методом фрактального анализа.

Для достижения этой цели были решены следующие задачи:

изучены методы фрактального анализа временных рядов;

разработана нейронная сеть для прогнозирования временных рядов, использующая на этапе формирования обучающей выборки фрактальный анализ;

разработан веб-интерфейс для взаимодействия с пользователем.

Созданное веб-приложение позволяет пользователю:

проводить R/S анализ временных рядов;

обновлять исторические данные различных тикеров;

добавлять исторические данные для новых компаний;

просматривать исторические данные;

получать прогноз следующего значения временного ряда.

Благодаря данному веб-приложению, автоматизирована работа по созданию прогноза методом фрактального анализа. Приложение легко можно расширить благодаря модульному строению фреймворка Yii. Дружеский интерфейс пользователя, единообразие в отображении данных - делают информационную систему понятной и легкой для освоения даже неопытным пользователям.

Список использованных источников

1 Граничин О.Н., Поляк Б.Т. Рандомизированные алгоритмы оценивания и оптимизации при почти произвольных помехах. М.: Наука. 2003.

2 Готовчинков И.Оценка путей совершенствования стратегий поведения на российском валютном рынке // Финансовый менеджмент, №4. 2003.

3 Мандельброт Б., Хадсон Р.. (Не)послушные рынки. Фрактальная революция в финансах. Изд.: Вильямс.2006.

4 Морозов А. Введение в теорию фракталов. Н.Новгород: ННГУ. 2004.

Пардо Р. Разработка, тестирование, оптимизация торговых систем для

биржевого трейдера. Москва: Минакс. 2002.

Пашутин С. Нелинейная динамика российского рынка: фрактальный подход к устранению хаоса.

7 Пустовит Д., Подколзина И. История биржевой торговли. СПб.: Вектор. 2009.

Петерс Э. Фрактальный анализ финансовых рынков. Применение теории Хаоса в инвестициях и экономике.

9 Ширяев В. Финансовые рынки: Нейронные сети, хаос и нелинейная динамика. М.: Либроком. 2009

Интернет энциклопедия Википедия //URL: www.ru.wikipedia.org (дата обращения: 29.04.2014)
11 Головко В.А. Нейросетевые методы обработки хаотических процессов // В книге «Лекции по Нейроинформатике». - M.: МИФИ, 2005. - C. 43-88.

Петерс Э. Хаос и порядок на рынках капитала. Новый аналитический взгляд на циклы, цены и изменчивость рынка. - М.: Мир, 2000. - 333 с.

Волков М.В. Структура и классификация рынка ценных бумаг. Операции с ценными бумагами в деятельности банков. Управление портфелем ценных бумаг // Финансы и кредит. - 2005. - № 10 (178) - с. 31-40.

Найман Э.Л. Трейдер-инвестор. - Киев.: ВИРА-Р, 2000. - 640 с.

Хаертфельдер М. Фундаментальный и технический анализ рынка ценных бумаг. Спб.: Питер, 2005. - 352 с.

Найман Э.Л. Путь к финансовой свободе: профессиональный подход к трейдингу и инвестициям. - М.: Альпина Бизнес-Букс, 2004. - 480 с.
17 Рутковская Д., Пилиньский М., Рутковский Л. Нейронные сети, генетические алгоритмы и нечеткие системы. Горячая Линия-Телеком, 2008. - 452 с.

Барский А.Б. Нейронные сети: Распознавание, управление, принятие решений. Финансы и статистика, 2007 г. - 175 с.

Кесиян Г.А., Шахмеликян Т.А. Анализ и моделирование хаотических процессов в экономике // Прикладная математика XXI века: материалы XI объединенной науч. конф. студентов и аспирантов / под ред. Ю.В. Кольцова. Краснодар: Кубанский гос. ун-т, 2011.

Приложение А График выходов нейронной сети по обучающей выборке для обычных акций Сбербанка


Приложение В График выходов нейронной сети по тестовой выборке для обычных акций Сбербанка