Автоматизация биржевой торговли

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 25.08.2017
Размер файла 942,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Введение

автоматизация биржевой торговля

Современная торговля на фондовом рынке основывается на чётко выверенных и проверенных моделях. Никто не полагается на удачу или интуицию. Высокие скорости и громадные объемы информации не позволяют принимать решения без аналитического обоснования. Модели, которые используют большинство трейдеров достаточно простые в построении, однако, как было сказано выше, большие объемы данных увеличивают время построения модели с последующим прогнозом. Развитие современных технологий, а также совершенствование чужих стратегий вынуждают трейдеров усложнять собственные прогностические модели, что лишь увеличивает требования к мощностям, которыми пользуются трейдеры. Всё это ведет к тому, что трейдеры должны иметь возможность построить модель быстро на актуальных данных, чтобы знать последующие варианты поведения на рынке.

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

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

Объектом данного исследования является процесс биржевой торговли.

Предметом исследования является автоматизация процесса анализа и биржевой торговли.

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

Фондовые рынки играют очень важную роль в современной экономике. За акциями следят не только трейдеры. Акции отражают реальное состояние дел компании, положение дел в отрасли и в целом в стране. Важно понимать, как будут двигаться акции не только в ближайшем будущем, но и в среднесрочной и долгосрочной перспективах. Более того, нужно быть уверенным в прогнозах.

Несмотря на наличие некоторых проблем, область анализа и торговли на финансовых рынках, а в частности на фондовых, имеет широкую популярность среди представителей различных областей знаний. Существование стратегий торговли, множества инструментов, программных решений и брокеров говорит о некоторой избыточности решений. При всём многообразии отсутствуют качественные и эффективные решения, которые можно применить в различных состояниях рынка и на различных акциях. Более того, не существуют строгой системы критериев выбора наилучшей модели, а также инструмента для сравнения результатов модели на долгосрочную перспективу.

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

Для успешного достижения поставленной цели нужно разработать:

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

· критерии эффективности, автоматизированной биржевой торговли;

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

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

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

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

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

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

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

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

Все дополнительные материалы, исходный код системы, дополнительные расчёты и таблицы приведены в приложении к работе.

Данная работа основана на теориях и методах из разных областей знания. Большинство моделей, которые будут исследованы и реализованы являются статистическими моделями, если конкретнее, то эконометрические модели временных рядов (Soren Bisgaard, 2011) (Tsay, 2001) (А.И.Орлов, 2009). Также в системе использованы модели машинного обучения. Данная область является достаточно молодой, однако существует множество статей. (Alpaydin, 2004) (Тревор Хасти, 2001). Стоит также упомянуть, что данные модели и критерии не смогут образовать систему. Все связи и причины принадлежат к анализу акций и финансовых рынков (Chan, 2009) (Erlich, 1996) (Schwager, 1996) (Белова Е.В., 2006).

Глава 1. Методология автоматизации биржевой торговли

В современном мире достаточно часто встречается словосочетание «Финансовый рынок». Однако, далеко не все люди правильно понимают, что это такое. Финансовый рынок - это некоторая структура взаимоотношений, которая в ситуации рыночной экономики реализует заимствование, обмен, инвестирование и куплю-продажу экономических благ, где активом-посредником являются деньги (Белова Е.В., 2006).

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

Фондовый рынок или рынок ценных бумаг - это объединение экономических взаимоотношений, в результате которых происходит выпуск и перераспределение ценных бумаг (Schwager, 1996). Появление данного рынка напрямую связано с товарным производством, т.к. производителям постоянно требуется привлечение капитала для развития бизнеса. С помощью выпуска акций и облигаций компании получили возможность мгновенно получать инвестиции для развития новых ответвлений бизнеса, товарных линий и так далее.

Стоит уточнить, что ценная бумага - это денежный документ, составленный по определенным правилам, который удостоверяет имущественные права, которые можно реализовать или передать только при предъявлении данного документа. К ценным бумагам относятся акции, облигации, векселя, чеки и т.д. В данном исследовании осуществляется анализ и торговля акциями.

1.1 Виды биржевой торговли

