Читайте также:
|
|
Для извлечения информации о трендах в ценах используется приложение FactEventAnalyzer.exe, разработанное на C#. Текст программы доступен в Приложении 1.
Программа работает с набором данных о ценах на ценные бумаги и о корпоративных событиях (таких как выплата дивидендов, изменения рейтинга компаний, собраниях акционеров) которые хранятся в базе данных MS SQL Server.
Примеры доступных данных продемонстрированы ниже.
Информация о ценных бумагах:
SecId | Ticker | Issuer | SecType | InvType | PriceCurrency | Region | IssuerCountry | Exchange | IndustrySector |
IBM | International Business Machines Corp | EQTY | EQTY | USD | American | USA | XNYS | IT Consulting & Other Services | |
ADVS | Advent Software Inc | EQTY | EQTY | USD | American | USA | XNGS | Application Software | |
MSFT US Equity | Microsoft Corp | EQTY | EQTY | USD | American | USA | XNGS | Systems Software | |
WIL SP | Wilmar International Ltd | EQTY | EQTY | SGD | Asian | SGP | XSES | Agricultural Products | |
ADM | Archer-Daniels-Midland Co | EQTY | EQTY | USD | American | USA | XNYS | Agricultural Products | |
AGU | Agrium Inc | EQTY | EQTY | USD | American | CAN | XNYS | Fertilizers & Agricultural Chemicals | |
BG | Bunge Ltd | EQTY | EQTY | USD | American | BMU | XNYS | Agricultural Products | |
GGR SP | Golden Agri-Resources Ltd | EQTY | EQTY | SGD | Asian | MUS | XSES | Agricultural Products | |
INGR | Ingredion Inc | EQTY | EQTY | USD | American | USA | XNYS | Agricultural Products | |
VT | Viterra Inc | EQTY | EQTY | CAD | American | CAN | XTSE | Agricultural Products |
1. SecId. Внутренний уникальный идентификатор бумаги
2. Ticker. Идентификатор, под которым бумага торгуется на бирже
3. Issuer. Компания, выпустившая данную бумагу
4. SecType. Код типа ценной бумаги
5. InvType. Код подтипа ценной бумаги
6. PriceCurrency. Валюта, в которой торгуется данная бумага
7. Region. Регион, с которым ассоциирована данная бумага
8. IssuerCountry. Страна регистрации компании, выпустившей данную бумагу
9. Exchange. Биржа, на которой торгуется данная бумага
10. IndustrySector. Индустрия, в которой работает компания, выпустившая данную бумагу
Информация о ценах:
Date | DateTick | SecId | Price | AskPrice | BidPrice |
1/24/12 0:00 | |||||
2/20/12 0:00 | 26.5 | ||||
3/5/12 0:00 | 0.028375 | 0.022 | 0.0265 | ||
3/12/12 0:00 | 37.14 | 37.12 | 37.23 | ||
3/20/12 0:00 | 1.49 | 1.45 | 1.45 | ||
4/9/12 0:00 | |||||
4/20/12 0:00 | 0.195 | 0.013 | 0.12 | ||
5/2/12 0:00 | |||||
5/14/12 0:00 | 3.4 | 2.8 | 2.8 | ||
5/21/12 0:00 | 0.0024 | 0.0005 | 0.00175 |
1. Date. Информация о дате, на которую была актуальна указанная цена
2. DateTick. Информация о да, на которую была актуальна цена, представленная в виде числа дней с 1-го января 1900 года
3. SecId. Внутренний уникальный идентификатор бумаги, для которой актуальна данная цена
4. Price. Значения цены закрытия
5. Ask. Значение цены
6. Bid. Значение цены
Информация о корпоративных событиях:
SecId | UniqueCoraxId | EffectiveDate | EventType | EventMajorType |
2/4/14 0:00 | Merger | Standard | ||
4/3/14 0:00 | Stock Split | Standard | ||
2/4/14 0:00 | Merger | Standard | ||
12/12/13 0:00 | Cash Dividend | Standard | ||
3/13/14 0:00 | Cash Dividend | Standard | ||
2/27/14 0:00 | Merger | Standard | ||
3/27/14 0:00 | Cash Dividend | Standard | ||
12/23/13 0:00 | Divestiture | Standard | ||
3/30/14 0:00 | Merger | Standard | ||
3/30/14 0:00 | Divestiture | Standard |
1. SecId. Внутренний уникальный идентификатор бумаги, для которой актуально данное событие
2. UniqueCoraxId. Уникальный идентификатор данного события.
3. EffectiveDate. Дата события.
4. EventType. Подтип события.
5. EventMajorType. Глобальный тип события.
Приложение вызывается из командной строки, после чего выполняет следующий процесс:
1) Считываются стартовые параметры из xml-файла Config.xml (доступен в Приложении 2).
2) Запускается процесс runFactMiner, которые извлекает информацию о трендах из исходных данных с помощью предоставленных параметров. Данная задача выполняется следующим образом:
1. Для каждой ценной бумаги удовлетворяющей переданным параметрам программа перебирает каждую имеющуюся запись о ее цене в хронологическом порядке.
2. Если цена в текущей записи выше чем в предыдущей – предполагаем что цена растет, если она меньше – падает. При этом изменение должно превзойти заранее заданный параметр чувствительности changeThreshold (например 0.2 процента изменения) в противном случае считаем что цена неизменна.
3. В том случае если изменение цены превышает некоторый наперед заданный уровень (например, более 3%) то считаем что произошел «всплеск» (spike) и создаем об этом запись. Значение этого уровня хранится в параметре spikeThreshold.
4. Если тренд изменяется на очередной записи о цене – предполагаем что тренд мог быть сломлен.
5. В том случае если мы предполагаем слом тренда программа проверяет некоторое количество следующих записей о ценах (количество также задается параметром dateThreshold). Если при сравнении текущей записи данных и той, на которой произошел слом тренда, видим, что слом тренда подтвержден – создаем запись о начале тренда и его окончании. Если слом тренда не подтвержден – продолжаем перебор
3) По окончанию такого перебора в базе данных FactEventAnalysisDB, с помощью табличных представления PriceFactsHypothesis извлекается информация о трендах на ценные бумаги а с помощью представления SpikeFactsHypothesis – о «всплесках» и сохраняются в локальный файл формата csv.
Диаграмма классов системы приведена ниже:
Рис. 2. Диаграмма классов приложения FactEventAnalyzer
Краткое описание классов надо ниже:
1) CoraxesSource, CoraxFactsTable, PricesSource, SecuritiesSource, PriceFactsTable, SpikeFactsTable. Классы, обеспечивающий доступ к источникам данных – одноименным таблицам в базе данных FactEventAnalysisDB.
2) FactEventAnalysisDBDataContext. Служебный класс, обеспечивающий коммуникацию приложения с базой данных FactEventAnalysisDB.
3) FactMiner. Класс, выполняющий функции извлечения информации о трендах с помощью переданных ему параметров, и запись информации о трендах в файлы.
4) Logger. Класс, выполняющий ведение журнала работы приложения.
5) PriceFactsHypothesi. Класс, обеспечивающий вызов табличного представления PriceFactsHypothesis в базе FactEventAnalysisDB.
6) SpikeFactHypothesi. Класс, обеспечивающий вызов табличного представления SpikeFactsHypothesis в базе FactEventAnalysisDB.
7) Program. Главный класс, объединяющий все остальные классы и вызывающий методы других классов по ходу выполнения программы. Также обеспечивает чтение параметров программы из файла параметров.
8) Settings. Служебный класс, хранящий информацию о приложении.
9) Parameters. Структура, обеспечивающая хранение параметров программы, считанных из файла параметров.
10)
В процессе работы система базу данных FactEventAnalysisDB, ее диаграмма приведена ниже:
Рис. 3. Диаграмма базы данных FactEventAnalysisDB.
Также используется две хранимых процедуры из базы FactEventAnalysisDB, код которых доступен в Приложении 3. Их описание приведено ниже:
1) usp_ClearFactsTables. Очищает таблицы CoraxFactsTable и SpikeFactsTable, от старых данных, которые могли остаться от предыдущих выполнений программы
2) usp_populateCoraxFactsTable. Осуществляет предобработку данных в таблице CoraxesSource и переносит обработанные данные в таблицу CoraxFactsTable.
Помимо этого используются два табличных представления, описание которых дано ниже:
1) PriceFactsHypothesis. Представление извлекающее все пары «корпоративное событие – изменение в тренде цены» из таблиц PriceFactsTable и CoraxFactsTable на каждую дату.
2) SpikeFactsHypothesis. Представление извлекающее все пары «корпоративное событие – всплеск в цене» из таблиц SpikeFactsTable и CoraxFactsTable на каждую дату.
Код данных представлений также доступен в Приложении 3.
Задача извлечения трендов не является главной темой работы, потому упомянута кратко.
По результатам работы система производит два файла – SpikeFacts.csv и PriceFacts.csv, которые используются в дальнейшем. Данные файлы представляют собой список пар «Характеристика события» - «Характеристика изменения» на каждую дату.
Ниже представлена инструкция по использованию системы предобработки.
Дата добавления: 2015-11-16; просмотров: 80 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Стохастический Градиентный Спуск | | | Инструкция пользователя |