Увидим ли мы еще одну сверхновую, такую ​​как Gamestop?

Увидим ли мы еще одну сверхновую, такую ​​как Gamestop?

Ажиотаж вокруг акций GameStop утих, но крупные мелкие инвесторы никуда не денутся.

Резюме саги о Gamestop: Хедж-фонд с Уолл-стрит сделал большую ставку на то, что крупнейший сетевой розничный продавец видеоигр в Америке находится на грани банкротства, и пользователи из субреддита WallStreetBets ринулись покупать акции и вынудили хедж-фонд закрывают свои позиции, тем самым обходясь фонду в миллиарды долларов и повышая стоимость акций в так называемом сжатии.

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

Анализируем 240 постов в r / wallstreetbets

Мы будем использовать около 200 дискуссионных постов в группе Reddit по ставкам на Уолл-стрит для анализа. Извлеченные сообщения были опубликованы в начале июня 2021 года.

Более 200 сообщений состоят примерно из 70 тысяч слов. После некоторой работы по очистке данных у нас осталось около 40 тысяч слов.

#R programming
library(udpipe)
#read file
text <- read.csv(csvFile, stringsAsFactors = FALSE)
Encoding(text$Text) <- "UTF-8"
#annotate data frame
text_udpipe <- udpipe_annotate(udmodel, x = text$Text)
text_udpipe <- as.data.frame(text_udpipe)
#remove stop words
tidy_text <- text_udpipe %>%
  anti_join(all_stop_words, by = c("token" = "word"))

Использование машинного обучения для понимания сообщений Reddit

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

Мы сгруппировали сообщения Wall Street Bets по 5 категориям, используя пакет udpipe в R, а затем построили их в облака слов.

Результаты тематического моделирования

  • Тема 1 и облака из 5 слов относятся к "gw" (также известному как GW Pharmaceutical). Можно предположить, что редакторы Reddit считают, что цена акций GW слишком высока.
  • Тема 3 и облака из 4 слов связаны с «Ричмондом». Кто вообще такой Ричмонд?
#Define the identifier to build a topic model
tidy_text$topic_level_id <- unique_identifier(tidy_text, fields = c("doc_id", "paragraph_id", "sentence_id"))
## Get a data.frame with 1 row per id/lemma
dtf <- subset(tidy_text, upos %in% c("NOUN", "VERB","ADJ","ADV"))
dtf <- document_term_frequencies(dtf, document = "topic_level_id", term = "lemma")
# Create a document/term/matrix for building a topic model
dtm <- document_term_matrix(x = dtf)
dtm_clean <- dtm_remove_lowfreq(dtm, minfreq = 2)
head(dtm_colsums(dtm_clean))
# Keep of these nouns the top 50 based on mean TF-IDF
dtm_clean <- dtm_remove_tfidf(dtm_clean, top = 50)
library(topicmodels)
m <- LDA(dtm_clean, k = 5, method = "Gibbs", 
         control = list(nstart = 5, burnin = 2000, best = TRUE, seed = 1:5))

Самые употребляемые слова в r / wallstreetbets

Далее мы рассмотрим наиболее часто используемые слова в группе Reddit Wall Street Bets.

В нашем случае мы будем использовать 2-слова в качестве токена для частотного анализа. Обычно токен из 2 слов дает нам лучшее представление о неструктурированном тексте по сравнению с токеном из 1 слова.

Выводы из наиболее употребляемых слов

  • Такие термины, как «краткосрочное сжатие» и «краткосрочный», могут указывать на частые сделки между розничными инвесторами.
  • «Рыночная капитализация», «цена акций», «апрель» - вот некоторые из популярных индикаторов акций в группе Reddit.
  • Акции роста более популярны, чем акции стоимости в группе r / wallstreetbets
bigrams_separated <- text_bigram %>%
  separate(bigram, c("word1", "word2"), sep = " ")
bigrams_filtered <- bigrams_separated %>%
  filter(!word1 %in% all_stop_words$word) %>%
  filter(!word2 %in% all_stop_words$word)
# new bigram counts
bigram_counts <- bigrams_filtered %>% 
  count(word1, word2, sort = TRUE)
#combine bigrams together
bigrams_united <- bigrams_filtered %>%
  unite(bigram, word1, word2, sep = " ")
# build bar chart
bigrams_united %>%
  count(bigram, sort = TRUE) %>%
  mutate(bigram = reorder(bigram, n)) %>%
  #  filter(n > 20) %>%
  top_n(15) %>%
  ggplot(aes(x = reorder(bigram, n), y = n)) +
  geom_col(fill = "#FE5907") +
  xlab(NULL) +
  coord_flip()

.Word сетевой граф

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

На сетевом графике ниже показаны слова, которые появлялись более 5 раз в сообщениях Reddit. Чем выше частота, тем темнее цвет стрелок.

Несмотря на то, что в сетевом графе много пар слов, одна тема выделялась среди других. Если вы посмотрите на фигуры белого цвета, вы увидите много слов, связанных с covid и вакциной в группе Reddit.

Выводы из сетевого графа:

  • Розничные инвесторы заинтересованы в препарате Форалумаб, вводимом через нос.
  • В 2019 финансовом году розничные инвесторы нацелились на компании, которые могли производить вакцины.
  • Одобрение FDA может быть одним из индикаторов, на которые обращают внимание розничные инвесторы при инвестировании в акции, связанные с вакцинами.
#Build network graph
ggraph(bigram_graph, layout = "fr") +
  #edge_alpha aesthetic  to make links transparent based on how common or rare the bigram is
  geom_edge_link(aes(edge_alpha = n), show.legend = FALSE,
                 #end_cap tells when arrow should stop
                 arrow = a, end_cap = circle(.07, 'inches'),edge_colour = "white") +
  geom_node_point(color = "black", size = 2) +
  geom_node_text(aes(label = name), vjust = 1, hjust = 1,  repel = TRUE, col = "#FE5907", family = "VCR OSD Mono", size = 5)

Вывод

  • Краткосрочное инвестирование или краткосрочное сжатие - вот некоторые из часто упоминаемых стилей инвестирования среди розничных инвесторов.
  • Розничных инвесторов больше интересуют акции роста, а не акции стоимости.
  • Розничные инвесторы также ищут возможности инвестировать в компании, которые могут производить вакцины / антитела, которые могут остановить мировую пандемию на данный момент.