На данный момент существует множество различных подходов к ведению биржевой торговли (Chan, 2009). Большинство из них имеют множество последователей и приверженцев. Если разобраться подробнее, то существует несколько классификаций по видам биржевой торговли. Рассмотрим некоторые из них.

Первая классификация опирается на стили ведение биржевой торговли. На данный момент выделяют 5 стилей: скальпирование, импульсная торговля, техническая торговля, торговля на межрыночном спрэде и арбитраж.

Скальпирование - это торговля, при которой сделки совершаются с высокой частотой. Каждая сделка несёт малую прибыль, однако их количество в итоге делает итоговую прибыль огромной. Вероятность потерь при таком стиле ведения торговли на бирже достаточно мала, т.к. скальпирование не основывается на извлечении прибыли из случайных колебаний в цене.

Торговля на импульсах заключается в тезисе о том, что повышающаяся цена будет дальше расти, а падающая - падать. Суть метода заключается в том, что открыть позицию нужно успеть в момент разворота тренда. Если неверно распознать разворот тренда или сильно задержаться с открытием позиции, то можно потерять вложенные средства. Данный метод считается достаточно рискованным, т.к. определение верного тренда, в особенности изменения тренда, является очень сложным занятием и чревато ошибками.

Техническая торговля основана на анализе достаточно большого количества индикаторов, графиков и моделей, а также включение в анализ некоторых финансовых показателей о компании (Schwager, 1996). Основным недостатком данного подхода является тот факт, что все решения, принимаемые торговцем, зависят от прошлого, тогда как прошлое не всегда несёт адекватную информацию. Ещё один недостаток заключается в отсутствии идеального индикатора, модели, графика и подхода к анализу. Для каждой акции требуются свои собственные инструменты, релевантность которых можно измениться с течением времени.

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

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

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

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

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

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

Ещё одна интересная классификация заключается в оценке информированности трейдера (Narang, 2009). Данная классификация делит всех трейдеров на две большие категории - информированные и неинформированные. Те, кто принадлежат к первой категории основывают свои решения на определенных видах анализа - фундаментального и технического. Такие трейдеры имеют определенную уверенность в своих действиях и полагаются на данные построенных моделей. Представители второй категории - те люди, которые берут во внимание только то, что говорит им интуиция, в вопросах принятия решений на фондовом рынке. Трейдеры этого вида не используют методы ни фундаментального, ни технического анализа. Просто наблюдая за динамикой на фондовом рынке, данные трейдеры совершают свои сделки, полагаясь на собственный опыт.

Также трейдеров можно разделить по времени удержания позиции. В данной классификации выделяют дневных трейдеров (day-трейдеры), скальперов и пипсовщиков, свинг-трейдеров, позиционных трейдеров (краткосрочных), среднесрочных трейдеров и долгосрочных трейдеров.

Дневные трейдеры совершают свои сделки в течение одной торговой сессии (торгового дня). Трейдеры данной категории никогда не переносят открытые позиции на следующий день и закрывают их в конце дня. Основной мотивацией для такого поведения являются большие разрывы между ценами закрытия одного дня и ценами открытия следующего дня. Более того, такой подход позволяет не платить кредит. Одной из особенностей таких участников торгов является склонность к выбору бумаг с высокой изменчивостью цены (волатильностью). Чаще всего такие трейдеры имеют небольшой капитал.

Скальперы и пипсовщики - это те игроки, которые совершают большое количество сделок за короткий промежуток времени, начиная от десятков секунд, заканчивая десятками минут. За счёт того, что представители данной категории за короткий срок совершают множество сделок малой прибыли, суммарно по итогу торгового дня они могут иметь достаточно большую прибыль. Чаще всего скальперы предпочитают использовать бумаги с низкой волатильностью, т.к. любое резкое изменение цены может сильно навредить трейдеру. Процесс скальпинга в целом представляет из себя открытие позиции и следование ей вплоть до изменения направления цены, и в момент закрытия производится закрытие позиции. Прибыль реализуется за счёт простой разницы между ценой покупки и продажи ценной бумаги.

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

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

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

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

Ещё одна группа в данной классификации включает в себя среднесрочных инвесторов. Инвесторы такого типа совершают по несколько сделок в год. Длина открытой позиции колеблется от одного месяца до года. Они обращают внимание на изменение недельного тренда. Наряду с техническим анализом используют также методы фундаментального анализа.

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

