"Анализ и компьютерное моделирование поведения игроков финансовых рынков путём выявления и группировки торговых стратегий"




Скачати 431.84 Kb.
Сторінка5/6
Дата конвертації25.04.2016
Розмір431.84 Kb.
1   2   3   4   5   6

II.III. Описание компьютерной реализации модели


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

В качестве языка программирования для реализации данной модели может быть выбран любой объектно-ориентированный язык. С равным успехом можно было выбрать C++, C#, JAVA и PHP. В данном проекте был выбран язык программирования JAVA. Выбор языка был обусловлен хорошим знакомством автора с данным языком программирования. Преимуществ JAVA перед другими объектно-ориентированными языками для реализации данной модели нет. Кросс-платформенность в данном случае не была необходима, поскольку проводить эксперименты можно было на одной аппаратной платформе. Распространение полученного программного кода не планировалось.

В качестве среды разработки был выбран Eclipse Indigo. Аргументом в пользу данной среды может служить его легковесность относительно NetBeans. Ввиду несложности разрабатываемого приложения необходимости в использовании тяжёлых сред не было. Среда Eclipse является свободно-распространяемым программным обеспечением, что можно назвать преимуществом для исследовательского проекта

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

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

Схема 5

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

Для полноценного отражения составленной модели в программном коде была разработана программа, представленная диаграммой классов на схеме 6. Классы Reader и Writer отвечают за чтение и запись истории сделок, соответственно. Класс PerformedDeals хранит и обновляет историю совершённых сделок. Класс OpenBook выполняет функции биржи (Openbook в англоязычной литературе соответствует термину "Биржевой стакан", то есть место встречи заявок на покупку и продажу). Класс OpenBook выполняет операцию клиринга. Класс Order отвечает за работу с заявками. В нём реализованы методы формирования, удаления, изменения заявок, в зависимости от их типа. OrderType - структура относимая к перечислимому типу данных (enum), хранит допустимые типы заявок. DealType также относится к перечислимому типу данных и хранит допустимые типы сделок. Ещё один enum Action хранит допустимые действия, которые советует стратегия агентам. К таким действиям относятся Покупка, Продажа и Удержание. Абстрактный класс Strategy выполняет функцию интерфейса для подключения стратегий. В этом классе реализован ряд методов, общих для всех стратегий. Абстрактный класс Indicator выполняет функцию интерфейса для подключения индикаторов. Методы, общие для всех индикаторов, например, расчёт следующего значения, реализованы в рамках абстрактного класса. Класс Agent реализует объект Агент, работает с заявками, включает в себя стратегию, управляет своими активами. Класс Assets предназначен для работы с активами агентов, как с денежными средствами, так и с акциями. Он отвечает за блокировку и разблокировку активов, за снятие и зачисление активов, проверяет, достаточно ли активов на счетах агентов для совершения сделок.

Схема 6

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

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

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

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

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


1   2   3   4   5   6


База даних захищена авторським правом ©mediku.com.ua 2016
звернутися до адміністрації

    Головна сторінка