چگونه می توانیم با استفاده از توییتر ، حرکات قیمت سهام را پیش بینی کنیم
توجه داشته باشید از ویرایشگران Data Science: در حالی که ما به نویسندگان مستقل اجازه می دهیم مقالات را مطابق با قوانین و دستورالعمل های خود منتشر کنند ، ما سهم هر نویسنده را تأیید نمی کنیم. شما نباید بدون اینکه به دنبال مشاوره حرفه ای باشید ، به آثار نویسنده اعتماد کنید. برای جزئیات بیشتر به اصطلاحات خواننده ما مراجعه کنید.
آیا بازارها منعکس کننده رفتار منطقی یا غیر منطقی بودن انسان هستند؟اثرات روانشناسی جمعی ممکن است تنها عاملی نباشد که بازارها را هدایت می کند ، اما بدون شک قابل توجه است [1].
این کیفیت جذاب چیزی است که می توانیم برای پیش بینی حرکت بازار با سطح دقت شگفت آور اندازه گیری و استفاده کنیم.
با توجه به اطلاعات زمان واقعی در مورد سیستم عامل های گسترده رسانه های اجتماعی مانند توییتر ، ما تمام داده هایی را که می توانیم برای ایجاد این پیش بینی ها نیاز داشته باشیم ، داریم.
اما پس از آن این سؤال مطرح می شود ، چگونه رایانه ما می تواند این داده متن بدون ساختار را بفهمد؟
این جایی است که تجزیه و تحلیل احساسات وارد می شود. تجزیه و تحلیل احساسات یک شاخه مخصوصاً جالب از پردازش زبان طبیعی (NLP) است که برای ارزیابی زبان مورد استفاده در یک متن متن استفاده می شود.
از طریق تجزیه و تحلیل احساسات ، می توانیم هزاران توییت در مورد یک شرکت بگیریم و قضاوت کنیم که آیا آنها به طور کلی مثبت هستند یا منفی (احساسات) در زمان واقعی! ما پوشش خواهیم داد:
اگر برای تجزیه و تحلیل احساسات در فلر اینجا هستید - من آن را به طور دقیق تر در این فیلم پوشش می دهم:
دسترسی به توسعه دهنده توییتر
اولین چیزی که ما باید برای دسترسی به توسعه دهنده توییتر درخواست کنیم. ما می توانیم این کار را با حرکت به dev. twitter.com و کلیک روی دکمه Apply (گوشه بالا سمت راست) انجام دهیم.
در صفحه بعد ، ما روی دکمه "درخواست یک حساب توسعه دهنده" کلیک می کنیم. اکنون ، توییتر چند سوال از ما می پرسد. به بهترین س questions الات شما پاسخ دهید.
در صفحه "چگونه از داده های توییتر یا توییتر استفاده می کنید؟" ، همانطور که در بالا نشان داده شده ، بله یا خیر را انتخاب کنید. من چند پاسخ مثال را در اینجا قرار داده ام-اینها فقط برای این مورد استفاده خاص معتبر هستند ، بنابراین لطفاً آنها را در صورت لزوم با نیازهای خود تنظیم کنید.
ما پاسخ های خود را ارسال می کنیم و مراحل توافق نامه نهایی و تأیید را تکمیل می کنیم. پس از اتمام ، باید خودمان را در صفحه ثبت نام برنامه پیدا کنیم.
تنظیم برنامه
اول ، ما به برنامه خود اسم می دهیم. این باید منحصر به فرد باشد ، بنابراین خلاق باشید. ما کلیدهای API خود را دریافت خواهیم کرد. این تنها زمانی است که ما آنها را خواهیم دید ، بنابراین آنها را در جایی ایمن (و مخفی) نگه دارید!
API توییتر
اکنون API خود را تنظیم کرده ایم. ما می توانیم داده های توییت را شروع کنیم. ما برای این مقاله روی تسلا تمرکز خواهیم کرد.
در جستجوی توییت
ما از کتابخانه درخواست ها برای تعامل با API توییتر استفاده خواهیم کرد. ما می توانیم جدیدترین توییت ها را با توجه به پرس و جو از طریق/توییت/جستجو/نقطه پایانی اخیر جستجو کنیم.
همراه با آدرس API توییتر ، این به ما می دهد:
ما قبل از ارسال درخواست خود به دو بخش دیگر نیاز داریم ، (1) مجوز و (2) یک پرس و جو جستجو.
نشانه حامل که قبلاً به ما داده شده برای مجوز استفاده می شود - که ما از کلید مجوز در عنوان درخواست خود عبور می کنیم.
سرانجام ، ما می توانیم با افزودن؟ q = به آدرس API خود ، پرس و جو جستجوی خود را مشخص کنیم. جمع کردن همه اینها در جستجوی Telsa به ما می دهد:
بهبود درخواست ما
درخواست ما دقیقاً همان چیزی را که می خواهیم بر نمی گردد. اگر نگاهی به اولین ورودی درخواست برگشتی خود بیندازیم ، خیلی سریع خواهیم دید که ما تمام توییت ها را برنمی گردانیم - و حتی ممکن است آنها مرتبط نباشند:
خوشبختانه ، ما به راحتی می توانیم با اضافه کردن پارامتر دیگر tweet_mode = به درخواست ما ، کوتاه شدن صدای جیر جیر را برطرف کنیم. که به نظر می رسد:
با اضافه کردن پارامترهای بیشتر و بیشتر ، رشته آدرس API می تواند به سرعت پر ازدحام و کثیف شود. برای جلوگیری از این امر ، می توانیم آنها را به یک فرهنگ لغت منتقل کنیم - که سپس به استدلال پارامترهای درخواست GET خود تغذیه می کنیم.
ما می توانیم درخواست خود را بیشتر بهبود بخشیم. اول ، ما می توانیم به توییتر بگوییم که کدام توییت زبان را برای بازگشت (در غیر این صورت همه چیز را می گیریم) با Lang = EN برای انگلیسی. اضافه کردن تعداد = 100 حداکثر تعداد توییت ها را برای بازگشت به 100 افزایش می دهد.
ساخت مجموعه داده ما
پس از تنظیم درخواست API ، می توانیم آن را شروع کنیم تا مجموعه داده های خود را جمع کنیم.
هر صدای جیر جیر توسط API فقط شامل سه زمینه است که می خواهیم آنها را حفظ کنیم. اینها شناسه توییت "ID_STR" ، تاریخ آفرینش "Create_AT" و متن "Full_Text" هستند. ما این موارد را در تابعی به نام get_data استخراج می کنیم.
پاسخ ما فقط یک توییت نیست - حاوی بسیاری است. بنابراین ما باید از طریق هر یک از این موارد تکرار کنیم و اطلاعات مورد نیاز خود را استخراج کنیم.
ما ابتدا پاسخ API را با استفاده از . json () به یک فرهنگ لغت پایتون تبدیل می کنیم - سپس به لیست توییت ها از طریق ["وضعیت"] دسترسی پیدا می کنیم. سپس داده های توییت را با GET_DATA استخراج می کنیم و به DataFrame DF خود اضافه می کنیم. دادن ما:
تجزیه و تحلیل احساسات
ما از یک مدل تجزیه و تحلیل احساسات از قبل آموزش دیده از کتابخانه فلر استفاده خواهیم کرد. تا آنجا که مدل های از پیش آموزش دیده می شوند ، این یکی از قدرتمندترین است.
این مدل متن را به نشانه های سطح شخصیت تقسیم می کند و از مدل Distilbert برای پیش بینی استفاده می کند.
مزیت کار در سطح شخصیت (بر خلاف سطح کلمه) این است که کلماتی که شبکه قبلاً ندیده است هنوز هم می توانند احساساتی را اختصاص دهند.
Distilbert یک نسخه مقطر از مدل قدرتمند ترانسفورماتور BERT است-که به معنای آن است-این یک مدل "کوچک" (فقط 66 میلیون پارامتر) است و هنوز هم فوق العاده قدرتمند است [2].
استعداد
برای استفاده از مدل FLAIR ، ابتدا باید کتابخانه را با PIP Install Flair وارد کنیم. پس از نصب ، مدل را مانند آن وارد و اولیه می کنیم:
اگر در نصب FLAIR مشکلی دارید ، احتمالاً به دلیل نصب Pytorch/Tensorflow شما است. برای Pytorch ، برای به دست آوردن دستور نصب صحی ح-و برای TensorFlow Type PIP نصب TensorFlow (اضافه کرد ن-U در پایان برای به روزرسانی) به اینجا بروید.
تمام کاری که اکنون باید انجام دهیم این است که متن خود را با عبور از آن از طریق flair. data. sentence () و فراخوانی روش . predict در مدل ما استفاده کنیم. با هم قرار دادن آنها ، ما دریافت می کنیم:
با فراخوانی روش پیش بینی ، امتیاز احساسات را به داده های ذخیره شده در جمله اضافه می کنیم. ما می توانیم با پیش بینی احساسات برای یک عبارت ساده ببینیم:
و بیایید چیزی منفی را امتحان کنیم:
این در دو مورد آسان تست ما کار می کند ، اما ما در مورد توییت های واقعی نمی دانیم - که شامل شخصیت های خاص و زبان پیچیده تر است.
تجزیه و تحلیل توییت های تسلا
بیشتر توییت های ما بسیار کثیف هستند. تمیز کردن داده های متن اساسی است ، اگرچه ما فقط در این مثال حداقل لخت را انجام خواهیم داد.
با استفاده از عبارات منظم (Regex) از طریق ماژول Re ، می توانیم به سرعت فضای سفید ، آدرس های وب و کاربران توییتر را به سرعت شناسایی کنیم. اگر این عبارات برای شما مانند سلسله مراتب به نظر برسند - من تمام این روش ها را در مقاله Regex در اینجا پوشانده ام.
اکنون ما توییت تمیز (ISH) خود را داریم - می توانیم با تبدیل آن به یک شیء جمله ، آن را نشانه گذاری کنیم و سپس احساسات را پیش بینی کنیم:
سرانجام ، پیش بینی های خود را استخراج می کنیم و آنها را به Tweets DataFrame اضافه می کنیم. ما می توانیم با تایپ کردن جمله. labels [0] به شیء برچسب (پیش بینی) دسترسی پیدا کنیم. با این کار ، ما نمره را برای به دست آوردن نمره اعتماد به نفس/احتمال و ارزش پیش بینی مثبت/منفی فرا می خوانیم:
ما می توانیم احتمال و احساسات را به لیست هایی که پس از آن با توییت های DataFrame ادغام می شویم ، اضافه کنیم. قرار دادن همه این قسمت ها به ما می دهد:
نگاهی گذرا به سر DataFrame ما نتایج بسیار چشمگیر را نشان می دهد. توییت دوم یک احساسات مثبت اختصاص داده شده است ، اما با اعتماد به نفس کم (0. 51) - به عنوان یک انسان ، من همچنین مطمئن نیستم که آیا این یک توییت مثبت یا منفی است.
توییت شماره سه ، "تسلا *بالا" ، نشان می دهد که با استفاده از تعبیه های سطح شخصیت می تواند چقدر مؤثر باشد.
با تعبیه Word ، غیرممکن است که مدل ما "*نه" را مطابق با کلمه "نه" تشخیص دهد. مدل سطح شخصیت ما سفر نمی کند و توییت را به طور منفی طبقه بندی می کند.
عملکرد تاریخی
به نظر می رسد که مدل فلر ما به خوبی کار می کند ، اما آیا احساسات کلی توییت ها با حرکات قیمت واقعی سهام ارتباط دارد؟
با ترسیم احساسات Tesla توییت در کنار عملکرد قیمت سهام تاریخی تسلا ، می توانیم زنده ماندن بالقوه رویکرد خود را ارزیابی کنیم.
توییت Tsla
اول ، ما به داده های بیشتری نیاز داریم. توییتر هفت روز گذشته داده های مربوط به API رایگان خود را ارائه می دهد ، بنابراین ما در ویندوز 60 دقیقه ای برمی گردیم و استخراج می کنیم~100 توییت از درون هر یک از این پنجره ها.
برای انجام این کار ، ما باید از V2 API توییتر استفاده کنیم - که کمی متفاوت است - اما تقریباً در عملکرد V1 یکسان است. کد کامل ، از جمله تنظیم API ، در زیر آورده شده است.
ما به ترتیب با استفاده از پارامترهای start_time و end_time ، به API ما از DateTime می گوییم ، هر دو به یک رشته DateTime در قالب YYYY-MM-DDTHH نیاز دارند: MM: SSZ.
ما یک تابع برای تفریق 60 دقیقه از رشته DateTime خود می نویسیم - و آن را در حلقه ای ادغام می کنیم که تا هفت روز به گذشته برسیم.
در داخل این حلقه ، ما درخواست خود را برای توییت ها در پنجره 60 دقیقه ای ارسال می کنیم-و سپس اطلاعات مورد نظر خود را استخراج می کنیم و به DataFrame خود اضافه می کنیم.
نتیجه یک فریم data frame است~توییت های 17K حاوی کلمه "تسلا" از هفت روز گذشته.
API V2 به ما اجازه می دهد تا یک زبان خاص را در پرس و جو جستجوی خود بگنجانیم ، بنابراین هنگام افزودن (Lang: EN) برای پرس و جو ، ما هر چیزی را که En (انگلیسی) نیست فیلتر می کنیم - ما را ترک می کنیم~توییت های 12K.
تیک تیک Tsla
در مرحله بعد ، ما باید با استفاده از کتابخانه YFInance ، داده های سهام خود را از Finance Yahoo استخراج کنیم - PIP در صورت لزوم yfinance را نصب کنید.
ما یک شیء تیک را برای TSLA تنظیم می کنیم ، سپس از روش تاریخ برای استخراج داده های سهام بین تاریخ های حداقل و حداکثر موجود در داده های توییت خود ، با فاصله شصت دقیقه استفاده می کنیم.
با چند تحول ، می توانیم میانگین احساسات روزانه توییت تسلا را بالاتر از قیمت سهام برای دوشنبه-جمعه روکش کنیم:
قیمت سهام TSLA دوشنبه تا جمعه. این احساسات (که در ابتدا از 1- تا 1+ امتیاز می گرفتند، برای تشدید احساسات +ve ی ا-ve ضرب شده است و بر میانگین ارزش قیمت سهام در هفته متمرکز شده است.
واضح است که احساسات توییتر و قیمت سهام در این هفته با هم مرتبط هستند. البته، یک بازه زمانی بزرگتر، اطمینان بیشتری را ایجاد می کند - اما این یک نتیجه مثبت اولیه را برای بررسی بیشتر به ما می دهد.
همه اینها برای این راهنمای مقدماتی تحلیل احساسات برای پیش بینی سهام در پایتون است. ما اصول اولیه را پوشش داده ایم:
- API توییتر
- تحلیل احساسات با Flair
- یاهو فاینانس
- مقایسه احساسات توییت ما با داده های سهام واقعی
چیزهای بیشتری برای یادگیری پیاده سازی یک مدل پیش بینی موثر بر اساس احساسات وجود دارد، اما این یک شروع عالی است.
امیدوارم از مقاله لذت برده باشید! من همچنین برنامه نویسی/علوم داده های بیشتری را در YouTube در اینجا پوشش می دهم. اگر سوال یا ایده ای دارید، از طریق توییتر یا در کامنت زیر با من در میان بگذارید.
با تشکر برای خواندن!
منابع
[1] روانشناسی بر بازارها تأثیر می گذارد (2013)، مؤسسه فناوری کالیفرنیا
استراتژی برای تجارت گزینه های...
ما را در سایت استراتژی برای تجارت گزینه های دنبال می کنید
برچسب :
نویسنده : فریبا کامران
بازدید : 42
تاريخ : دوشنبه
22 خرداد
1402 ساعت: 17:18