Если оценивать трейдеров по поведению на рынке, то стоит упомянуть классификацию, основанную на склонности трейдера к риску. Исходя из данной классификации, всех трейдеров можно разделить на три группы: агрессивные, умеренные и консервативные.

Агрессивные трейдеры - это те, кто ставит извлечение прибыли намного выше, чем надежность вложений. Агрессивные трейдеры готовы идти на максимальный риск, чтобы приумножить свой капитал максимально.

Умеренные инвесторы являются более вдумчивыми в принятии решений относительно вложений собственных денежных средств. Такие трейдеры основывают свои решения на полноценном всестороннем анализе. Инвесторы такого типа готовы идти на риск, если этот риск оправдан. Однако чаще всего, чтобы снизить уровень риска, умеренные трейдеры диверсифицируют свой портфель по уровням риска, чтобы одновременно иметь в своём портфеле акций и потенциально очень прибыльные акции с высоким уровнем риска, и практически нерискованные активы. Такой подход снижал риск и увеличивал вероятность значительного увеличения прибыли.

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

Трейдеров можно классифицировать по целям, ради которых они совершают сделки на финансовых рынках.

Профессиональные трейдеры рассматривают биржевую торговлю, как работу. Они получают задачу на приобретение определенной акции, на извлечение прибыли или какую-либо другую задачу.

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

Арбитражёры занимаются стабилизацией рынка в целом. За счёт встречных продаж активов они увеличивают цену одного и снижают цену другого актива. Данный подход позволяет регулировать положение акций на рынке.

Инвесторы имеют своей целью не только извлечение долгосрочной прибыли из приобретения и продажи акций, но и выгодное долгосрочное инвестирование.

Спекулянты - это торговцы, которые совершают сделки ради извлечения прибыли.

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

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

Независимые же торговцы работают на себя в собственных интересах за свой собственный счёт. Большинство таких трейдеров не имеют специализированного образования. Операции, которые они совершают не требуют лицензирование. Они пользуются услугами брокеров и финансовых консультантов.

1.2 Основные методы анализа движения биржевых цен

На данный момент в современном мире существует несколько подходов к анализу финансовых рынков - фундаментальный, технический, фрактальный.

Фундаментальный анализ основывается на анализе производственных и финансовых показателях каждой компании, в которую собираются вложить деньги (Kijanica, 2005).

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

Весь фундаментальный анализ строится на предположении, что в любой момент времени цена на акцию той или иной компании оценена неверно. Однако рынок всё время старается вернуться к истинному значению данной цены. Соответственно, вся суть анализа сводится к выявлению настоящей цены акции компании, сравнению её с настоящей и открытию позиций в направлении движения акции компании от нынешнего положения к истинному.

Технический анализ имеет немного иной подход к оцениванию цены акции той или иной компании. Технический анализ - это набор определенных инструментов вероятностного прогнозирования изменения цен на акции в прошлом в аналогичных обстоятельствах (Erlich, 1996).

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

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

Технический анализ основывается на трёх аксиомах (Erlich, 1996):

1. Вся информация об акции заключена в текущей цене. Данная аксиома подразумевает, что для успешной деятельности на фондовом рынке необходимо лишь анализировать цену на акцию и её динамику, не обращая внимания на внешние факторы.

2. Цены движутся, исходя из тренда. Если посмотреть на изменение цен в малом масштабе, то складывается впечатление, что они полностью случайны. Однако, если увеличить количество наблюдений, то можно увидеть некоторую последовательность, а именно, тренд. Более того, тренды постоянно меняются.

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

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

Ещё один метод анализа финансовых рынков - это фрактальный анализ, или анализ на основе теории хаоса. Последователи фрактального анализа уверены, что значения будущих цены зависят от прошлых изменений, но в отличии от приверженцев технического анализа, представители фрактального анализа считают, что процесс формирования цены на рынке глобально детерминирован и полностью зависит от начальных условий и прошлого. Сужаясь до локальных значений, в каждый момент цена имеет два возможных сценария поведения. Фрактальный анализ рынков напрямую исходит из фрактальной теории и заимствует свойства фракталов для получения прогнозов.

