Friday, September 30, 2011

[Text mining] Индекс настроений фондовых рынков

В прошлом году я уже писал о нашумевшей работе американцев, которые умудрились предсказывать индекс S&P500 по сообщениям в twitter. Это было лишь начало, сейчас в интернете можно найти множество статей посвященных анализу текстовых данных для предсказания котировок на бирже:

"Trading Strategies to Exploit Blog and News Sentiment" (Zhang, Skiena 2010)
"The Predictive Power of Financial Blogs" (Frisbee 2010)
"An analysis of verbs in financial news articles and their impact on stock price" (Schumaker 2010)

Но это все там, за океаном. А что же у нас, в России?

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

Итак, сказано - сделано. Я решил проверить связано ли как-то настроение блогеров comon.ru с движениями на рынке и, самое интересное, могут ли эти данные быть использованы для предсказания движений рынка. Первым делом, было выкачано около 10 тыс. статей от 100 авторов с comon.ru, вместе с датой публикации и именем автора. Потом текст статей был обработан: удалены все элементы HTML-разметки и стоп-слова а у всех оставшихся слов была выделена основа.

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

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

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

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

Далее, после усреднения данных по дням, получился некоторый индекс, назовем его индексом настроений comon.ru. Это число, которое характеризует среднее настроение блогеров comon.ru в этот день. Интересным оказался график изменения индекса настроения:

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

Следующим шагом, я проверил а сколько можно было бы заработать если покупать вечером того дня когда индекс настроений больше нуля и закрывать позицию на следующий день. И аналогично для отрицательных значений индекса настроений. Оказалось, что среднее дневное изменение индекса ММВБ в день, следующий за днем с позитивным настроением составляет: 0.13%. А в дни следующие за днями с негативным настроением -0.34%. Результат мне показался вдохновляющим. И было решено проверить математически гипотезу о том, что индекс настроения комона предсказывает значения ММВБ. Для этого, я воспользовался методом описанным в оригинальной работе, а именно, причинным тестом Грейнджера:

Model 1: MICEX ~ Lags(MICEX, 1:1) + Lags(SIGNAL, 1:1)
Model 2: MICEX ~ Lags(MICEX, 1:1)
  Res.Df Df      F  Pr(>F)  
1    178                    
2    179 -1 2.9539 0.08741 .

P-value теста составило 0.087, что меньше 0.1. Значит наша гипотеза о том что индекс настроений комона предсказывает изменения индекса ММВБ на следующий день верна с вероятностью 90%. Что является неплохим результатом, вполне сравнимым с результатом в оригинальной работе с твиттером.

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

Что использовалось для данной работы?
1. Граббер текстов с comon.ru и предварительная обработка были написан на Java
2. Вся математика, анализ и построение графиков выполнялись на R с использованием библиотек lmtest и rusquant

Какие варианты развития?
1. В отличии от твиттера, количество авторов комона которые пишут регулярно не велико. Можно ввести что-то вроде предсказательного рейтинга автора, тем самым улучшив общий прогноз.
2. Учитывать оценки других пользователей и комментарии к каждой статье.
3. Добавить анализ морфологии русского языка, учитывать время в котором написаны отдельные предложения статьи.



7 comments:

  1. основная проблема как раз в выделении нужных маркеров эмоций
    я периодически развлекаюсь с подобными вещами с использованием PMI-IR вместо заранее заданных списков, но пока не удалось добиться нормальной работы с текстами, где эмоции выражены не слишком сильно
    если интересно, вот тут была старая презентация по теме: http://chetvericov.ru/eksperiment/psixolingvistika/

    ReplyDelete
  2. В общем случае это действительно сложно, но если мы говорим о бирже, то тут довольно много специфичной терминологии и задача упрощается. Я еще обнаружил что довольно просто выделять маркеры через веса в линейной SVM. Надо будет написать об этом как-нибудь.

    ReplyDelete
  3. Определение сантимента путем Text Mining новостей:

    http://forex.kbpauk.ru/showflat.php/Cat/0/Number/346382/an/0/page/0#Post346382

    ReplyDelete
  4. You really make it seem so easy with your
    presentation but I find this matter to be actually something that I
    think I would never understand. It seems too complicated and extremely broad for me.
    I'm looking forward for your next post, I'll try to get the hang of
    it!

    My page - gto120dlaocm402mfos02.com

    ReplyDelete
  5. This wouldn't normally be cited to traditional stoves. Of these instruction will give you a hand across repairing . In the meantime, satisfy a diverse cooking pot now with rainwater, plus add the crazy hocks, dark-colored peppercorns, lots of sea, and simply fresh fruit back to kettle.

    Also visit my web site ... Madge Kabrick

    ReplyDelete
  6. Foodstuff handlers must take safety measure appearing in meals
    and in an meal devices which they make in the process. With each of
    the variations in capability legislations properly pushing to turn into a environment friendly community,
    it's normally spare time activity to having a more energy-efficient replacement foam. Although a single built-in variety probably have a spot sorted, to save the ipad he then is not expertly placed anywhere. The internet alternative to achieve Bosch stove spares makes it easy to search for the needed spares when the time comes in order to replace areas. That is the also benefit to the main Tassimo overheated wine set-up - - it should be extremely fast.

    Feel free to surf to my web-site ... 27 wall oven microwave combo reviews

    ReplyDelete
  7. Want you've made the best food cost-free group was completed. It i on hour tough to notice Doug Stanhope without the need for listening to Benjamin Hicks. However, if the leek is old, heartbeat, more is actually woody. My researched the very heat a couple of times through the entire go over year to ascertain if which maintained true to our functions.

    Review my blog; 2 oven gas ranges

    ReplyDelete