
- •Разработка моделей, алгоритмов и программных средств для повышения качества прогнозов биржевых показателей
- •Анализ существующих средств прогнозирования экономических показателей бирж
- •Модели и алгоритмы оценки стоимости ценных бумаг и управления инвестиционными активами
- •Роль рынка ценных бумаг в финансовой системе страны
- •Фундаментальный анализ
- •Показатели, используемые для фундаментального анализа акций
- •Технический анализ
- •Теории функционирования рынка ценных бумаг
- •Теория эффективного рынка
- •Теория случайных блужданий
- •Теория хаоса
- •Теория адаптивного рынка
- •Методы и модели для прогнозирования экономических показателей
- •Математическо-статистические методы
- •Поведенческие модели
- •Мультиагентные системы
- •Разработки, использующие мультиагентный подход для прогнозирования экономических показателей
- •Модель «SantaFe» и её вариации
- •Модель «Genoa Artificial Stock Market»
- •Библиотека «MoTor» и система «Имитрейд»
- •Платформа «ArTificial Open Market»
- •Комплекс «Altreva adaptive modeler»
- •Требования к функциональности проектируемого программного комплекса
- •Разработка архитектуры виртуального рынка ценных бумаг и системы поддержки принятия решений
- •Математическая модель виртуального рынка
- •Виртуальный мир и виртуальные агенты
- •Классификаторы
- •Новостная среда
- •Роли и стратегии
- •Активы агентов
- •Компании
- •Трейдеры
- •Стратегии трейдеров
- •Ордера и транзакции
- •Система обработки ордеров
- •Движение денежных средств при совершении транзакций
- •Расчёт статистических характеристик рынка ценных бумаг
- •Математическая формулировка задачи исследования
- •Архитектура программного комплекса
- •Выбор платформы для мультиагентной системы
- •Взаимосвязь приложения, пакетов и компонентов
- •Виртуальный мир
- •Стандартные классы системы
- •Планы и стратегии
- •Запросы и транзакции
- •Механизм формирования цен
- •Архитектура системы поддержки принятия решений
- •Общая схема архитектуры
- •Подключаемые модули
- •Алгоритм работы
- •Анализ работы системы
- •Описание работы программного комплекса
- •Функциональность
- •Редакторы
- •Организация экспериментов
- •Оценка степени соответствия виртуального рынка реальному
- •Соблюдение пропорций
- •Активность трейдеров на бирже ммвб в 2007-2010 годах
- •Наличие трендов и фигур
- •Сходство статистических характеристик изменения цен и объёма торгов
- •2. Критерий Колмогорова
- •3. Критерий Романовского
- •4. Критерий Ястремского
- •Критерии согласия двух теоретических распределений с распределением приращения максимальной цены за день для акции компании «Юкос» за период с 25.05.2005 по 19.09.2006
- •Критерии согласия двух теоретических распределений с распределением данных реального рынка по результатам 20 независимых экспериментов
- •Критерий согласия распределения Коши и объёма торгов за первые 116 дней торгов на виртуальном рынке в сценарии «FundamentalTradersExperiment.Fmp»
- •Критерий согласия распределения Коши и максимальной дневной цены по первой акции на виртуальном рынке в сценарии «FundamentalTradersExperiment.Fmp» за 165 дней торгов
- •Критерии согласия распределения Коши с распределением данных на виртуальном рынке по результатам 20 независимых экспериментов
- •Фрактальность рыночных процессов
- •Расчёт показателя Хёрста для различных временных рядов
- •Реакция рынка на действия отдельных агентов
- •Эксперименты, проведенные над виртуальным рынком
- •Зависимость размера спрэда от склонности к риску трейдеров
- •Влияние фундаментальных трейдеров на динамику котировок акций
- •Влияние новостного фона на котировки ценных бумаг при различном составе участников рынка
- •Практическое применение программного комплекса в качестве системы поддержки принятия решений
- •Математические критерии оценки качества прогнозов
- •Анализ работы системы поддержки принятия решений
- •Результаты сравнения краткосрочных прогнозов экспертов и системы поддержки принятия решений «fimas»
- •Результаты сравнения среднесрочных прогнозов экспертов и системы поддержки принятия решений «fimas»
- •Технико-экономическое обоснование
- •Преимущества и недостатки программного комплекса, выявленные в процессе эксплуатации
- •Другие перспективы практического применения
- •Перспективы для дальнейших исследований и разработок
- •Заключение
- •Литература
- •Приложения
- •Акт о внедрении результатов диссертационного исследования в ооо «Таулинк»
- •Акт о внедрении результатов диссертационного исследования в тк «Фотон»
- •Краткая информация о проекте «fimas»
- •Подробная схема связи компонентов и пакетов в системе
- •Алгоритм работы ролей трейдера и брокера
- •Алгоритм обработки текущих ордеров фундаментальным трейдером
- •Критерии согласия двух теоретических распределений (Гауса, Коши) с распределением приращения максимальной цены за день для акции компании «Юкос» за период с 25.05.2005 по 19.09.2006
- •Сравнение распределений Коши с распределением объёма торгов по первой акции на виртуальном рынке в сценарии «FundamentalTradersExperiment.Fmp» за 116 дней торгов
- •Критерии согласия распределения Коши с распределением объёма торгов по первой акции на виртуальном рынке в сценарии «FundamentalTradersExperiment.Fmp» за 116 дней торгов
- •Сравнение распределений Коши с распределением максимальной дневной цены по первой акции на виртуальном рынке в сценарии «FundamentalTradersExperiment.Fmp» за 165 дней торгов
- •Критерии согласия распределения Коши с распределением максимальной дневной цены по первой акции на виртуальном рынке в сценарии «FundamentalTradersExperiment.Fmp» за 165 дней торгов
- •Статистические данные по биржам
- •Структура трейдеров в модели fimas и на реальных биржах
- •Новости и спрэд акций в сценарии «NewsGenerator.Fmp» при преобладании новостных трейдеров
Стандартные классы системы
В стандартном мире (модуль StandardWorld.pas) выделяют следующие роли (Рис. 2.17):
Стандартная роль (TFMStandardParticipantRole) – абстрактный класс, который служит основой для других, более сложных ролей. Он дает возможность использовать планы, стратегии, а также следит за периодичностью работы объекта через специальный класс Рабочие часы (TFMSWorkingHours).
Трейдер (TFMSTraderRole) – класс стандартного рыночного трейдера. Трейдер совершает сделки на рынке через брокера, руководствуясь текущей стратегией принятия решений. Алгоритм главного цикла работы трейдера представлен в приложении Приложение 15([TFMSTraderRole]: procedure Step() ).
Брокер (TFMSBrokerRole) – класс стандартного брокера. Брокер является связующим звеном между рынком и трейдером. Он получает запросы от трейдеров, обрабатывает их и либо выполняет сам, либо перенаправляет их рынку. Алгоритм главного цикла работы брокера представлен в приложении Приложение 15([TFMSBrokerRole]: procedure Step() ).
Рис. 2.17. UML диаграмма взаимосвязи стандартных ролей в модуле FMSStandardRoles
Компания (TFMCompanyRole) – класс стандартной компании. Компания ведёт экономическую деятельность, нанимает сотрудников, выпускает акции на рынок и выплачивает дивиденды владельцам акций. Компания хранит информацию о своём экономическом благосостоянии, ведёт бухучет, книгу доходов и расходов и т.п. Алгоритм главного цикла работы компании представлен в приложении Приложение 14.
Рынок, биржа (TFMSMarketRole) – класс стандартной биржи. Биржа получает запросы от рынка и находит совпадения между запросами на покупку и продажу акций. Для каждой пары совпадающих запросов она производит транзакцию. Блок-схема алгоритма работы биржи представлена на рисунке Рис. 2.18. На этой схеме важную роль играет блок нахождения совпадений между ордерами. Приведу сокращённую версию этого алгоритма (Листинг 2.1):
Рис. 2.18. Блок-схема алгоритма работы класса биржи TFMSMarketRole.Step()
Листинг 2.1. Алгоритм нахождения совпадений между ордерами.
procedure TFMSShareTypeAccount.FindBuySellMatches(); begin // Заполняем списки ордеров FSortedBuyRequests и FSortedSellRequests // реальными данными и сортируем записи в них по цене. FSortedBuyRequests.Assign(FBuyRequests); FSortedSellRequests.Assign(FSellRequests); FSortedBuyRequests.SortByPrice; FSortedSellRequests.SortByPrice;
// Пока хотя бы один список не пуст выполняем данный цикл. while (FSortedBuyRequests.Count <> 0) and (FSortedSellRequests.Count <> 0) do begin if FSortedBuyRequests[0].Price < FSortedSellRequests[0].Price then begin // Проверяем, не просрочен ли ордер. Если да, то закрываем его и // отправляем обратно с соответствующей пометкой. CkeckIfTransactionRequestIsValid(FSortedBuyRequests[0], trtBuyShare);
// Удаляем ордер из списка, так как для него точно // не найдётся совпадения. FSortedBuyRequests.Delete(0); end else begin // Совпадение найдено. Совершаем транзакцию. GetMarket.CommitTransaction(FSortedBuyRequests[0], FSortedSellRequests[0]);
// В большинстве случаев ордер исполняется только частично, так как // трейдеры заказывают различное количество акций для покупки и // продажи. Проблем это не вызывает, просто частично выполненные // ордера остаются в списке, а полностью выполненные ордера удаляются // из него. if FSortedBuyRequests[0].Status = trsSucceded then FSortedBuyRequests.Delete(0); if FSortedSellRequests[0].Status = trsSucceded then FSortedSellRequests.Delete(0); end; end;
// Проверяем, не просрочены ли оставшиеся ордера. Если да, то // закрываем их и отправляем обратно с соответствующей пометкой. if FSortedSellRequests.Count <> 0 then for I := 0 to FSortedSellRequests.Count - 1 do CkeckIfTransactionRequestIsValid(FSortedSellRequests[I], trtSellShare);
if FSortedBuyRequests.Count <> 0 then for I := 0 to FSortedBuyRequests.Count - 1 do CkeckIfTransactionRequestIsValid(FSortedBuyRequests[I], trtBuyShare);
// Обновляем статистические данные по биду и аску. UpdateBidAskSpread; end; |
Более подробно взаимосвязь стандартных ролей с другими классами представлена в приложении Приложение 7.
В разрабатываемом программном комплексе «FIMAS» роль задаёт только последовательность принятия решений экономическим субъектом. Непосредственно алгоритм принятия решений по каждому неоднозначному вопросу определяетсястратегией принятия решений.
Например, для роли трейдера были разработаны алгоритмы следующих стратегий:
стандартная стратегия трейдера;
стратегия маркет-мейкера;
стратегия трейдера-новичка;
стратегия фундаментального трейдера;
стратегия крупного инвестора;
стратегия новостного трейдера;
стратегия инсайдера;
стратегия трендового трейдера;
стратегия сглаживающего трейдера;
стратегия скальпера.
Участник рынка использует стратегию для имитации процесса мышления, у него есть возможность в реальном режиме времени оценивать эффективность применяемых им стратегий и выбирать ту, которая ему наиболее подходит в данной ситуации.
Стратегия (TFMSStrategy) – абстрактный класс стратегии, который служит основой для других, более сложных стратегий. Участник рынка использует стратегию для имитации процесса мышления. Таким образом, все алгоритмы участника рынка разбиваются на типичные операции характерные для каждого класса участника, и на операции, подконтрольные данному субъекту. Естественно, что для каждой роли трейдера, брокера, компании и рынка свой набор стратегий. Стратегия также имеет отдельную процедуру обработки сообщений от связанных с ней активных планов (DoProcessActiveLinkedPlan).
Понятие стратегии принятия решений является новым для моделей подобного класса. Ранее каждый агент был привязан только к одному алгоритму принятия решений, и часто в качестве такого алгоритма использовался алгоритм «безрассудного трейдера» (zero intelligence trader).
Также в данном модуле присутствуют другие важные классы, необходимые для работы системы:
План (TFMSPlan) – абстрактный класс плана, который служит основой для других, более сложных планов. Участники рынка используют планы для заданий, которые нужно выполнить в будущем при наступлении определённых условий. План обычно связывают со стратегией.
Ордер, запрос на транзакцию (TFMSShareTransactionRequest) – класс, который используют брокеры и трейдеры, чтобы выразить своё намерение купить или продать акции. В нем обязательно должны указываться название акции, операция, количество и желательно давать ссылку на стратегию, согласно которой был отправлен этот ордер. Ордер имеет определённые срок жизни. Если он не исполняется в течение этого срока, то он возвращается отравителю с пометкой о том, что он не был исполнен. Также ордер может быть исполнен частично, это нормальное явление. Более подробно различные типы ордеров рассмотрены в приложении Приложение 6.
Транзакция (TFMSShareTransaction) – процесс смены владельца акции. Рынок производит транзакцию, когда находит запросы на покупку и продажу одной и той же акции, которые совпадают по цене. Цена, по которой произойдет транзакция, может быть лучше той, что указана в ордере, если находится второй запрос, для которого эта новая цена будет тоже лучше, чем запрашиваемая. В этом случае итоговая цена совершения транзакции является средней между ценами двух ордеров.