1.3 Обоснование автоматизации биржевой торговли

Классическая торговля в умах большинства людей выглядит таким образом: человек покупает ценную бумагу в некоторый момент времени при определенном значении цены. Затем он ждёт пока цена вырастет до определенного момента, затем продает. Также продажа возможна, если трейдер считает, что цена должна в скором времени изменить направление. За один промежуток времени t1 трейдер зарабатывает y1 (см. рисунок 1), что является разностью между позицией покупки и позицией продажи.

Рисунок 1. Процесс торговли на фондовом рынке в умах большинства.

Однако, если обратить внимание, то можно заметить, что цена движется не линейно. Значения постоянно «скачут». Отсюда вытекает вывод, что можно пытаться заработать и на этих «скачках». Если за тот же период, что и в первом случае трейдер совершает вместо одной сделки, пять сделок, то за неизмененный временной промежуток его прибыль значительно увеличивается (см. рисунок 2).

Рисунок 2. Процесс торговли на фондовом рынке тех, кто стремится автоматизировать её.

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

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

Глава 2. Облик системы автоматизированной торговли: структура, функции и алгоритм работы

2.1 Структура системы

2.1.1 Описание системы

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

Все алгоритмы системы и те блоки, которые необходимы для анализа реализованы на Python 2.7 с использованием различных специализированных библиотек. База данных, в которой реализуется архивация и хранение исторических данных, реализована на SQL Server 2016. Пользовательская часть приложения реализована с помощью C#.

Систему можно условно разделить на три подсистемы (см. рисунок 3): клиентское приложение, подсистема анализа и подсистема архивации данных.

Рисунок 3. Общая схема работы системы.

Клиентское приложение отвечает за получение запросов от пользователя, выполнение команд пользователя, вывод актуальных данных по созданным моделям, их тестам, торговым стратегиям и вывод построенных графиков.

Подсистема анализа заключает в себе наиболее важные с точки зрения анализа элементы. Этот блок отвечает за работу с данными: загрузку и обработку; за настройку параметров модели и построение данных моделей; тестирование построенных моделей на специализированных наборах данных; проверку качества моделей за счёт оценки предсказанных значений; формирование стратегий, исходя из определенных правил. Данная подсистема состоит из нескольких блоков, каждый из которых реализует ту или иную функцию.

Крайняя подсистема связана с архивацией данных. Данная подсистема является поддерживающей для системы в том смысле, что все данные и тесты, которые проводятся, сохраняются в специальной базе данных. Более того, данная база данных хранит в себе значения всех критериев качества всех моделей для каждого теста, что позволяет оценивать стабильность той или иной модели. Если разбираться в структуре системы более подробно, то в системе можно выделить ряд блоков (см. рисунок 4), а именно, блок работы с данными, блок работы с базой данных, блок визуализации или работы с графиками, торговый блок, аналитический блок, блок оценки качества работы, блок взаимодействия с пользователем. Разберем суть работы каждого блока подробнее.

Рисунок 4. Составляющие системы.

2.1.2 Блок получения данных

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

Изначальные данные, которые получает система, имеют форму двухмерного массива, где по столбцам располагаются дата, цена открытия, цена закрытия, наибольшая и наименьшая цены за торговый день, скорректированная цена и объем, а по строкам дни и значения в этот день. Количество строк зависит от временного периода, за который запрашиваются данные.

Целевые структуры можно разделить на две категории: первая - это структуры, которые содержат значения в реальном выражении, а вторые - в процентном выражении. Структуры первой группы имеют следующую структуру: индекс -дата, первое значение -объем, второе значение - это один из 5 видов цен (открытие, закрытие, наибольшая, наименьшая, скорректированное закрытие), затем идут значения данного показателя цены за несколько предыдущих дней. Вторая категория целевых структур имеет схожую структуру с первой, однако все значения выражены в процентах к предыдущему значению. Более того, у второй колонки появляется столбец отражающий направление движения цены по сравнению с предыдущим днём.

Алгоритм работы данной подсистемы достаточно прозрачен и прост (см. рисунок 5). Сначала пользователь вводит название интересующей акции, начало и конец периода, на основе которого будет проводится построение модели. Эта информация запрашивается на сайте. Затем полученные данные обрабатываются и трансформируются для дальнейшего анализа.

