CoderCastrov logo
CoderCastrov
Анализ тональности

Как Twitter влияет на цену Bitcoin

Как Twitter влияет на цену Bitcoin
просмотров
7 мин чтение
#Анализ тональности
Table Of Content

Может ли настроение твита влиять на криптовалютный рынок?

Как сторонник Bitcoin с 2017 года, я поверил в это настроение или "гип" и никогда не отпустил его. Как я уверен, многие из вас задаются вопросом, почему я не продал его в то время, это потому, что я верю, что Bitcoin будет двигать будущую денежную систему и заставит изменить текущую. Однако на данный момент все же возникает вопрос, что движет текущую цену Bitcoin?

Давайте сначала рассмотрим краткую предысторию того, как я пришел к этому предположению анализа корреляции между твитами и Bitcoin. Я начал торговать Bitcoin вместе с другими криптовалютами после эпического роста в 2017 году до колоссального пожара, который мы пережили вскоре после этого. Почему, спросите вы? Потому что меня двигала жадность и жажда вечного богатства. Э-хм, после дневной и краткосрочной торговли почти год, которая включала изучение различных индикаторов, таких как относительная сила индекса, MACD, осцилляторы и т. д., я понял, что я плохой трейдер. К тому моменту я уже вложился в Bitcoin и знал, что это долгосрочная игра для меня. В конечном итоге я принял другую стратегию, усреднение стоимости в долларах. Я бы рекомендовал вам загуглить это, если вы не знакомы с этим термином, так как это может быть одним из лучших финансовых терминов, которые вы узнаете. Суть в том, что я покупал Bitcoin немного каждый месяц и независимо от резких колебаний, идеально мои инвестиции должны оказаться в плюсе в долгосрочной перспективе. В конце концов, однако, я начал думать и, наконец, научно, пришел к следующему выводу:

Цена Bitcoin определяется настроением людей


Во время моего курса по науке о данных я размышлял о том, как объединить обработку естественного языка (NLP) и мою любовь к Bitcoin. Ага! В Twitter!

**Вопрос, который стоит перед нами: Может ли настроение из твитов повлиять на цену Bitcoin. **Пожалуйста, имейте в виду, что я мог выбрать любую форму электронного общения, такую как сообщения Telegram и WhatsApp, посты в Facebook и т. д., но я выбрал Twitter.

Следующий шаг - разработка плана:

Это был довольно простой и прямолинейный план. Итак, приступим к работе!


Twitter имеет API под названием Tweepy…

…с помощью которого вы можете получить доступ к их твитам. Сначала мне нужно было подать заявку на учетную запись разработчика. Я пошел на Twitter, создал учетную запись разработчика и мне одобрили ее в течение 24 часов, вуаля! Это может занять больше времени в зависимости от ситуации. С учетной записью разработчика у меня были нужные ключи:

consumer_key = os.environ.get(‘CONSUMER_KEY’)consumer_secret = os.environ.get(‘CONSUMER_SECRET’)access_token = os.environ.get(‘ACCESS_TOKEN’)access_token_secret = os.environ.get(‘ACCESS_SECRET’)

Однако есть ограничение на количество твитов, которые можно получить за один раз. Это было узким местом в моем процессе, но к счастью мне был представлен SNScrape. Мне просто нужно было вызвать SNScrape с заданными параметрами, как показано ниже:

!snscrape twitter-search “#Bitcoin since:2020–11–01 until: 2020–11–02” > btc_tweets_daily.txt

[1] J. Dinco, Загрузка твитов с помощью идентификаторов твитов через SNScrape и Tweepy (2020), https://medium.com/@jcldinco/downloading-historical-tweets-using-tweet-ids-via-snscrape-and-tweepy-5f4ecbf19032

Я указал SNScrape искать в Twitter ссылки на твиты с хэштегом "Bitcoin" с конца октября 2020 года и записать их в текстовый файл. Все, что я сделал с помощью SNScrape до этого момента, это извлек ссылки на твиты, как уже упоминалось.

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

chunks = (total_count — 1) // 50 + 1for i in range(chunks):        batch = ids[i*50:(i+1)*50]        result = fetch_tw(batch)

Таким образом, Tweepy парсит 50 идентификаторов за раз, и он не блокирует вас, и вы получите все необходимые твиты. Извините, Twitter, я обещаю, что это полезно для общего блага, но не так ли говорят все?

Теперь, когда я передал идентификаторы твитов через Tweepy, у меня есть более 15 000 твитов за октябрь 2020 года. Затем я продолжил делать то же самое для конца марта 2020 года, чтобы иметь набор твитов для сравнения.

Теперь проведем предварительную обработку!

Со всеми извлеченными мной твитами, одно из первых правил, которое вы узнаете о парсинге, заключается в том, что он может быть очень, очень грязным. Поэтому сначала нам нужно очистить твиты. Мы должны избавиться от URL-адресов, упоминаний, хэштегов, привести все к нижнему регистру, удалить пробелы и стоп-слова и т.д. В этом исследовании я избавился от смайликов и эмодзи, которые, я знаю, могут сильно влиять на настроение, но из-за ограничения времени мне нужно было работать с некоторой скоростью. Я использовал комбинацию библиотеки Python, называемой Tweet-Preprocessing, Gensim и Regex ниже:

def preprocess_tweet(row):    
    text = row['tweet']    
    text = p.clean(text) 
    # очистка от хэштегов и эмодзи    
    text = re.sub(r'[^\w]', ' ', text) # удаляет все символы    
    text = text.lower() # приводит все слова к нижнему регистру    
    text = re.sub(r'\d+', '', text) # удаляет числа    
    text = re.sub('RT[\s]+', '', text) # удаляет RT    
    text = re.sub('https?:\/\/\S+', '', text) # удаляет гиперссылки    
    text = remove_stopwords(text) # удаляет стоп-слова    
    text = re.sub(r'\W*\b\w{1,2}\b', '', text) 
    # удаляет слова длиной от 1 до 2 символов    
    return text

df_tweets['tweet'] = df_tweets.apply(preprocess_tweet, axis=1)
df_tweets['tokens'] = df_tweets['tweet'].apply(word_tokenize)

[2] S. Srijith, Efficient Tweet Preprocessing (2020), https://www.kaggle.com/sreejiths0/efficient-tweet-preprocessing

Теперь, когда мои твиты чисты, перейдем к анализу настроений!

Для анализа настроений...

...я использовал TextBlob. Он определяет два показателя: Полярность (позитивность/негативность твита) и Субъективность (субъективность/объективность твита). В данном случае я сосредоточился только на показателе Полярности, так как мне было интересно узнать, как пользователи Twitter относятся к Биткоину в данное время.

[3] Рандерсон, Анализ настроений в Twitter (2020), https://medium.com/better-programming/twitter-sentiment-analysis-15d8892c0082

Теперь, когда у меня есть показатели, мне нужно было определить, что они означают. Поэтому я создал новый столбец с заданными параметрами.

И вот результаты...

Ага! Показатель полярности составляет 0.214 в конце октября, когда цена резко выросла, в сравнении с показателем полярности 0.0734 в конце марта, когда цена была значительно ниже. Показатель в октябре был почти в 3 раза выше, чем в марте! Теперь нам нужно посмотреть на фактические цены в эти периоды.

К концу марта 2020 года цена Биткоина резко упала до уровня около $5,500

К концу октября 2020 года цена резко выросла до уровня около $15,000

Я даже провел анализ тематики с помощью скрытой семантической аналитики (LSA), неотрицательной матричной факторизации (NMF), pyLDAvis и Corex, чтобы узнать, о чем большинство твитов говорили в заданный период времени. Для марта 2020 года см. ниже:

Там буквально есть тема, которая обсуждает продажу Биткоина, что соответствует падению его цены и панической продаже всеми.

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

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

В заключение...

...настроение людей или их восприятие Биткоина определенно коррелирует с его ценой. Однако стоит помнить, что это не единственный фактор. Например, PayPal объявил 21 октября 2020 года, что позволит своим пользователям покупать/продавать Биткоин на своей платформе, что, безусловно, заставило многих людей броситься к его дверям и начать покупать.

PayPal запускает новую услугу, позволяющую пользователям покупать, держать и продавать криптовалюту

Обновление от 12/11/20: Мы рады объявить, что все подходящие аккаунты PayPal в США теперь могут покупать, держать и...

newsroom.paypal-corp.com

Затем, когда цена упала в марте, это могло быть связано с комбинацией многих пользователей, которые были ликвидированы на сайте криптовалютной маржинальной торговли Bitmex, и с тем, что группа "китов" Биткоина (людей с большим количеством Биткоина) продала достаточно своего Биткоина, чтобы повлиять на рынок (да, такое бывает).

Вот что вызвало "крайнее" падение цены биткоина

Биткоин и криптовалютные рынки были потрясены на прошлой неделе, когда цена биткоина временно упала до уровня ниже $4000 за...

www.forbes.com

Каково бы ни было влияние на цену биткоина, одно можно сказать наверняка: настроение людей по отношению к любой валюте, будь то доллар США или даже биткоин, имеет значение. В зависимости от настроения это может привести к доверию или его отсутствию. Поэтому, если вы решите инвестировать, делайте это осторожно, но всегда. Как говорил Варрен Баффет...

В заключение...

...пожалуйста, не забудьте ознакомиться с моим приложением. Оно немного отличается от моего исследования, так как вместо скрапинга твитов я использовал NewsAPI для сбора статей за предыдущий месяц и определения тональности на основе них. Это изменение направления было наиболее эффективным для приложения, так как скрапинг более 30 000 твитов занял бы очень много времени и, вероятно, вызвал бы у пользователей потерю интереса. Посмотрите на него ниже!

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

Пожалуйста, ознакомьтесь с моими другими работами...

...на моем веб-сайте, репозитории Github и LinkedIn, чтобы увидеть все мои проекты. Дайте мне знать, над чем мне следует работать дальше!

RidwanAlam.com

ridwan102 — Обзор

Погружение в мир программной инженерии для продолжения продвижения человеческого инновационного кода в Арктическом хранилище…

github.com

Ridwan Alam — Data Scientist — Metis | LinkedIn

Основные навыки: Python, моделирование регрессии, классификация, обучение без учителя, тематическое моделирование, анализ настроений…

www.linkedin.co