Выявление и анализ корреляционных характеристик фьючерсных контрактов
Определение сущности фьючерсного контракта. Рассмотрение сравнительного анализа модели искусственной нейронной сети и регрессионных моделей. Ознакомление с процессом выбора программного обеспечения. Исследование временных рядов биржевых индексов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 30.08.2016 |
Размер файла | 453,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Оглавление
- Введение
- 1. Теоретическое обоснование
- 1.1 Срочный рынок и место спекулянтов на нем
- 1.2 Биржевые индексы и макроэкономические показатели и их влияние на торги
- 1.3 Методы регрессионного анализа
- 1.4 Модели и методы оценивания автокорреляционных и кросскорреляционных характеристик временных рядов
- 1.5 Методы построения и обучения искусственной нейронной сети
- 2. Информационная поддержка исследования
- 2.1 Временные ряды фьючерсных контрактов
- 2.2 Временные ряды биржевых индексов
- 2.3 Выбор программного обеспечения
- 3. Выявление и анализ корреляционных характеристик
- 3.1 Корреляционный анализ временных рядов
- 3.2 Регрессионный анализ временных рядов
- 4. Построение модели искусственной нейронной сети
- 4.1 Идентификация модели искусственной нейронной сети
- 4.2 Калибровка модели искусственной нейронной сети
- 5. Сравнительный анализ модели искусственной нейронной сети и регрессионных моделей
- Заключение
- Список использованных источников
- Приложение
Введение
В настоящее время в мире наблюдается нестабильная политическая и макроэкономическая обстановка, вследствие чего имеют место резкие и сильные изменения спроса и предложения на рынках капитала в целом и на рынке производных финансовых инструментов, в частности. В таких условиях возрастает вероятность быстрого и сильного изменения стоимости различных товаров - возрастает волатильность на рынках капитала, а значит, и риски потерь при участии в торгах. Вследствие этого падает прибыль тех спекулянтов, которые не учитывают в своих расчетах эти изменения. Чтобы минимизировать риски потерь при работе на рынках производных финансовых инструментов (а именно, фьючерсных контрактов) необходимо знать, как различные макроэкономические факторы влияют на ценообразование фьючерсных контрактов. Также необходимо знать, как ведет себя временной ряд цены фьючерсных контрактов, и как изменения цен одних фьючерсных контрактов влияют на цены других фьючерсных контрактов.
Актуальность исследования обусловлена необходимостью повышения прибылей спекулянтов, торгующих фьючерсными контрактами на Чикагской Товарной Бирже - Chicago Mercantile Exchange (CME).
Фьючерс или фьючерсный контракт - это обязанность купить или продать определенное количество определенного актива определенного качества в конкретную дату. Место, где торгуют фьючерсными контрактами, называется срочным рынком. В настоящий момент в мире насчитывается более тридцати крупных срочных рынков. В один и тот же момент времени цена на один и тот же актив на разных рынках может отличаться ввиду специфичности спроса и предложения на этих рынках. Кроме того, рынки функционируют в разное время суток (из-за разницы часовых поясов) - поэтому объектом исследования выбран самый большой по количеству заключаемых сделок в год рынок фьючерсных контрактов - Чикагская Товарная Биржа - Chicago Mercantile Exchange (CME). Предмет исследования - цены фьючерсных контрактов, торгуемых на CME.
Контракты появляются на срочном рынке путем предложения их продавцами, так формируется первоначальное (реальное) предложение. На рынке должны быть желающие купить контракт, иначе продавец не сможет продать контракт, то есть, необходимо наличие спроса. Тот, кто купил контракт, может не продавать контракт, а ждать даты его поставки (даты экспирации), и в таком случае получить реальный товар (так действуют покупатели реальных товаров). Также, тот, кто купил контракт, может перепродать купленный контракт до даты его поставки (так действуют спекулянты). В каждый момент времени торгов на рынке есть и продавцы, и покупатели, и не важно, спекулянты они или нет - они формируют спрос и предложение, то есть рыночную цену контракта. Но тот, кто обладает контрактом в момент прекращения торгов по данному контракту (после завершения торгов в день экспирации), обязан купить контракт, то есть получить реальный товар. Значит, конечный (реальный) спрос формируют покупатели реальных товаров. Если реальный спрос ниже реального предложения, то цена актива падает. Спекулянт не хочет покупать реальный товар, он зарабатывает на разнице цен в разные моменты времени, то есть спекулянту необходимо с высокой точностью прогнозировать изменение цен активов.
Целью исследования является увеличение точности прогноза ценовых котировок товаров, торгуемых на CME.
В соответствии с целью исследования были поставлены следующие задачи:
1. оценить автокорреляционные характеристики временного ряда каждой исследуемой котировки;
2. оценить кросскорреляционные характеристики временных рядов исследуемых котировок каждой с каждой, с временными рядами биржевых индексов и с временными рядами основных макроэкономических показателей;
3. построить нейросетевую модель прогнозирования цены фьючерсных контрактов;
4. выбрать оптимальные параметры нейросетевой модели;
5. провести сравнительный анализ моделей предсказания цены по точности прогноза.
Для решения задач, поставленных в рамках исследования, были использованы следующие методы и инструменты:
· регрессионный анализ;
· анализ временных рядов;
· построение модели искусственной нейронной сети;
· система прикладного программирования MATLAB.
Информационная база исследования представлена следующими ресурсами:
· http://www.investing.com/ - были предоставлены данные о биржевых индексах (дата обращения 10.04.16);
· CQG подписка на NinjaTrader 7.0 - были предоставлены данные о биржевых котировках CME (дата обращения 10.04.16).
Исследование состоит из введения, пяти глав, заключения, списка использованных источников и приложения.
Глава 1 «Теоретическое обоснование» описывает специфические понятия, математические модели и методы, используемые в исследовании.
Глава 2 «Информационная поддержка исследования» описывает данные, необходимые для проведения исследования, и программное обеспечение, используемые в исследовании. Также в этой главе дается объяснение, почему используется конкретное программное обеспечение.
Глава 3 «Выявление и анализ корреляционных характеристик» описывает автокорреляционные и кросскорреляционные зависимости исследуемых временных рядов.
Глава 4 «Построение модели искусственной нейронной сети» описывает алгоритм построения модели искусственной нейронной сети, а именно: идентификацию, обучение, выбор оптимальных параметров модели и ее переобучение.
Глава 5 «Сравнительный анализ модели искусственной нейронной сети и корреляционных моделей» описывает методы сравнения моделей и результаты сравнительного анализа.
В Заключении приводятся итоги проделанной работы.
В Списке использованных источников указывается литература, которая была использована для проведения данного исследования.
1. Теоретическое обоснование
1.1 Срочный рынок и место спекулянтов на нем
Биржа - юридическое лицо, которое обеспечивает регулярное функционирование организованного рынка товаров и производных финансовых инструментов. Торговля ведётся стандартными контрактами, размер которых регламентируют нормативные документы биржи. Основная функция биржи - ценообразование торгуемых на ней инструментов.
Чикагская товарная биржа - одна из крупнейших и наиболее диверсифицированная товарно-сырьевая биржа мира. CME основана в 1874 году, располагается в Чикаго, США. С 2007 года является частью Группы Чикагской товарной биржи (CME Group). В 1992 году на CME создали первую в мире глобальную электронную торговую платформу - Globex, которая предназначена для удаленного доступа к биржевым торгам. На сегодняшний день, объем электронных торгов CME многократно превышает объем торгов «в яме». Торги на Globex проходят круглосуточно 5 дней в неделю (с понедельника по пятницу) с часовым перерывом на клиринг.
Инструмент - стандартизированный по качеству и по объему товар или финансовый показатель. Так, инструментом является 1000 тройских унций золота 995 пробы и значение индекса S&P500, умноженное на 50. В первом случае на бирже определяется цена 1000 тройских унций золота, а во втором - идет спор о значении индекса S&P500.
Фьючерсный контракт или фьючерс - это обязанность купить или продать определенное количество определенного инструмента в конкретную дату. Биржа является гарантом исполнения обязательств купли продажи контрагентами.
Дата экспирации - последний день торговли определенного контракта. По прошествии дня экспирации, данный контракт больше не торгуется. Продолжаются торги только по более новым контрактам. Теперь те, кто не избавился от обязательств по контракту, должны исполнить свои обязательства по покупке или продаже контракта. В противном случает к агенту будут применены санкции со стороны биржи.
Торги
При заключении фьючерсного контракта всегда есть две стороны - продавец и покупатель, значит, при движении цены в любую сторону один из них всегда будет нести убыток, а второй получать равную по величине прибыль. Таким образом, сумма прибылей и убытков всех участников торгов равна нулю (с точностью до уплаченных бирже и посредникам клиринговых и иных сборов).
В настоящее время большая часть биржевых сделок заключается через Интернет, что значительно упрощает и ускоряет процедуру торгов. С увеличением скорости торгов стали активно развиваться новые методы орговли.
Цена фьючерсного контракта - это точка пересечения спроса и предложения на актив a в определенный момент времени. Это значит, что в момент времени t продавец готов продать актив по цене c, а покупатель готов купить этот актив по цене c. То есть, в момент времени t продавец продал актив по цене c, а покупатель купил этот актив по цене c. Говорят, что в момент времени t произошла сделка по активу a по цене c.
OHLC бар и объем
OHLC бар фьючерсного контракта за определенный период времени - это значения четырех цен:
· Цены в начале рассматриваемого промежутка времени (open - O);
· Максимальной цены в течение рассматриваемого промежутка времени (high - H);
· Минимальной цены в течение рассматриваемого промежутка времени (low - L);
· Цены в конце рассматриваемого промежутка времени (close - C).
Объем торгов фьючерсного контракта за определенный период времени - это количество купленных (проданных) контрактов в течение рассматриваемого промежутка времени.
В данном исследовании рассматриваются OHLC бары и объемы торгов с интервалом в один день проведения торгов. То есть Open - цена в начале торгового дня, Close - цена в конце торгового дня.
Спекулянт, его цели и средства
Спекулянт - участник рыночных торгов, цель которого заработать на изменениях цен активов. Стратегия спекулянта - купить дешевле, продать дороже, или взять в долг актив, продать его дороже, потом выкупить дешевле. Принимая решение купить или продать контракт, спекулянт руководствуется своими ожиданиями на счет цены контракта в будущем. Для формирования своих ожиданий спекулянт выдвигает гипотезы относительно рыночной ситуации и на основе них строит модели изменения цен контрактов.
Прогноз ценовых котировок - предположение о стоимости актива в будущем, основанное на известных на текущий момент времени показателях. Прогнозы различаются по точности, продолжительности, количеству входных параметров.
1.2 Биржевые индексы и макроэкономические показатели и их влияние на торги
Биржевой (Фондовый) индекс - взвешенная сумма цен определённой группы ценных бумаг. Индекс - это расчетный показатель, который сам по себе ценности не имеет, но он полезен тем, что изменение значения индекса во времени позволяет оценивать общее движение цен в группе ценных бумаг, входящих в индекс, даже если цены активов, входящих в индекс, изменяются разнонаправленно. В зависимости от принципа выбора ценных бумаг, входящих в индекс, индекс может отражать ценовую динамику группы ценных бумаг, объединенных по какому-то признаку: местоположение компаний, их сектор или размер и др. Значение индекса может быть предметом спора: один считает, что значение индекса со временем увеличится, а другой - что значение индекса уменьшится. На основе этого формируются беспоставочные фьючерсные контракты на индексы (и не только на них, но и на многие виды товаров).
Макроэкономический показатель - опубликованная в официальном издании количественная оценка состояния экономики отдельного региона или государства. Макроэкономические показатели существенно влияют на цены фьючерсных контрактов CME, так как по ним оценивают экономическую ситуацию страны или региона. Но макроэкономические показатели значимо коррелируют с биржевыми индексами, поэтому в данном исследовании было решено их не использовать для построения прогноза.
Влияние биржевых индексов на торги
Биржевой индекс отражает взвешенный уровень ценности для инвесторов относительно группы ценных бумаг, входящих в индекс. Можно считать изменения значений основных фондовых индексов как изменение настроений инвесторов относительно экономической ситуации. Таким образом, биржевые индексы значимо влияют на цены фьючерсных контрактов в целом, и на фьючерсные контракты CME в частности.
1.3 Методы регрессионного анализа
Модель множественной линейной регрессии - модель линейной зависимости объясняемой переменной от нескольких других независимых переменных.
Построение модели множественной линейной регрессии
1. Для построения линейной регрессии необходима выборка данных - несколько наблюдений зависимой и независимых переменных. Важно, чтобы количество наблюдений было больше, чем независимых переменных.
2. Данные должны быть репрезентативны, то есть, отражать генеральную совокупность.
3. Далее для каждой переменной и зависимой, и независимых, необходимо удалить такие элементы наблюдения, которые отдалены от среднего больше чем на 2 стандартных отклонения. Важно, чтобы после проделанных действий количество наблюдений было больше, чем независимых переменных. Пусть дана Выборка объёмом n наблюдений переменных y и x. Обозначим t - номер наблюдения в выборке. Тогда y_t - значение переменной y в t-м наблюдении, x_{tj} -- значение j-го фактора в t-м наблюдении. Тогда линейная регрессионная зависимость имеет место в каждом наблюдении:
, где
y - вектор наблюдений зависимой переменой;
X - матрица независимых переменных;
E - вектор случайных ошибок;
bi - искомые параметры модели.
Тогда модель линейной регрессии можно представить в матричной форме:
.
Важно отметить, что один из столбцов матрицы - константа (единица).
4. Методом наименьших квадратов находим искомые параметры модели.
Полнота ранга
Матрица X имеет полный ранг - ранг матрицы X равен количеству независимых переменных.
Отсутствие автокорреляции
Ошибки не зависят друг от друга.
Отсутствие гетероскедастичности
Дисперсия ошибок одинакова и равна некоторому числу.
Теорема Гаусса-Маркова
Если:
· Модель данных правильно специфицирована;
· Все независимые переменные детерминированы и не все равны между собой;
· Ошибки не носят систематического характера;
· Дисперсия ошибок одинакова и равна некоторому числу
· Корреляция ошибок равно нулю,
то в этих условиях оценки метода наименьших квадратов оптимальны в классе линейных несмещённых оценок.
Анализ результатов модели множественной линейной регрессии
Если выполняются условия полноты ранга, отсутствия автокорреляции, отсутствия гетероскедастичности, то по теореме Гаусса-Маркова оценки метода наименьших квадратов оптимальны в классе линейных несмещённых оценок. Для данной спецификации модели найденные коэффициенты наилучшие. Значимость модели оценивается значением коэффициента детерминации - : Он показывает, насколько условная дисперсия модели отличается от дисперсии реальных значений зависимой переменной. Чем ближе значение коэффициента детерминации к 1, тем лучше. Значение коэффициента детерминации равное единице означает, что модель на 100% описывает зависимость между переменными в рамках данной выборки. Если же коэффициент детерминации не превышает значения 0.5, то, с большой вероятностью модель не отражает зависимость между переменными. рассчитывается так:
, где
- наблюдаемое значение зависимой переменной;
- рассчитанное по модели значение зависимой переменной;
- среднее значение .
В данном исследовании модель множественной линейной регрессии считается значимой, если > 0.7.
1.4 Модели и методы оценивания автокорреляционных и кросскорреляционных характеристик временных рядов
Временной ряд - это статистический материал о значении каких-либо параметров исследуемого процесса, собранных в различные моменты времени и упорядоченные по времени. Один элемент временного ряда называется измерением (отсчетом). Во временном ряду каждому измерению должно соответствовать уникальное время или уникальный порядковый номер. Временной ряд отличается от простой выборки данных тем, что в нем учитывается взаимосвязь измерений со временем (или номером измерения), а не только статистические характеристики выборки.
Корреляция (корреляционная зависимость) - статистическая взаимосвязь двух случайных величин. Коэффициент корреляции может принимать значения от -1 до 1 включительно. Коэффициент корреляции показывает степень линейной зависимости случайных величин: если значение корреляции близко к 1 или к -1, значит, имеет место ярко выраженная линейная зависимость случайных величин. Если значение корреляции близко к 0, значит, линейная зависимость отсутствует. При этом изменения значений одной или нескольких из этих величин сопутствуют систематическому изменению значений другой или других величин.
Значимость корреляции устанавливается путем проверки гипотезы о равенстве корреляции нулю. Если гипотеза подтверждается (на определенном уровне значимости), то корреляция не значима и приравнивается к нулю, иначе значима.
Автокорреляция - статистическая взаимосвязь (корреляция) между наблюдениями одного временного ряда, взятыми с одинаковым сдвигом (лагом).
Автокорреляционная функция показывает автокорреляцию (коэффициент корреляции) лагов временного ряда. Пример автокорреляционной функции представлен на рисунке 1.
Рисунок 1
Кросс-корреляция - статистическая взаимосвязь (корреляция) между наблюдениями одного двух различных рядов, взятыми с одинаковым сдвигом (лагом).
Кросс-корреляционная функция показывает кросс-корреляцию (коэффициент корреляции) лагов двух временных рядов. Пример кросс-корреляционной функции представлен на рисунке 2.
Рисунок 2
Разность временного ряда - это временной ряд, который получается из исходного путем взятия разностей между двумя соседними наблюдениями (от более позднего отнимают более раннее). После такой процедуры ряд становится короче на одно наблюдение.
1.5 Методы построения и обучения искусственной нейронной сети
Искусственный нейрон - узел искусственной нейронной сети, являющийся упрощённой моделью естественного нейрона. Искусственный нейрон принимает, обрабатывает и выдает данные. Принятые на вход данные взвешенно складываются и подаются на вход активационной функции нейрона, результат ее действия является выходом нейрона. Нейрон может обучаться путем изменения весов входных параметров.
Искусственная нейронная сеть - математическая модель, а также её программная реализация, построенная по принципу организации и функционирования биологических нейронных сетей - сетей нервных клеток живого организма. Нейронная сеть - это система соединённых и взаимодействующих между собой искусственных нейронов. Так как нейроны способны обучаться, то и нейронная сеть тоже это может. За счет этого с помощью нейронных сетей можно выявить зависимости, которые не удавалось обнаружить другими способами. Нейронные сети используются в машинном обучении.
Обучение искусственной нейронной сети
Нейронные сети не программируются в привычном смысле этого слова, они обучаются. Возможность обучения -- одно из главных преимуществ нейронных сетей перед традиционными алгоритмами. Технически обучение заключается в нахождении коэффициентов связей между нейронами. В ходе обучения нейронная сеть способна обнаружить нетривиальные зависимости между параметрами и обобщать полученные знания.
Нейронные сети обучаются по определенным алгоритмам нелинейной оптимизации. В данной работе при обучении нейронной сети используется алгоритм Левенберга - Марквардта. Это алгоритм градиентного спуска - минимизации квадратичной ошибки. Алгоритм прекращает работу, либо когда квадратичная ошибка становится пренебрежимо малой, либо, когда с каждым шагом алгоритма квадратичная ошибка значительно не меняется. Это означает, что найден минимум: локальный или глобальный - в сложных прогнозных моделях невозможно определить, локальный ли это экстремум или нет, поэтому нейронную сеть обучают из случайной начальной точки. Так, используя одни и те же методы, исследуя одну и ту же выборку можно получить различные результаты.
В главе 1 описаны специфические понятия, математические модели и методы, используемые в исследовании.
2. Информационная поддержка исследования
2.1 Временные ряды фьючерсных контрактов
В данной работе рассматриваются следующие инструменты рынка CME:
· Поставочный фьючерсный контракт на 100000 австралийских долларов - 6A - в год торгуется 4 контракта с месяцами поставки: март, июнь сентябрь и декабрь.
· Поставочный фьючерсный контракт на британский фунт - 6B - в год торгуется 4 контракта с месяцами поставки: март, июнь сентябрь и декабрь.
· Поставочный фьючерсный контракт на канадский доллар - 6C - в год торгуется 4 контракта с месяцами поставки: март, июнь сентябрь и декабрь.
· Поставочный фьючерсный контракт на евро - 6E - в год торгуется 4 контракта с месяцами поставки: март, июнь сентябрь и декабрь.
· Поставочный фьючерсный контракт на японскую йену - 6J - в год торгуется 4 контракта с месяцами поставки: март, июнь сентябрь и декабрь.
· Поставочный фьючерсный контракт на мексиканский песо - 6M - в год торгуется 4 контракта с месяцами поставки: март, июнь сентябрь и декабрь.
· Поставочный фьючерсный контракт на швейцарский франк - 6S - в год торгуется 4 контракта с месяцами поставки: март, июнь сентябрь и декабрь.
· Поставочный фьючерсный контракт на нефть марки Crude Oil - CL - в год торгуется 12 контрактов с месяцами поставки: январь, февраль, март, апрель, май, июнь, июль, август, сентябрь, октябрь, ноябрь, декабрь.
· Беспоставочный фьючерсный контракт на индекс доллара - DX - в год торгуется 4 контракта с месяцами поставки: март, июнь, июль, август, сентябрь и декабрь.
· Беспоставочный фьючерсный контракт на индекс S&P500 - ES - в год торгуется 4 контракта с месяцами поставки: март, июнь сентябрь и декабрь.
· Поставочный фьючерсный контракт на золото - GC - в год торгуется 8 контрактов с месяцами поставки: февраль, апрель, июнь, июль, август, октябрь, ноябрь, декабрь.
· Поставочный фьючерсный контракт на чистый природный газ - NG - в год торгуется 12 контрактов с месяцами поставки: январь, февраль, март, апрель, май, июнь, июль, август, сентябрь, октябрь, ноябрь, декабрь.
· Беспоставочный фьючерсный контракт на индекс NASDAQ 100 - NQ - в год торгуется 4 контракта с месяцами поставки: март, июнь сентябрь и декабрь.
· Поставочный фьючерсный контракт на серебро - SI - в год торгуется 6 контраков с месяцами поставки: январь, март, май, июль сентябрь и декабрь.
· Беспоставочный фьючерсный контракт на индекс Dow - YM - в год торгуется 4 контракта с месяцами поставки: март, июнь сентябрь и декабрь.
· Поставочный фьючерсный контракт на кукурузу - ZC - в год торгуется 5 контрактов с месяцами поставки: март, май, июль, сентябрь, декабрь.
· Поставочный фьючерсный контракт на 5-ти летние казначейские облигации Федрезерва США - ZF - в год торгуется 4 контракта с месяцами поставки: март, июнь сентябрь и декабрь.
· Поставочный фьючерсный контракт на соевое масло - ZL - в год торгуется 8 контрактов с месяцами поставки: январь, март, май, июль, август, сентябрь, октябрь, декабрь.
· Поставочный фьючерсный контракт на соевую муку - ZM - в год торгуется 8 контрактов с месяцами поставки: январь, март, май, июль, август, сентябрь, октябрь, декабрь.
· Поставочный фьючерсный контракт на 10-ти летние казначейские облигации Федрезерва США - ZN - в год торгуется 4 контракта с месяцами поставки: март, июнь сентябрь и декабрь
· Поставочный фьючерсный контракт на сою - ZS - в год торгуется 7 контрактов с месяцами поставки: январь, март, май, июль, август, сентябрь, ноябрь.
· Поставочный фьючерсный контракт на 2-ух летние казначейские облигации Федрезерва США - ZT - в год торгуется 4 контракта с месяцами поставки: март, июнь сентябрь и декабрь.
· Поставочный фьючерсный контракт на пшеницу - ZW - в год торгуется 5 контрактов с месяцами поставки: март, май, июль, сентябрь, декабрь.
Для каждого инструмента были получены данные в формате OHLC и значений объема торгов, затем по этим данным были рассчитаны следующие поля:
1. «X1» Цена закрытия текущего дня, деленная на цену закрытия предыдущего дня торгов. В анализе использовалась первая разность показателя.
2. «X2» Цена закрытия текущего дня, деленная на цену открытия текущего дня. В анализе использовалась первая разность показателя.
3. «X3» Максимальная цена за текущий день, деленная на минимальную цену за текущий день
4. «X4» Разность скользящего среднего объема торгов. В анализе использовалась первая разность показателя.
5. «X5» Цена закрытия текущего дня по отношению к цене закрытия 4 января 2014 года. В анализе использовалась вторая разность показателя.
Взятие разности необходимо для избавления рядов от тренда.
2.2 Временные ряды биржевых индексов
В данной работе рассматриваются следующие биржевые индексы:
· DAX (Deutscher Aktienindex) - ключевой фондовый индекс немецкого рынка акций. Расчет индекса ведется с 1 июля 1988 года компанией Deutsche Bцrse AG. Базу для расчета составляют котировки акций 30 наиболее крупных компаний.
· Dow30 - промышленный индекс США.
· FTSE100 (Financial Times Stock Exchange Index) - ключевой фондовый индекс Великобритании. Расчет индекса осуществляет с 3 января 1984 года с уровня 1000 пунктов агентством Financial Times. Индекс рассчитывается на основе курса акций 100 компаний с наибольшей капитализацией, включённых в список Лондонской фондовой биржи.
· HangSeng - ключевой фондовый индекс Гонконгской фондовой биржи. Он вычисляется как среднее взвешенное значение крупнейших по капитализации акций 34 акционерных компаний Гонконга, которые составляют 65% от общей капитализации Гонконгской фондовой биржи.
· KOSPI - основной фондовый индекс Южной Кореи. В расчет индекса входят котировки 100 крупнейших компаний страны, имеющих листинг на Корейской фондовой Бирже. Расчет индикатора ведется с 4 января 1980 пункта, стартовой отметкой стал уровень в 1000 пунктов.
· NASDAQ100 - фондовый индекс США.
· Nikkei225 - основной фондовый индекс Японии, рассчитывается как средневзвешенное значение котировок 225 наиболее ликвидных акций. Расчет индекса осуществляется 7 сентября 1950 года Токийской фондовой биржей под названием «TSE Adjusted Stock Price Average». С 1970 года индекс рассчитывется японской газетой Nihon Keizai Shimbun под названием Nikkei - в честь сокращенного названия газеты.
· Russell2000 - фондовый индекс США.
· SP500 - фондовый индекс США.
· Tadawul - фондовый индекс Саудовской Аравии.
Для каждого индекса рассчитаны следующие поля:
1. Цена закрытия текущего дня, деленная на цену закрытия предыдущего дня торгов.
2. Цена закрытия текущего дня, деленная на цену открытия текущего дня.
3. Цена закрытия текущего дня по отношению к цене закрытия 4 января 2014 года.
В анализе использовалась первая разность каждого из перечисленных полей. Это необходимо для избавления рядов от тренда.
2.3 Выбор программного обеспечения
Для решения поставленных задач и достижения цели исследования желательно использовать современные инструменты программирования и анализа данных. Вся обработка и анализ данных в данном исследовании проводились при помощи программного продукта MATLAB R2016a компании MathWorks. Выбор программного продукта обусловлен тем, что он обладает всем необходимым функционалом и является удобным в использовании.
Во второй главе описаны данные, необходимые для проведения исследования, и программное обеспечение, используемые в исследовании, дается объяснение, почему используется конкретное программное обеспечение.
3. Выявление и анализ корреляционных характеристик
Перед началом анализа необходимо загрузить все необходимые данные, преобразовать их в читаемый программой вид, а также проанализировать сами данные. В связи пропусками данных 2008 и 2009 годов было принято решение анализировать рыночную ситуацию с 4 января 2010 года по 4 февраля 2016 года. Выяснилось, что индекс Саудовской Аравии Tadawul не торгуется по общепринятому недельному графику. Это сделало невозможным дальнейший анализ с участием этого индекса - Tadawul пришлось исключить из исследования. Данные по остальным индексам и инструментам оказались адекватными.
3.1 Корреляционный анализ временных рядов
По мере проведения кросскорреляционного анализа станет известно, присутствует ли сезонная зависимость временных рядов.
Корреляционный анализ в рамках одного инструмента
Для проведения корреляционного анализа в рамках одно инструмента необходимо построение:
· автокорреляционной функции ряда исследуемого инструмента;
· автокорреляционной функции ряда исследуемого инструмента в разрезе одинаковых дней недели проведения торгов (временной ряд торгов в понедельник, временной ряд торгов во вторник и т.д.);
· автокорреляционной функции ряда исследуемого инструмента в разрезе одинакового количества дней, оставшихся до даты экспирации контракта;
· автокорреляционной функции ряда исследуемого инструмента;
· автокорреляционных функций рядов всех контрактов исследуемого инструмента;
· кросскорреляционных функций между разными контрактами илледуемого инструмента;
· кросскорреляционных функций в разрезе различных полей одного инструмента (X1, X2, X3, X4, X5).
Эти операции необходимо проделать для каждого исследуемого инструмента (рассмотреть кросскорреляции разных полей).
Корреляционный анализ инструментов и индексов
Для проведения кросскорреляционного анализа необходимо построение:
· кросскорреляционных функций рядов инструментов и индексов
· кросскорреляционных функций инструментов в разрезе одинаковых дней недели проведения торгов (временной ряд торгов в понедельник, временной ряд торгов во вторник и т.д.);
Эти операции необходимо проделать для каждого исследуемого инструмента (рассмотреть кросскорреляции разных полей).
Все коэффициенты корреляции были проверены на значимость. Все незначимые коэффициенты корреляции, а также по модулю меньшие 0,65 были исключены из рассмотрения. Корреляции на лаге 0 не рассматривались, так как эти процессы происходят одновременно, то по изменению одного нельзя сказать, что изменится второй - они изменятся одновременно.
В ходе кросскорреляционного анализа не была выявлена сезонность: контракты с одинаковым месяцем, но с различным годом поставки не демонстрировали постоянную значимую зависимость. Да, корреляции между контрактами имеют место быть, но статистически, это не закономерность. Показатель частного соседних торговых дней своим поведением схож с процессом белого шума. Только четыре индекса (DOW, Nasdaq, Russell2000 и S&P500) коррелируют с инструментами CME. Это объясняется тем, что как и CME, эти индексы американские. Удалось выявить значимую зависимость между объемом торгов и разнице между наибольшей ценой за день и наименьшей. Это требует статистических доказательств.
3.2 Регрессионный анализ временных рядов
Несмотря на отсутствие постоянных значимых корреляций во временных рядах исследуемых инструментов, было принято решение провести регрессионный анализ. Был проведен анализ влияния произведений полей друг на друга. Как и ожидалось на этапе корреляционного анализа, удовлетворительных моделей не было ни одной, кроме зависимости дневного диапазона торгов от объема.
Проведен корреляционный и регрессионный анализ. Точность предсказаний получившихся моделей линейных регрессий неудовлетворительная.
4. Построение модели искусственной нейронной сети
4.1 Идентификация модели искусственной нейронной сети
Исходя из цели исследования, было принято решение прогнозировать ряд отношения цен закрытия. Все такие ряды исследуемых инструментов интерпретируются как зависимые переменные, все остальные ряды - как независимые. Была построена модель нейронной сети и обучена с помощью алгоритма Левенберга - Марквардта на выборке в 1000 наблюдений. Коэффициент детерминации каждой зависимой переменной превысил 0,67. Схема модели представлена на рисунке 3.
Рисунок 3
4.2 Калибровка модели искусственной нейронной сети
Смена вида функций активации нейронов скрытого слоя ухудшила предикативные свойств модели, поэтому было решено функции активации оставить без изменений. При добавлении нейронов в скрытый слой время обучения увеличивалось значительно, а качество модели улучшалось до определенного уровня (=0.7 при 50 нейронах в скрытом слое). Было решено оставить 50 нейронов в скрытом слое.
На вход модели, описанной выше, подаются только независимые переменные. Так как исследуемые переменные - это временные ряды, то есть возможность прогнозировать зависимые переменные, подавая на вход модели предыдущие значения зависимых и независимых переменных. Такая модель представлена на рисунке 4. фьючерсный нейронный программный
Рисунок 4
Такая модель с 20 нейронами в скрытом слое дала результат =0.91 на тестовой выборке.
5. Сравнительный анализ модели искусственной нейронной сети и регрессионных моделей
Коэффициент детерминации моделей линейной регрессии в данной области не превосходит 0,3, в то время как модель основанная на искусственных нейронных сетях демонстрирует коэффициент детерминации 0,9. Отсюда можно сделать однозначный вывод, что нейросетевая модель лучше предсказывает изменение цен, чем модель линейной регрессии. Ее единственный недостаток - необходимо большое количество вычислительных мощностей для обучения.
Заключение
В рамках данного исследования были оценены автокорреляционные характеристики временных рядов каждой исследуемой котировки, оценены кросскорреляционные характеристики временных рядов исследуемых котировок каждой с каждой, с временными рядами биржевых индексов, построена нейросетевая модель прогнозирования цены фьючерсных контрактов, выбраны оптимальные параметры нейросетевой модели, проведен сравнительный анализ моделей нейронной сети и линейной регрессии по точности прогноза. Эмпирическим путем было доказано, что модель искусственной нейронной сети точнее прогнозирует цены фьючерсных контрактов, чем модели линейной регрессии.
Список использованных источников
1. Katz, J.O. and McCormick D.L. «The encyclopedia of trading strategies», Moscow, Alpina Publisher 2015
2. Schwager, J.D. «Technical analysis», Moscow, Alpina Publisher 2015
3. Teplova, T.V. «Investments», Moscow, Yurayt 2016
4. Callan, R. «The essence of neural networks», Moscow, Williams 1999
5. Александр Элдер «Трейдинг с доктором Элдером: Энциклопедия биржевой игры», Альпина Паблишер 2015
6. Дэниел Сигел, Дайан Сигел. «Фьючерсные рынки: Портфельные стратегии, управление рисками и арбитраж», Альпина Паблишер 2012
7. В.Зимин, Д.Кондратьев. «Биржи мира. История, культура, финансы» -- М.: Московская биржа, 2013
8. Sandhya Samarasinghe «Neural Networks For Applied Sciences And Engineering» Auerbach publications, 2007
9. CME [Электронный ресурс] / Википедия - свободная энциклопедия. - URL: https://en.wikipedia.org/wiki/Chicago_Mercantile_Exchange. (Дата обращения: 23.04.16)
10. How To Use S&P 500 Futures To Predict Market Movement [Статья] - URL: http://www.benzinga.com/media/cnbc/14/10/4912893/how-to-use-s-p-500-futures-to-predict-market-movement (Дата обращения: 01.05.16)
11. The Historical Relationship Between the S&P 500 and the Economy [Электронный ресурс] - URL: http://www.businessinsider.com/the-historical-relationship-between-the-sp-500-and-the-economy-part-2-the-abrupt-rise-of-short-term-investing-2011-5 (Дата обращения: 02.05.16)
Приложение
Код MATLAB скрпитов
getData;
getIndices;
d1=getfield(dataAll, 'q6A');
d2=getfield(dataAll, 'q6B');
d3=getfield(dataAll, 'q6C');
d4=getfield(dataAll, 'q6E');
d5=getfield(dataAll, 'q6J');
d6=getfield(dataAll, 'q6L');
d7=getfield(dataAll, 'q6M');
d8=getfield(dataAll, 'q6S');
d9=getfield(dataAll, 'qCL');
d10=getfield(dataAll, 'qDX');
d11=getfield(dataAll, 'qE7');
d12=getfield(dataAll, 'qES');
d13=getfield(dataAll, 'qGC');
d14=getfield(dataAll, 'qHG');
d15=getfield(dataAll, 'qNG');
d16=getfield(dataAll, 'qNQ');
d17=getfield(dataAll, 'qPA');
d18=getfield(dataAll, 'qPL');
d19=getfield(dataAll, 'qRB');
d20=getfield(dataAll, 'qSI');
d21=getfield(dataAll, 'qYM');
d22=getfield(dataAll, 'qZC');
d23=getfield(dataAll, 'qZF');
d24=getfield(dataAll, 'qZL');
d25=getfield(dataAll, 'qZM');
d26=getfield(dataAll, 'qZN');
d27=getfield(dataAll, 'qZS');
d28=getfield(dataAll, 'qZT');
d29=getfield(dataAll, 'qZW');
dt(:,3:274)=nan;
dt(:,3) = 1;
dt(:,7) = 2;
dt(:,11) = 3;
dt(:,15) = 4;
dt(:,19) = 5;
dt(:,23) = 6;
dt(:,27) = 7;
dt(:,31) = 8;
dt(:,35) = 9;
dt(:,39) = 10;
dt(:,43) = 11;
dt(:,51) = 12;
dt(:,59) = 13;
dt(:,67) = 14;
dt(:,75) = 15;
dt(:,83) = 16;
dt(:,91) = 17;
dt(:,99) = 18;
dt(:,107) = 19;
dt(:,115) = 20;
dt(:,123) = 21;
dt(:,131) = 22;
dt(:,139) = 23;
dt(:,147) = 24;
dt(:,155) = 25;
dt(:,163) = 26;
dt(:,171) = 27;
dt(:,179) = 28;
dt(:,187) = 29;
dt(:,195) = 30;
dt(:,203) = 31;
dt(:,211) = 32;
dt(:,219) = 33;
dt(:,227) = 34;
dt(:,235) = 35;
dt(:,243) = 36;
dt(:,251) = 37;
dt(:,259) = 38;
dt(:,267) = 39;
for i=1:size(dt,1)
if size(q1(q1(:,1)==i,3),1) ~= 0
dt(i,4:6)=q1(q1(:,1)==i,3:5);
end
if size(q2(q2(:,1)==i,3),1) ~= 0
dt(i,8:10)=q2(q2(:,1)==i,3:5);
end
if size(q3(q3(:,1)==i,3),1) ~= 0
dt(i,12:14)=q3(q3(:,1)==i,3:5);
end
if size(q4(q4(:,1)==i,3),1) ~= 0
dt(i,16:18)=q4(q4(:,1)==i,3:5);
end
if size(q5(q5(:,1)==i,3),1) ~= 0
dt(i,20:22)=q5(q5(:,1)==i,3:5);
end
if size(q6(q6(:,1)==i,3),1) ~= 0
dt(i,24:26)=q6(q6(:,1)==i,3:5);
end
if size(q7(q7(:,1)==i,3),1) ~= 0
dt(i,28:30)=q7(q7(:,1)==i,3:5);
end
if size(q8(q8(:,1)==i,3),1) ~= 0
dt(i,32:34)=q8(q8(:,1)==i,3:5);
end
if size(q9(q9(:,1)==i,3),1) ~= 0
dt(i,36:38)=q9(q9(:,1)==i,3:5);
end
if size(q10(q10(:,1)==i,3),1) ~= 0
dt(i,40:42)=q10(q10(:,1)==i,3:5);
end
if size(d1(d1(:,1)==i,3),1) ~= 0
dt(i,44:50)=d1(d1(:,1)==i,3:9);
end
if size(d2(d2(:,1)==i,3),1) ~= 0
dt(i,52:58)=d2(d2(:,1)==i,3:9);
end
if size(d3(d3(:,1)==i,3),1) ~= 0
dt(i,60:66)=d3(d3(:,1)==i,3:9);
end
if size(d4(d4(:,1)==i,3),1) ~= 0
dt(i,68:74)=d4(d4(:,1)==i,3:9);
end
if size(d5(d5(:,1)==i,3),1) ~= 0
dt(i,76:82)=d5(d5(:,1)==i,3:9);
end
if size(d6(d6(:,1)==i,3),1) ~= 0
dt(i,84:90)=d6(d6(:,1)==i,3:9);
end
if size(d7(d7(:,1)==i,3),1) ~= 0
dt(i,92:98)=d7(d7(:,1)==i,3:9);
end
if size(d8(d8(:,1)==i,3),1) ~= 0
dt(i,100:106)=d8(d8(:,1)==i,3:9);
end
if size(d9(d9(:,1)==i,3),1) ~= 0
dt(i,108:114)=d9(d9(:,1)==i,3:9);
end
if size(d10(d10(:,1)==i,3),1) ~= 0
dt(i,116:122)=d10(d10(:,1)==i,3:9);
end
if size(d11(d11(:,1)==i,3),1) ~= 0
dt(i,124:130)=d11(d11(:,1)==i,3:9);
end
if size(d12(d12(:,1)==i,3),1) ~= 0
dt(i,132:138)=d12(d12(:,1)==i,3:9);
end
if size(d13(d13(:,1)==i,3),1) ~= 0
dt(i,140:146)=d13(d13(:,1)==i,3:9);
end
if size(d14(d14(:,1)==i,3),1) ~= 0
dt(i,148:154)=d14(d14(:,1)==i,3:9);
end
if size(d15(d15(:,1)==i,3),1) ~= 0
dt(i,156:162)=d15(d15(:,1)==i,3:9);
end
if size(d16(d16(:,1)==i,3),1) ~= 0
dt(i,164:170)=d16(d16(:,1)==i,3:9);
end
if size(d17(d17(:,1)==i,3),1) ~= 0
dt(i,172:178)=d17(d17(:,1)==i,3:9);
end
if size(d18(d18(:,1)==i,3),1) ~= 0
dt(i,180:186)=d18(d18(:,1)==i,3:9);
end
if size(d19(d19(:,1)==i,3),1) ~= 0
dt(i,188:194)=d19(d19(:,1)==i,3:9);
end
if size(d20(d20(:,1)==i,3),1) ~= 0
dt(i,196:202)=d20(d20(:,1)==i,3:9);
end
if size(d21(d21(:,1)==i,3),1) ~= 0
dt(i,204:210)=d21(d21(:,1)==i,3:9);
end
if size(d22(d22(:,1)==i,3),1) ~= 0
dt(i,212:218)=d22(d22(:,1)==i,3:9);
end
if size(d23(d23(:,1)==i,3),1) ~= 0
dt(i,220:226)=d23(d23(:,1)==i,3:9);
end
if size(d24(d24(:,1)==i,3),1) ~= 0
dt(i,228:234)=d24(d24(:,1)==i,3:9);
end
if size(d25(d25(:,1)==i,3),1) ~= 0
dt(i,236:242)=d25(d25(:,1)==i,3:9);
end
if size(d26(d26(:,1)==i,3),1) ~= 0
dt(i,244:250)=d26(d26(:,1)==i,3:9);
end
if size(d27(d27(:,1)==i,3),1) ~= 0
dt(i,252:258)=d27(d27(:,1)==i,3:9);
end
if size(d28(d28(:,1)==i,3),1) ~= 0
dt(i,260:266)=d28(d28(:,1)==i,3:9);
end
if size(d29(d29(:,1)==i,3),1) ~= 0
dt(i,268:274)=d29(d29(:,1)==i,3:9);
end
end
dt(dt(:,2)==1,:)=[];
dt(dt(:,2)==7,:)=[];
clear q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 i dataAll
clear d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29
dataAll = dt;
dataAll(dataAll(:,1) < 20100104, :) = [];
dataAll(dataAll(:,1) > 20160204, :) = [];
dataAll(:,[83:90 123:130 147:154 171:194]) = [];
for i=46:8:222
dataAll(:, i) = dataAll(:, i) / dataAll(1, i);
end
clear dt i;
%getNew;
%xlswrite('myfile.xls',rez,1,'A1');
%Анализ данных
field = ('GC');
fig = figure;
un = unique(data(:, 4));
%ACF ряда
autocorr(data(:, 16));
str = [field ' Close ACF'];
title(str);
print(str, '-dpng');
%ACF ряда с одинаковым количеством торговых дней до эксперации
for i = 1 : max(data(:, 1))
if size(data(data(:, 1) == i, 16), 1) > 9
cf = autocorr(data(data(:, 1) == i, 16));
if max(abs(cf(2 : end))) > 0.65
autocorr(data(data(:, 1) == i, 16));
str = [field ' Close ACF Col1 n' num2str(i)];
title(str);
print(str, '-dpng');
end
end
end
%ACF ряда с одинаковыми днями недели
for i = 2 : 6
if size(data(data(:, 2) == i, 16), 1) > 9
cf = autocorr(data(data(:, 2) == i, 16));
if max(abs(cf(2 : end))) > 0.65
autocorr(data(data(:, 2) == i, 16));
str = [field ' Close ACF Col2 dow' num2str(i - 1)];
title(str);
print(str, '-dpng');
end
end
end
%ACF ряда с одинаковыми номерами дней недели до эксперации
for i = 2 : 6
for j = 1 : max(data(data(:, 2) == i, 3))
if size(data(data(:, 2) == i & data(:, 3) == j, 16), 1) > 9
cf = autocorr(data(data(:, 2) == i & data(:, 3) == j, 16));
if max(abs(cf(2 : end))) > 0.5
autocorr(data(data(:, 2) == i & data(:, 3) == j, 16));
str = [field ' Close ACF Col3 dow' num2str(i - 1) ' nodow' num2str(j)];
title(str);
print(str, '-dpng');
end
end
end
end
%XCF двух контрактов одного инструмента по дням до эксперации
for i = 1 : size(un, 1) - 1
for j = i + 1 : size(un, 1)
a = data(data(:, 4) == un(i), :);
b = data(data(:, 4) == un(j), :);
if (j > i)
if size(a, 1) ~= size(b, 1)
a(a(:, 1) > min(size(a, 1), size(b, 1)), :) = [];
b(b(:, 1) > min(size(a, 1), size(b, 1)), :) = [];
end
if size(a, 1) > 9
cf = crosscorr(a(:, 16), b(:, 16));
if max(abs(cf(1 : end))) > 0.65
crosscorr(a(:, 16), b(:, 16));
c = strcat(num2str(un(i)), num2str(un(j)));
str = [field ' Close XCF Col1 ' c(1 : 4) '-' c(5 : 6) ' -- ' c(9 : 12) '-' c(13 : 14)];
title(str);
print(str, '-dpng');
end
end
end
end
end
%XCF двух контрактов одного инструмента по дням недели
for i = 1 : size(un, 1) - 1
for j = i + 1 : size(un, 1)
a = data(data(:, 4) == un(i), :);
b = data(data(:, 4) == un(j), :);
if (j > i) && (month(datetime(i, 'ConvertFrom', 'yyyymmdd')) == month(datetime(j, 'ConvertFrom', 'yyyymmdd')))
if size(a, 1) ~= size(b, 1)
a(a(:, 1) > min(size(a, 1), size(b, 1)), :) = [];
b(b(:, 1) > min(size(a, 1), size(b, 1)), :) = [];
end
for k = 2 : 6
if (size(a(a(:, 2) == k, 16), 1) > 9) && (size(b(b(:, 2) == k, 16), 1) > 9)
cf = crosscorr(a(a(:, 2) == k, 16), b(b(:, 2) == k, 16));
if max(abs(cf(1 : end))) > 0.65
crosscorr(a(a(:, 2) == k, 16), b(b(:, 2) == k, 16));
c = strcat(num2str(un(i)), num2str(un(j)));
str = [field ' Close XCF Col2 ' c(1 : 4) '-' c(5 : 6) ' -- ' c(9 : 12) '-' c(13 : 14) ' dow' num2str(k - 1)];
title(str);
print(str, '-dpng');
end
end
end
end
end
end
%XCF контрактов с одинаковыми номерами дней недели до эксперации
for i = 1 : size(un, 1) - 1
for j = i + 1 : size(un, 1)
a = data(data(:, 4) == un(i), :);
b = data(data(:, 4) == un(j), :);
if (j > i) && (month(datetime(i, 'ConvertFrom', 'yyyymmdd')) == month(datetime(j, 'ConvertFrom', 'yyyymmdd')))
if size(a, 1) ~= size(b, 1)
a(a(:, 1) > min(size(a, 1), size(b, 1)), :) = [];
b(b(:, 1) > min(size(a, 1), size(b, 1)), :) = [];
end
for k = 2 : 6
for l = 1 : min(max(a(a(:, 2) == k, 3)), max(b(b(:, 2) == k, 3)))
if (size(a(a(:, 2) == k & a(:, 3) == l, 16), 1) > 9) && (size(b(b(:, 2) == k & b(:, 3) == l, 16), 1) > 9)
cf = crosscorr(a(a(:, 2) == k & a(:, 3) == l, 16), b(b(:, 2) == k & b(:, 3) == l, 16));
if max(abs(cf(1 : end))) > 0.65
crosscorr(a(a(:, 2) == k & a(:, 3) == l, 16), b(b(:, 2) == k & b(:, 3) == l, 16));
str = [field ' Close XCF Col3 ' c(1 : 4) '-' c(5 : 6) ' -- ' c(9 : 12) '-' c(13 : 14) ' dow' num2str(k - 1) ' nodow' num2str(l)];
title(str);
print(str, '-dpng');
end
end
end
end
end
end
end
%Выгрузка данных всех инструментов, на выходе структура dataAll, каждый
%элемент которой - данный по одному инструменту
dataAll = struct;
files = dir;
for file = files'
if isdir(file.name) && file.name(1) ~= '.'
[tname, tdata] = getTicker(file.name);
dataAll.(tname) = tdata;
end
end
clear file files tdata tname
dataAll = orderfields(dataAll);
function output = getDiff5(data)
%GETDIFF5 Summary of this function goes here
% Detailed explanation goes here
d=diff(data(:,5:end));
dd=diff(d(:,1));
d(1,:)=[];
d(:,1)=dd;
data(1:2,:)=[];
data(:,5:end)=d;
output=data;
end
function output = getDiff55(data)
%GETDIFF5 Summary of this function goes here
% Detailed explanation goes here
d=diff(data(:, [5:9 13:17]));
dd=diff(d(:,[1 6]));
d(1,:)=[];
d(:,[1 5])=dd;
data(1:2,:)=[];
data(:,[5:9 13:17])=d;
output=data;
end
Y=diff(d);
LOGL = zeros(4,4);
PQ = zeros(4,4);
for p = 0:3
for q = 1:4
mod = arima(p,0,q);
[fit,~,logL] = estimate(mod,Y,'print',false);
LOGL(p+1,q) = logL;
PQ(p+1,q) = p+q;
end
end
LOGL = reshape(LOGL,16,1);
PQ = reshape(PQ,16,1);
[aic,bic] = aicbic(LOGL,PQ+1,length(Y));
reshape(aic,4,4)
reshape(bic,4,4)
function [output] = getIndex(input)
data = input;
data = [data data(:, 3) - data(:, 4)];
data = [data tsmovavg(data(:, 7), 'e', 5, 1)];
X = [data(2 : end, 5) ./ data(1 : end - 1, 5) data(2 : end, 8) ./ data(1 : end - 1, 8) data(2 : end, 5) ./ data(2 : end, 2)];
data(1, :) = [];
data = [data X];
data(1:4, :) = [];
beg = data(data(:, 1) == 20100104, 5);
output = [data(:,6) data(:,1) data(:,5) / beg data(:,9) data(:,11)];
end
dt=[(yyyymmdd(datetime(2009,1,1):datetime(2016,3,31)))' (weekday(datetime(2009,1,1):datetime(2016,3,31)))'];
q1=load('dax.txt');
q2=load('dow30.txt');
q3=load('ftse100.txt');
q4=load('hangseng.txt');
q5=load('kospi.txt');
q6=load('nasdaq.txt');
q7=load('nikkei225.txt');
q8=load('russell2000.txt');
q9=load('sp500.txt');
q10=load('tadawul.txt');
q1(q1(:,1)>20160331,:)=[];
q2(q2(:,1)>20160331,:)=[];
q3(q3(:,1)>20160331,:)=[];
q4(q4(:,1)>20160331,:)=[];
q5(q5(:,1)>20160331,:)=[];
q6(q6(:,1)>20160331,:)=[];
q7(q7(:,1)>20160331,:)=[];
q8(q8(:,1)>20160331,:)=[];
q9(q9(:,1)>20160331,:)=[];
q10(q10(:,1)>20160331,:)=[];
q1(:,6)=datenum(datetime(q1(:,1),'ConvertFrom','yyyymmdd')) - datenum(2009,1,1) + 1;
q2(:,6)=datenum(datetime(q2(:,1),'ConvertFrom','yyyymmdd')) - datenum(2009,1,1) + 1;
q3(:,6)=datenum(datetime(q3(:,1),'ConvertFrom','yyyymmdd')) - datenum(2009,1,1) + 1;
q4(:,6)=datenum(datetime(q4(:,1),'ConvertFrom','yyyymmdd')) - datenum(2009,1,1) + 1;
q5(:,6)=datenum(datetime(q5(:,1),'ConvertFrom','yyyymmdd')) - datenum(2009,1,1) + 1;
q6(:,6)=datenum(datetime(q6(:,1),'ConvertFrom','yyyymmdd')) - datenum(2009,1,1) + 1;
q7(:,6)=datenum(datetime(q7(:,1),'ConvertFrom','yyyymmdd')) - datenum(2009,1,1) + 1;
q8(:,6)=datenum(datetime(q8(:,1),'ConvertFrom','yyyymmdd')) - datenum(2009,1,1) + 1;
q9(:,6)=datenum(datetime(q9(:,1),'ConvertFrom','yyyymmdd')) - datenum(2009,1,1) + 1;
q10(:,6)=datenum(datetime(q10(:,1),'ConvertFrom','yyyymmdd')) - datenum(2009,1,1) + 1;
q1=getIndex(q1);
q2=getIndex(q2);
q3=getIndex(q3);
q4=getIndex(q4);
q5=getIndex(q5);
q6=getIndex(q6);
q7=getIndex(q7);
q8=getIndex(q8);
q9=getIndex(q9);
q10=getIndex(q10);
net = narxnet(
d1 = [1:5];
d2 = [1:5];
d3 = [1:5];
d4 = [1:5];
d5 = [1:5];
d6 = [1:5];
d7 = [1:5];
d8 = [1:5];
d9 = [1:5];
d10 = [1:5];
d11 = [1:5];
d12 = [1:5];
d13 = [1:5];
d14 = [1:5];
d15 = [1:5];
d16 = [1:5];
d17 = [1:5];
d18 = [1:5];
d19 = [1:5];
d20 = [1:5];
d21 = [1:5];
d22 = [1:5];
d23 = [1:5];
%narx_net = narxnet(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,d18,d19,d20,d21,d22,23,10);
narx_net.divideFcn = '';
narx_net.trainParam.min_grad = 1e-10;
view(narx_net);
%Корреляционный анализ всех инструментов, записывается в Excel
rez=[];
for instr = 43 : 8 : 219
%заполняем данные инструмента
data = dataAll(:, [2 instr:instr + 7]);% день недели и инструмент весь
data = getRemoveNan(data);
data = getDiff5(data); %взяли разности
for obj1 = 5 : 9 % исследуем 5 параметров в инструменте
for obj2 = 5 : 9
un = unique(data(:, 3));
%1ACF ряда
h = crosscorr(data(:, obj2), data(:, obj1));
if max(abs(h))>0.65
h(1 : 20) = [];
h(:, 2) = (abs(h(:, 1) ./ sqrt(1 - h(:, 1) .* h(:, 1))) * sqrt(size(data, 1) - 2)) > tinv(0.975, size(data, 1) - 2);
corrData = h(:, 1) .* h(:, 2);
r = [instr, instr, obj1, obj2, 0, 0, 0, corrData'];
rez = [rez; r];
end
%2ACF ряда с одинаковым днем до ex
for dbe = 1 : 30
s = size(data(data(:, 4) == dbe, 1), 1);
if s > 21
h = crosscorr(data(data(:,4) == dbe, obj2), data(data(:,4) == dbe, obj1));
if max(abs(h))>0.65
h(1:20)=[];
h(:,2) = (abs(h(:,1) ./ sqrt(1 - h(:,1) .* h(:,1))) * sqrt(s - 2)) > tinv(0.975,s - 2);
corrData=h(:,1) .* h(:,2);
r = [instr, instr, obj1, obj2, 1, dbe, 0, corrData'];
rez = [rez; r];
end
end
end
%3ACF ряда с одинаковым днем недели
for dow=2:6
s=size(data(data(:,1) == dow,1),1);
h=crosscorr(data(data(:,1) == dow, obj2), data(data(:,1) == dow, obj1));
if max(abs(h))>0.65
h(1:20)=[];
h(:,2) = (abs(h(:,1) ./ sqrt(1 - h(:,1) .* h(:,1))) * sqrt(s - 2)) > tinv(0.975,s - 2);
corrData=h(:,1) .* h(:,2);
r = [instr, instr, obj1, obj2, 2, dow, 0, corrData'];
rez = [rez; r];
end
end
%4ACF каждого контракта
for cont = 1 : size(un, 1)
s = size(data(data(:, 3) == un(cont), 1),1);
if s > 21
h=crosscorr(data(data(:, 3) == un(cont), obj2), data(data(:, 3) == un(cont), obj1));
if max(abs(h))>0.65
h(1:20)=[];
h(:,2) = (abs(h(:,1) ./ sqrt(1 - h(:,1) .* h(:,1))) * sqrt(s - 2)) > tinv(0.975,s - 2);
...Подобные документы
Выявление закономерностей и свойств, применимых в искусственной нейронной сети. Построение графиков и диаграмм, определяющих степень удаленности между объектами. Моделирование, тестирование и отладка программной модели, использующей клеточный автомат.
дипломная работа [4,1 M], добавлен 25.02.2015Разработка алгоритма и программы для распознавания пола по фотографии с использованием искусственной нейронной сети. Создание алгоритмов: математического, работы с приложением, установки весов, реализации функции активации и обучения нейронной сети.
курсовая работа [1,0 M], добавлен 05.01.2013Математическая модель искусственной нейронной сети. Структура многослойного персептрона. Обучение без учителя, методом соревнования. Правило коррекции по ошибке. Метод Хэбба. Генетический алгоритм. Применение нейронных сетей для синтеза регуляторов.
дипломная работа [1,5 M], добавлен 17.09.2013Описание структурной схемы искусственного нейрона. Характеристика искусственной нейронной сети как математической модели и устройств параллельных вычислений на основе микропроцессоров. Применение нейронной сети для распознавания образов и сжатия данных.
презентация [387,5 K], добавлен 11.12.2015Исследование нечеткой модели управления. Создание нейронной сети, выполняющей различные функции. Исследование генетического алгоритма поиска экстремума целевой функции. Сравнительный анализ нечеткой логики и нейронной сети на примере печи кипящего слоя.
лабораторная работа [2,3 M], добавлен 25.03.2014Математическая модель нейронной сети. Однослойный и многослойный персептрон, рекуррентные сети. Обучение нейронных сетей с учителем и без него. Алгоритм обратного распространения ошибки. Подготовка данных, схема системы сети с динамическим объектом.
дипломная работа [2,6 M], добавлен 23.09.2013Математические модели, построенные по принципу организации и функционирования биологических нейронных сетей, их программные или аппаратные реализации. Разработка нейронной сети типа "многослойный персептрон" для прогнозирования выбора токарного станка.
курсовая работа [549,7 K], добавлен 03.03.2015Прогнозирование валютных курсов с использованием искусственной нейронной сети. Общая характеристика среды программирования Delphi 7. Существующие методы прогнозирования. Характеристика нечетких нейронных сетей. Инструкция по работе с программой.
курсовая работа [2,2 M], добавлен 12.11.2010Определение требований к программному обеспечению. Ознакомление с процессом проектирования интерфейса пользователя. Рассмотрение результатов обзора существующих информационных систем. Обоснование необходимости разработки программного обеспечения.
дипломная работа [1,1 M], добавлен 05.07.2017Изучение основных видов угроз программного обеспечения. Выявление наиболее эффективных средств и методов защиты программного обеспечения. Анализ их достоинств и недостатков. Описания особенностей лицензирования и патентования программного обеспечения.
курсовая работа [67,9 K], добавлен 29.05.2013Изучение и реализация системы, использующей возможности Microsoft Azure для распределенного обучения нейронной сети. Рассмотрение функционирования распределенных вычислений. Выбор задачи для исследования; тестирование данного программного ресурса.
дипломная работа [2,0 M], добавлен 20.07.2015Ознакомление с понятием и особенностями выдачи/приобретения лицензии на право использования программного обеспечения. Рассмотрение классификации лицензий и типов соглашений. Исследование основ деятельности собственника авторских прав в данной сфере.
презентация [118,7 K], добавлен 11.12.2014Схемы взаимодействия между заказчиком и разработчиком программного обеспечения. Качество программного обеспечения и определение основных критериев его оценка на современном этапе, особенности управления на стадиях жизненного цикла, анализ достаточности.
презентация [114,7 K], добавлен 14.08.2013Определение понятия и сущности программного обеспечения. Рассмотрение основ интерпретируемых и компилируемых программ. Особенности несвободных, открытых, свободных, системных, прикладных и инструментальных программ; основные принципы их применения.
реферат [25,6 K], добавлен 06.11.2014Базовые архитектуры компьютеров: последовательная обработка символов по заданной программе и параллельное распознавание образов по обучающим примерам. Искусственные нейронные сети. Прототип для создания нейрона. Поведение искусственной нейронной сети.
контрольная работа [229,5 K], добавлен 28.05.2010Изучение пространственных характеристик АГК и структур НС при обработке ими стохастических сред, подбор алгоритмов. Рекомендаций по использованию разработанных адаптивных алгоритмов с корреляционными методами получения оценок для регрессионных моделей.
дипломная работа [5,1 M], добавлен 06.05.2011Разработка нейронной сети, ее применение в алгоритме выбора оружия ботом в трехмерном шутере от первого лица, тестирование алгоритма и выявление достоинств и недостатков данного подхода. Обучение с подкреплением. Описание проекта в Unreal Engine 4.
контрольная работа [611,0 K], добавлен 30.11.2016Особенности и возможности программного обеспечения, необходимого для построения трехмерной модели (на примере вентиля - клапана). Ознакомление с инструментарием программного обеспечения профессионального трехмерного и двумерного моделирования AutoCAD.
курсовая работа [3,4 M], добавлен 13.12.2020Причины активного использования и области применения искусственной нейронной сети. Определение доминирующего типа мышления, на основе которого можно выбрать предпочтительную профессию. Результаты тестирования персептрона и нейросетевого моделирования.
презентация [559,6 K], добавлен 14.08.2013Исследование линейных динамических моделей в программном пакете Matlab и ознакомление с временными и частотными характеристиками систем автоматического управления. Поиск полюса и нуля передаточной функции с использованием команд pole, zero в Matlab.
лабораторная работа [53,1 K], добавлен 11.03.2012