Рисунок 5. Алгоритм получения и обработки данных.

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

2.1.3 Блок работы с базой данных

Следующим элементом, реализуемым в системе, является блок работы с базой данных.

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

Структура Базы данных продиктована целями, ради которых она используется. В ней хранятся данные обо всех отраслях и всех акциях компании, также обо всех моделях и критериях эффективности, которые используются в системе, и всех тестах, которые проводились в системе. Все эти таблицы являются справочниками. Касаемо таблиц измерения, то в базе находятся исходные данные для каждого теста по каждой акции, а также результаты по всем моделям по всем критериям для каждого теста (см. рисунок 6).

Рисунок 6. Схема базы данных.

В базе данных реализованы семь сущностей, которые позволяют максимально удобно хранить данные, а также взаимодействовать с ними:

Industries - отрасли - данная сущность включает в себя все отрасли по Глобальному Стандарту Классификации отраслей.

Company_Stocks - акции компаний - данная сущность включает в себя названия акций компаний и их расшифровку.

Raw_Data - сырые данные - данная сущность включает в себя данные, на которых проводились тесты, по каждой акции.

Test - тест - сущность, которая отражает все тесты, проведенные на модели

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

Model - модель - сущность, которая описывает все модели, которые используются при построении данной системы.

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

Каждая сущность имеет атрибуты, которые позволяют максимально полно описать хранимые данные (таблица 1).

Таблица 1. Сущности и атрибуты базы данных.

Сущность

Название

Тип

Ключ

Описание

Industries

Industry_Code

Varchar(20)

PK

Код отрасли по ГСКО

Industries

Industry_Name

Nvarchar(1000)

Название отрасли по ГСКО

Company_Stocks

Stock_Code

Varchar(20)

PK

Код акции компании на фондовом рынке

Company_Stocks

Company_Name

Nvarchar(1000)

Название компании

Company_Stocks

Industry_Code

Varchar(20)

FK

Raw_Data

Date_Index

Datetime

PK

Дата, для которой были взяты измерения

Raw_Data

Stock_Code

Varchar(20)

FK, PK

Raw_Data

Test_Code

Integer

FK, PK

Raw_Data

Open_Value

Float

Цена открытия за день

Raw_Data

Close_Value

Float

Цена закрытия за день

Raw_Data

High_Value

Float

Наибольшая цена за день

Raw_Data

Low_Value

Float

Наименьшая цена за день

Raw_Data

Adj_Close_Value

Float

Скорректированная цена закрытия за день

Raw_Data

Volume_Value

Integer

Объемы за день

Test

Test_Code

Integer

PK

Номер теста

Test

Test_Description

Nvarchar(1000)

Дополнительное описание для теста

Test_Result

Test_Code

Integer

FK, PK

Test_Result

Parametr_Code

Varchar(20)

FK, PK

Test_Result

Model_Code

Varchar(20)

FK, PK

Test_Result

Result_Value

Float

Значение параметра для данного теста, данной модели

Effectiveness_Parametrs

Parametr_Code

Varchar(20)

PK

Сокращение параметра

Effectiveness_Parametrs

Parametr_Name

Nvarchar(200)

Название параметра

Effectiveness_Parametrs

Parametr_Symbol

Varchar(20)

Символьное обозначение параметра

Effectiveness_Parametrs

Parametr_Description

Nvarchar(1000)

Дополнительное описание параметра

Model

Model_Code

Varchar(20)

PK

Сокращенное название модели

Model

Model_Name

Nvarchar(1000)

Полное название модели

Model

Model_Description

Nvarchar(1000)

Дополнительное описание модели

Model

Model_Features

Nvarchar(1000)

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

Все сущности, реализованные в базе данных, связаны между собой:

Industries - Company_Stocks - один ко многим - данная связь отражает, что каждая компания, чьи акции торгуются на фондовом рынке, принадлежит одной отрасли и только одной.

Company_Stock - Raw Data - один ко многим - данная связь отражает, что для определенного значения времени определенные значения показателей цены могут принадлежать только одной акции. Одна акция имеет множество измерений - столько, сколько дней торговалась данная акция на рынке. Тогда как одно измерение принадлежит только одной определенной акции.

Model - Test_Result - один ко многим - для одной модели может быть множество результатов теста, но один результат теста не может относится ко множеству моделей.

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

Test - Test_Result - один ко многим - данная связь показывает, что у одного теста может быть множество результатов, тогда как одна запись принадлежит только одному тесту.

Test - Raw_Data - один ко многим - все загруженные данные относятся к тому, или иному тесту. Так сделано для того, чтобы можно было понять, на каких данных получился тот или иной результат.

Для того, чтобы взаимодействовать с базой данных, были реализованы ряд запросов, которые можно разделить на три категории.

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

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

Третья категория непосредственно связана с оценкой эффективности моделей. Запросы данной категории осуществляют проверку моделей на стабильность в динамике. Также эти запросы позволяют сравнивать модели между собой по стабильности и значениям параметров.

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

Алгоритм первой части инициируется после блока запроса и обработки данных. После получения данных с сайта создается запись о новом тесте, затем происходит проверка наличия акции в системе. В случае, если акция новая, то система добавляет её в базу данных. Затем происходит запись всех скачанных с сайта данных в таблицу сырых данных (см. рисунок 7)

Рисунок 7. Первая часть алгоритма блока работы с базой данных.

Алгоритм второй части инициируется после завершения анализа и тестов. Сначала проверяется наличие моделей в базе данных. При отсутствии записи о наличии модели происходит процесс добавления записи о модели. Затем проходит проверка параметра эффективности и дальнейшее его добавление. В случае успешного завершения всех этих проверок происходит добавление значение результатов в базу данных, а затем выводятся показатели стабильности каждой модели. (см. рисунок 8)

Рисунок 8. Вторая часть алгоритма блока работы с базой данных.

2.1.4 Блок анализа данных

Блок анализа данных объединяет в себе методы, которые нормализуют и стандартизируют данные и строят различные модели на обучающей выборке, заданной пользователем. Большинство моделей, представленных в данном блоке, являются статистическими моделями. Некоторые из них являются техническими индикаторами или инструментами машинного обучения. Стоит отметить, что модели, представленные и реализованные в системе, можно разделить на два типа: классификационные и регрессионные. Модели первого типа делят все данные на два класса: первый класс - это класс роста по сравнению с предыдущим значением, второй класс - класс снижения. Модели второго типа дают более точный прогноз, выраженный в некотором числовом значении, а не только направление движения цен.

В аналитическом блоке реализованы следующие модели: простого скользящего среднего, треугольного скользящего среднего, экспоненциального скользящего среднего, двойного экспоненциального скользящего среднего, тройного экспоненциального скользящего среднего, логистической регрессии, линейного дискриминантного анализа, квадратичного дискриминантного анализа…

Модели скользящего среднего не являются прогнозирующими моделями, т.к. являются сглаживающей функцией. Однако, использование этих моделей позволять делать краткосрочные прогнозы и совершать действия на рынке на ближайшее будущее. Более того, скользящие средние являются прекрасным инструментом для анализа движения цен на рынке и выявления трендов. Существует множество стратегий, которые основаны на скользящих средних, например, стратегия, основанная на пересечении двух скользящих средних разной скорости.

Простая скользящая средняя является примитивной моделью сглаживания. Формула данной модели имеет вид:

где n - это период, за который вычисляется скользящая средняя, а p - это непосредственно значение. Код, реализующий метод построения скользящей средней представлен на ниже.

def SimpleMovingAverage(array, period): return array.rolling(window=period).mean()

Треугольная скользящая средняя ещё один вид скользящей средней, которая строится на основе определенных весов. Веса распределяются треугольником, т.е. наибольший вес для текущего рассчитываемого значения будет иметь значение в середине периода. Формула треугольной скользящей средней для четного значения периода имеет следующий вид:

где n - это период, за который вычисляется скользящая средняя, а p - это непосредственно значение. Иными словами, треугольная скользящая средняя - это простая скользящая средняя с вдвое меньшим периодом, построенная на основе значений простой скользящей средней с вдвое меньшим периодом, увеличенным на единицу. Реализация в коде имеет вид:

def TriangMovingAverage(array, period): return array.rolling(window=period, win_type='triang').mean()

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

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

,

где n - это период, за который вычисляется скользящая средняя, а p - это непосредственно значение, - коэффициент, который учитывает влияние предыдущих цен. При стремящемся к 0 влияние текущего значения цены будет минимальным, при стремлении к 1 практически не будут учитываться предыдущие цены.

Для того, чтобы понять связь с периодом n, стоит ввести формулу, связывающую эти два показателя. Она имеет вид:

.

Таким образом, мы можем выразить период через и наоборот.

Код, который реализует расчёт экспоненциальной скользящей средней, представлен ниже:

def ExponentialMovingAverage(array, alpha): return array.ewm(alpha=alpha).mean()

Ещё один вид экспоненциальной скользящей средней, который рассчитывается в данной системе, - это двойная экспоненциальная средняя. Этот вид кривой является попыткой снизить временную задержку, которая присуща скользящим средним.

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

.

Реализация на Python имеет следующий вид:

def DoubleExponentialSmoothing(series, period1, period2): alpha = 2 / (period1 + 1) beta = 2 / (period2 + 1) result = [] for n in range(1, len(series)+1): if n == 1: level, trend = series[0], series[1] - series[0] if n >= len(series): value = result[-1] else: value = series[n] last_level, level = level, alpha*value + (1-alpha)*(level+trend) trend = beta*(level-last_level) + (1-beta)*trend result.append(level+trend) return result

Коэффициенты alpha и beta отвечают за период и тренд, соответственно. Однако, стоит обратить внимание, что можно получить тот же результат, если возьмем экспоненциальную скользящую от экспоненциальной скользящей.

Стоит также отметить, что двойное экспоненциальное сглаживание позволяет прогнозировать не на одно, а на два значения вперёд.

Тройная экспоненциальная средняя преследует ту же цель, что и двойная, а именно, снижение задержки по времени. Существенная разница заключается в том, что появляется третья константа, которая отвечает за сезонность. Нахождение тройного экспоненциальной скользящей средней построен по тому же принципу, что и двойная, а именно экспоненциальная средняя от двойной экспоненциальной средней. Формула для тройного сглаживания имеет вид:

Тройное экспоненциальное сглаживание является прогностической моделью Холта-Уинтерса, которая позволяет делать прогноз на три дня. Это возможно за счёт того, что каждое последующее (второе и третье) экспоненциальное сглаживание отвечает за тренд и сезонность соответственно.

Другой раздел моделей, который реализован в системе и используется для анализа - это модели дискриминантного анализа. Это раздел вычислительной математики, выделяющий те переменные, которые разделяют наборы признаков по группам. В случае использования методов дискриминантного анализа группы известны заранее, в конкретной системе это группы, которые говорят о падении цены на акцию или её росте (-1) и (1).

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

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

Наиболее популярные методы данного раздела, которые реализованы для анализа данных - это логистическая регрессия, линейный дискриминантный анализ и квадратичный дискриминантный анализ.

Логистическая регрессия - это статистический метод, который предсказывает значения, подгоняя их под логистическую кривую (см. рисунок 9).

Рисунок 9. График логистической кривой.

Математически данный метод можно разделить на несколько этапов. Первый этап - это составление вектора из независимых переменных z, который имеет вид , где - это некоторые веса регрессии, - это значение n-ой координаты вектора. Второй этап - это применение к данному вектору логистической функции вид:

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

В системе данная модель реализована с помощью специализированной библиотеки scikit-learn и метод логистической регрессии имеет вид:

def LogisticRegressionModel(x,y,d): model1 = linear_model.LogisticRegression() model1.fit(x, y) d['Predict_LR'] = model1.predict(x) d["Correct_LR"] = (1.0 + d['Predict_LR'] * d["Actual"]) / 2.0 return d

Следующий метод, относящийся к дискриминантному анализу называется линейным. Линейный дискриминантный анализ, или сокращенно ЛДА, является методом нахождения линейной комбинации признаков, которые будут разделять на группы с наибольшей точностью.\

В случае двух групп, ЛДА можно сравнить со множественной регрессией. В нашем случае названия двух групп кодируются как 1 и (-1). При применении метода множественной регрессии мы получим такой же результат. В общем виде ЛДА это приведение функции к виду: . Можно обратить внимание, что те признаки, которые будут обладать наибольшим весовым коэффициентом будут влиять сильнее на итоговое распределение по группам.

В системе данный метод реализован следующим образом:

def LinearDiscriminantModel(x,y,d): model2 = LDA(solver='lsqr', shrinkage='auto').fit(x,y) d['Predict_LDA'] = model2.predict(x) d["Correct_LDA"] = (1.0+d['Predict_LDA']*d["Actual"])/2.0 return d

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

Программная реализация этого метода имеет вид:

def QuadraticDiscriminantModel(x,y,d): model3 = QDA() model3.fit(x, y) d['Predict_QDA'] = model3.predict(x) d["Correct_QDA"] = (1.0 + d['Predict_QDA'] * d["Actual"]) / 2.0

return d

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

Все модели данного типа реализованы в системе с помощью библиотеки statsmodels и имеют ряд специализированных критериев для оценки качества.

Авторегресионная модель - это модель временного ряда, в которой значения данного временного ряда в данный момент времени линейным образом зависят от значений, которые были в прошлом. В общем виде модель авторегрессии порядка p имеет вид:

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

Усложненная авторегрессионная модель - скользящего среднего является объединением двух более простых (авторегрессионной модели и модели скользящего среднего). Модель ARMA(p,q) имеет два параметра, а именно два целых числа p и q, которые задают порядок модели: p отвечает за авторегрессионную часть модели, а q - за часть скользящего среднего. Данная модель в общем виде выглядит следующим образом:


Подобные документы

  • Назначение и цели создания системы автоматизации, ее устройство, принципы работы. Характеристика комплекса задач и функциональная структура, анализ входной и выходной информации. Логическая модель данных и алгоритм работы с ними. Инструкция пользователя.

    курсовая работа [1,0 M], добавлен 06.07.2016

  • Назначение и требования к автоматизированной системе обработки экономической информации. Общая структура отдела биржевых операций как объекта автоматизации. Техническое, системное программное, информационное и сетевое обеспечение, организация баз данных.

    аттестационная работа [415,7 K], добавлен 30.03.2010

  • Описание разработанной подсистемы автоматизации, алгоритм ее работы. Структуры базы данных и составных частей подсистемы. Затраты на разработку программного продукта и эффект от внедрения подсистемы. Руководство по работе с программным комплексом.

    дипломная работа [3,0 M], добавлен 02.02.2009

  • Принципы автоматизации делопроизводства. Общие понятия документооборота. Проектирование программного обеспечения. Стадии и этапы создания информационных систем, средства их разработки. Анализ алгоритмов работы с базой данных, разработка интерфейса.

    дипломная работа [3,4 M], добавлен 07.11.2015

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

    курсовая работа [399,1 K], добавлен 26.08.2019

  • Анализ аналогов и выбор прототипа, разработка алгоритма и графического интерфейса, кодирование и тестирование. Логическая модель данных "Нотариальная контора". Особенности реализации в MS SQL. Требования к функциональным характеристикам базы данных.

    курсовая работа [1,3 M], добавлен 12.01.2013

  • Разработка программного обеспечения, моделирующего работу банкомата. Особенности области применения терминала и выделение главных функциональных частей. Разработка алгоритма работы программы и реализация системы. Ее тестирование и анализ результатов.

    курсовая работа [5,5 M], добавлен 12.10.2011

  • Анализ предметной области и требований пользователей для разработки программного средства по автоматизации работы склада строительных материалов. Описание работы с базой данных Access, позволяющей добавлять и редактировать информацию, оформлять накладную.

    курсовая работа [601,1 K], добавлен 25.01.2013

  • Методы статического и динамического анализа зависимостей по данным для последовательных программ. Разработан и реализован алгоритм гибридного анализа, объединяющий достоинства обоих методов. Статическая библиотека представления базы данных САПФОР.

    дипломная работа [169,6 K], добавлен 21.11.2010

  • Разработка комплекса интеллектуального анализа данных, получаемых в процессе работы коммерческого предприятия розничной торговли. Исследование стационарности ассоциаций, выявление частоты появления ассоциаций. Скрипты для создания баз данных и таблиц.

    курсовая работа [706,3 K], добавлен 07.08.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.