تجزیه و تحلیل احساسات در امور مالی امری عادی شده است. در بسیاری از موارد ، این امر ناکارآمد شده است زیرا بسیاری از بازیکنان بازار آن را درک می کنند و این تکنیک را یکپارچه کرده اند.
گفته می شود ، دقیقاً مانند یادگیری ماشین یا تجزیه و تحلیل آماری اساسی ، تجزیه و تحلیل احساسات فقط ابزاری است. اینگونه است که ما از آن استفاده می کنیم که اثربخشی آن را تعیین می کند.
در اینجا مراحل کلی برای یادگیری تجزیه و تحلیل احساسات برای امور مالی آورده شده است:
- درک کنید تجزیه و تحلیل احساسات چیست
- درک کنید که چگونه می توان از آن در امور مالی استفاده کرد
- جمع آوری داده ها و پردازش متن را بیاموزید
- یاد بگیرید که تجزیه و تحلیل احساسات را اجرا کنید
- بیاموزید که چگونه از خروجی تجزیه و تحلیل برای امور مالی استفاده کنید
فهرست مطالب
بیایید ابتدا بفهمیم که چرا ما برای تأمین مالی یا به طور خاص تر تجارت نیاز به تجزیه و تحلیل احساسات داریم.
در مرحله بعد ، ما پروژه ای را نشان خواهیم داد که از پایتون برای استخراج و تجزیه و تحلیل عناوین مقاله برای پیش بینی قیمت سهام تسلا استفاده می کند.
تجزیه و تحلیل احساسات چیست؟
تعریف رسمی (از ویکی پدیا):
تجزیه و تحلیل احساسات (همچنین به عنوان معدن یا احساسات AI نیز شناخته می شود) به استفاده از پردازش زبان طبیعی ، تجزیه و تحلیل متن ، زبان شناسی محاسباتی و بیومتریک برای شناسایی ، استخراج ، کمیت و مطالعه حالات عاطفی و اطلاعات ذهنی اشاره دارد.
به زبان انگلیسی ساده:
ما از رایانه ها برای استخراج معانی در پشت متون ، تصاویر و سایر داده ها استفاده می کنیم.
چرا ما به تجزیه و تحلیل احساسات نیاز داریم؟
چرا انسان نمی تواند متن ها را بخواند؟چرا برای انجام این کار برای ما به یک دستگاه نیاز داریم؟
دلایل استفاده از تجزیه و تحلیل احساسات:
- ماشین آلات می توانند خیلی سریعتر (شاید یک میلیون بار سریعتر) از انسان بخوانند
- ماشین آلات می توانند به زبانهای زیادی بخوانند
- ماشین آلات می توانند معنی را از متن به روشی استاندارد بدست آورند (انسان ذهنی است)
- ماشین آلات می توانند بینش از متون را به روش مناسب برای پردازش بیشتر ذخیره کنند
مطمئناً در مورد تجزیه و تحلیل احساسات ، موارد زیر وجود دارد. دستگاه ها قادر به به طور دقیق معنی از متون نیستند (اما بهتر می شوند). زبان عامیانه ، علامت گذاری ، معنای متنی ، طعنه هنوز هم مشکلات ایجاد می کند.
تجزیه و تحلیل احساسات برای امور مالی چیست؟
تجزیه و تحلیل احساسات مالی برای استخراج بینش از اخبار ، رسانه های اجتماعی ، گزارش های مالی و داده های جایگزین برای سرمایه گذاری ، تجارت ، مدیریت ریسک ، عملیات در موسسات مالی و اساساً هر چیزی که مربوط به امور مالی باشد ، استفاده می شود.
ما در این مقاله به تجارت و سرمایه گذاری خواهیم پرداخت.
تجزیه و تحلیل احساسات برای تجارت چگونه استفاده می شود؟
در اینجا چند روش وجود دارد:
- یک مقاله خبری یا توییت سریع بخوانید و یک تجارت را فوراً آتش بزنید
- تعداد زیادی گزارش مالی و بینش های خروجی را بخوانید
- با تجزیه و تحلیل رسانه های اجتماعی ، انجمن های وب ، اخبار و گزارش های تحلیلگران ، بینش را از جمعیت جمع کنید
یک مقاله خبری یا توییت سریع بخوانید و یک تجارت را فوراً آتش بزنید
بیایید بگوییم که رهبر کشور A تصمیم گرفت با دیگری از رنگ آبی معامله کند.
در بهترین حالت سناریوی ، یک انسان ممکن است 2 ثانیه طول بکشد تا آن خبر را بخواند (اگر او یا تیمش بیدار است) و 3 ثانیه دیگر برای آتش سوزی تجارت مناسب (اگر سریع است و در حال حاضر در میز تجارت خود است).
یک دستگاه برای خواندن جدید و آتش سوزی تجارت ، کمتر از 0. 1 ثانیه طول می کشد. به علاوه ، دستگاه نمی خوابد و می تواند اخبار را نه تنها از کشور A ، بلکه همه کشورهای اطراف آن نظارت کند.
تعداد زیادی گزارش مالی و بینش های خروجی را بخوانید
یک دستگاه می تواند 1000 گزارش مالی سالانه 10-K (به هر زبانی) را در زمانی که برای خواندن 10 صفحه اول یک گزارش خوانده اید ، بخواند.
به گفته این ، ماشین ها در به دست آوردن بینش از چنین داده های بزرگ ساختار یافته متن عالی نیستند.
واریانس زیادی در خروجی وجود دارد. این دستگاه ممکن است به طور متوسط وقتی بینش از 1000 سهام را ترکیب می کنید ، به طور متوسط آن را بدست آورد ، اما برای یک سهام فردی بیشتر اوقات اشتباه می کند.
هر بینش می تواند واریانس بزرگی داشته باشد (یعنی ممکن است برخی از زمان ها علامت را از دست بدهند)
بنابراین ، ارزش در اینجا ممکن است به دست آوردن بینش برای یک سهام نباشد. این است که بینش هزاران سهام را بدست آورید ، که به روشی آماری در همان نمونه کارها معامله می شوند.
ما هنگام ترکیب بسیاری از بینش سهام ، پیش بینی متوسط خواهیم کرد.
واریانس در هر بینش سهام هنگامی که آن را با هزاران سهام دیگر ترکیب کنیم ، متعادل می شود. از این رو ، ما پیش بینی متوسطی را برای سبد سهام صدها یا هزاران سهام دریافت خواهیم کرد.
این شبیه به ایده در قضیه محدودیت مرکزی است.
هنگامی که پیش بینی متوسط و ارقام انحراف استاندارد خود را بدست آوریم ، می توانیم آن را به یک الگوریتم اندازه وارد کنیم تا تعیین کنیم که چقدر باید برای هر سهام تجارت کنیم و چگونه می توانیم سرمایه را برای نمونه کارها اختصاص دهیم تا حداکثر نسبت پاداش به خطر را به حداکثر برساند. اما این یک داستان برای یک روز دیگر است.
اما ، توجه داشته باشید که اگر تجزیه و تحلیل احساسات شما از گزارش های مالی به حدی بد باشد که میانگین بینش شما نادرست باشد ، به هر حال سودآور نخواهید بود.
با تجزیه و تحلیل رسانه های اجتماعی ، انجمن های وب ، اخبار و گزارش های تحلیلگران ، بینش را از جمعیت جمع کنید
این لمس کننده استتجزیه و تحلیل احساسات از پست های رسانه های اجتماعی از چند سال پیش به پایان رسید. اثربخشی این تجزیه و تحلیل قابل بحث است.
گفته می شود ، ما می توانیم با تکمیل آنها با تجزیه و تحلیل دیگر ، یا با استفاده از متغیرهایی که نمی توانیم کنترل کنیم ، اثربخشی این بینش ها را افزایش دهیم.
به عنوان مثال ، اگر ما به فکر سرمایه گذاری در Slack هستیم اما نگران این هستیم که تیم های مایکروسافت منسوخ شوند.
ما می توانیم به انجمن های فنی برویم و مبلغ و احساسات نظرات موجود در مورد Slack در مقابل تیم های مایکروسافت را بررسی کنیم.
هنگامی که ما یک جفت را با استفاده از همان منبع اطلاعاتی انجام می دهیم ، نتایج به طور کلی دقیق تر هستند زیرا بیشتر متغیرهای ناخواسته از آن دور می شوند.
از طرف دیگر ، اگر ما به تازگی نظرات انجمن را در مورد Slack گرفته ایم و سعی می کنیم نمره ای از مثبت یا منفی بودن آن را تعیین کنیم ، نتایج ذهنی خواهد بود.
این شامل متغیرهایی مانند ، صحت کتابخانه تجزیه و تحلیل احساسات ، روش در پردازش متن ، نویز و داده های با کیفیت پایین و غیره خواهد بود.
تیم ها به Slack می رسند!- اعتبار: Google Trends
راه تنبل این است که ترافیک جستجو را برای تیم های Slack vs در Google Trends بررسی کنید.
اکنون که این تئوری را پوشش داده ایم ، بیایید دستانمان را کثیف کنیم!
" سلام! اگر می خواهید یاد بگیرید که چگونه یک تجارت الگوریتمی زنده را اجرا کنید: راهنمای API Trading Alpaca-یک راهنمای گام به گام ، این مقاله را پوشش نمی دهد ، این راهنما را بررسی کنید.
چگونه قیمت سهام را با اخبار و عناوین مقاله پیش بینی کنیم؟
در اینجا مراحل اجرای پروژه تجزیه و تحلیل احساسات ما آورده شده است:
- عناوین مقاله و تاریخ را جمع کنید
- واردات و تمیز کردن داده ها (پردازش متن)
- تجزیه و تحلیل احساسات را اجرا کنید و یک شاخص نمره ایجاد کنید
- شاخص نمره عقب مانده در برابر قیمت ها
این مرور کلی است. البته اثربخشی تحلیل ما در جزئیات ظریف این روند نهفته است.
MEGA Project: پیش بینی قیمت سهام تسلا با جستجوی عناوین مقاله آلفا با پایتون
ما بررسی خواهیم کرد که آیا به دنبال عناوین آلفا برای حرکات قیمت سهام تسلا است.
این کار با استفاده از فرآیند 4 مرحله فوق با پایتون انجام می شود.
ما یک سطح تجزیه و تحلیل بسیار اساسی را برای ساده نگه داشتن کارها انجام خواهیم داد.
1. عناوین مقاله را جمع کنید
بیایید یک بسته خراش وب به نام Beautifulso را بارگیری کنیم ... فقط شوخی کنید!
این یک مقاله خراش وب نیست و من نمی خواهم آن را نفخ کنم. ما عناوین را با دست می ریزیم!
در اینجا مراحل جمع آوری عناوین وجود دارد:
- به جستجوی TSLA بروید و به دنبال عناوین بیشتر باشید
- صفحه را روی اکسل کپی و چسباند
- داده های ناخواسته را حذف کنید
مرحله 1: به جستجوی alpha.com بروید ، TSLA را جستجو کنید و برای عناوین بیشتر حرکت کنید
به SeekingAlpha.com بروید و TSLA را جستجو کنید (نماد تیک تسلا در نوار جستجو در بالای صفحه.
صفحه ای مانند این را مشاهده خواهید کرد. آنچه ما می خواهیم عنوان زیر بخش تجزیه و تحلیل است.
قبل از کپی کردن آن ، برای بارگیری عناوین بیشتر به پایین بروید.
در تجزیه و تحلیل من ، من تا اوایل سال 2018 ظاهر شدم.
مرحله 2: صفحه را روی اکسل کپی و چسباند
بعد ، ctrl-a صفحه. بله شما آن را درست خواندید. ما به مدرسه قدیمی می رویم.
اکسل خود را باز کنید ، سپس Ctrl-C. شما باید چیزی شبیه به این را ببینید
مرحله 3: داده های ناخواسته را حذف کنید
تمام ردیف های ناخواسته را حذف کنید. ما می خواهیم عناوین "تجزیه و تحلیل" را حفظ کنیم (نه عناوین "اخبار") و تاریخ های مربوطه.
تمام ردیف های بالای عنوان اول را حذف کنید.
ردیف اول شما باید اولین عنوان "تجزیه و تحلیل" باشد. تصاویر تصویر کوچک را نادیده بگیرید ، آنها بعداً وقتی پرونده را به عنوان CSV ذخیره می کنیم ، بعداً از بین می روند.
تمام ردیف ها را زیر تاریخ آخرین عنوان حذف کنید. به عبارت دیگر ، تمام ردیف ها را با استفاده از متن "اخبار" به صورت جسورانه حذف کنید.
برای یافتن آن ردیف می توانید "اخبار" را جستجو کرده و "کل محتوای سلول را مطابقت دهید" بررسی کنید.
اکنون ، آن پرونده را به عنوان CSV ذخیره کنید. این کار تمام گرافیک های کوچک را از بین می برد.
2. واردات و تمیز کردن داده ها (پردازش متن)
برای این کار از نوت بوک Python و Jupyter استفاده خواهیم کرد. پایتون یک زبان برنامه نویسی است و نوت بوک Jupyter "نرم افزاری" است که ما آن را کد می کنیم. اصطلاح فنی IDE (محیط توسعه یکپارچه) است.
شما می توانید از IDE های دیگر استفاده کنید ، اما اگر تازه وارد این کار هستید ، می توانید از نوت بوک Jupyter استفاده کنید.
برای کسانی که جدید هستند ، می توانید این راهنماها را در مورد نحوه نصب نوت بوک پایتون و Jupyter در رایانه خود با استفاده از Anaconda: راهنمای Hackeoon ، راهنمای Anaconda Docs بررسی کنید.
در اینجا مراحل این بخش آورده شده است:
- CSV خود را به نوت بوک Jupyter خود وارد کنید
- داده های ما را تمیز کنید
مرحله 1: CSV خود را به نوت بوک Jupyter خود وارد کنید
ما از روش pd. read_csv () در پاندا استفاده خواهیم کرد تا CSV خود را به سمت خود بکشید.
پانداس یک کتابخانه پایتون به منظور علوم داده است. می توانید آن را با زیر نصب کنید: https://pypi.org/project/pandas/ یا https://anaconda.org/anaconda/pandas
اگر برای کپی کردن و چسباندن عناوین از وب سایت SeekingAlpha خیلی تنبل هستید ، می توانید از مجموعه داده های ما استفاده کنید.
پوشه کل Code + Data را از مخزن GitHub ما بارگیری کنید: Sentiment-Analysis-1-TSLA-HEADLINES. پرونده CSV "tsla-headlines-sa. csv" نامیده می شود.
اطمینان حاصل کنید که پرونده CSV شما در همان پوشه ای قرار دارد که در صورت اجرای کد من ، کد شما ذخیره می شود.
وارد کردن CSV ما
در حال اجرا pd. read_csv () با 2 ستون به ما داده می دهد. ما آنها را "عنوان" و "تاریخ" عنوان کرده ایم. ما برای رفع مسئله قالب بندی شخصیت ، یک ورودی رمزگذاری اضافه کرده ایم.
مرحله 2: داده های ما را تمیز کنید
مرحله بعدی تمیز کردن داده های ما است.
داده های "عنوان" ما در حال حاضر به اندازه کافی تمیز است که برای کتابخانه تجزیه و تحلیل احساسات ما استفاده می شود ، بنابراین ما آن را همانطور که هست ترک خواهیم کرد.
داده های "تاریخ" ما نیاز به کار دارد. در اینجا مراحل تمیز کردن داده های تاریخ وجود دارد
- هدف نهایی ما را تعیین کنید
- خرما را تمیز کنید
- تاریخ تمیز شده را به قالب DateTime تبدیل کنید
- کل DataFrame را تمیز و تبدیل کنید
1. هدف نهایی ما را تعیین کنید
داده های تاریخ ما در قالب متن (یعنی رشته) است. ما می خواهیم آن را به یک فرمت DateTime تغییر دهیم تا بتوانیم تجزیه و تحلیل خود را به همراه داده های قیمت سهام بعداً انجام دهیم.
2. تاریخ را تمیز کنید
قبل از اینکه بتوانیم تاریخ را با استفاده از کد اصلاح کنیم ، باید به طور خلاصه از طریق مجموعه داده ها جستجو کنیم تا از قالب داده ها استفاده کنیم.
من به طور خلاصه از طریق داده ها اسکن کردم و 4 تغییر را مشاهده کردم.
تنوع 1 حاوی یک روز یا تاریخ نیست. می گوید "دیروز". فقط ردیف اول این قالب را دارد.
بنابراین ، من این تاریخ را از طریق برنامه نویسی سخت تغییر می دهم زیرا ایجاد یک کد سیستماتیک در صورت استفاده از آن فقط یک بار ناکارآمد است.
من قالب را به متنی شبیه به ردیف های دیگر تغییر می دهم. از این رو ، هنگامی که من ردیف های دیگر را با استفاده از کد اصلاح می کنم ، ردیف اول نیز اصلاح می شود.
ردیف اول تغییر کرده است.
تنوع 2 شامل روز ، تاریخ است ، اما یک سال ندارد.
اگر مقاله در همان سال سال جاری منتشر شود ، سالی را شامل نمی شود.
ما به روز علاقه نداریم. ما فقط تاریخ و سال را می خواهیم.
در اینجا ، ما باید تاریخ را استخراج کنیم و در سال جاری اضافه کنیم.
برای این کار ، ابتدا کتابخانه معمولی عبارات (با نام مستعار کتابخانه Regex) را وارد می کنیم تا به ما در دستکاری رشته کمک کنیم.
ما به دنبال خرما با قالب " w. s d" هستیم.
- W به دنبال 3 حرف است
- به دنبال یک نماد دوره ای است
- s به دنبال یک فضا است
- D به دنبال 1 یا 2 رقم است
این قالب متناسب با داده های متغیر ما است ، که به نظر می رسد "دسامبر. 6 "تمام متون دیگر نادیده گرفته می شوند.
در اینجا یک برگه تقلب کاراکتر برای مرجع آورده شده است.
بعد از اینکه تاریخ خود را پیدا کردیم ، سال را به آن اضافه می کنیم.
اگر تعجب می کنید ، "من تازه وارد پایتون هستم ، چگونه می دانم چه کد را تایپ کنم؟"
پاسخ این است ... شما آن را گوگل می کنید.
زیبایی در مورد برنامه نویسی این است که شما در بالای دانش و کار افراد دیگر قرار دارید.
ممکن است بخواهید حداقل اصول اولیه را بیاموزید. سپس هر مشکلی که می خواهید حل کنید ، آن را گوگل کنید ، کد افراد دیگر را کپی کنید ، آن را تغییر دهید ، اشتباه کنید ، یاد بگیرید و تکرار کنید.
پس از مدتی ، شما در این مورد سریعتر خواهید بود و می توانید مشکلات را به طور مؤثر حل کنید (هنوز هم با کمک گوگل).
یک برنامه نویس خوب کسی نیست که بتواند کد مؤثر را از هوای نازک بچرخاند (اگرچه این افراد وجود دارند). یک برنامه نویس خوب می داند که چه چیزی را نمی داند ، چه ابزارهای او می توانند به دست آورند (حتی اگر او ممکن است نمی داند چگونه این کار را انجام دهد) و چگونه می تواند پاسخ دهد.
ما "، 2019" را به جای "2019" اضافه می کنیم تا با تنوع 3 مطابقت داشته باشیم.
تنوع 3 به سادگی تنوع 2 به علاوه سال است.
کد شبیه به تنوع 2 است. ما برای گرفتن سال " d" را در re. search اضافه کردیم.
تنوع 4 مخصوص ماه مه است.
همه ماهها به جز ممکن است یک نماد دوره ای پس از آن داشته باشد."ژانویه" ، "فوریه"و غیره دوره وجود دارد که نشان می دهد املای ماه کوتاه می شود.
ماه مه نیازی به این ندارد.
بنابراین ، در کد Regex ما ، نیازی به شامل یک نماد دوره نیست.
توجه داشته باشید که برای دیدن تمام داده های موجود در DataFrame ، می توانید از کد زیر استفاده کنید:
ما 2 کد برای تنوع داریم. 4 برای تاریخ با سال ، یکی برای تاریخ های بدون.
3. تاریخ تمیز شده را به قالب DateTime تبدیل کنید
اکنون که همه تاریخ ها را در هر دو "MMM" داریم. DD ، Yyyy "یا فرمت" May DD ، Yyyy "، زمان آن رسیده است که اینها را به قالب DateTime تبدیل کنیم.
وارد کردن کتابخانه DateTime. این کتابخانه با قالب بندی DateTime به ما کمک می کند.
برای تبدیل تاریخ به موقع از روش dateTime. strptime () استفاده کنید. ورودی اول تاریخ ما است ، ورودی دوم قالب تاریخ ما است.
نمادها "٪ ب.٪ D ، ٪ y "فرمت های تاریخ را نشان می دهد.
- ٪ B به دنبال نام کوتاه 3 ماه ماه است
- بشربه دنبال یک نماد دوره ای است
- ٪ D به دنبال روز ماه به عنوان تعداد است
- ٪ y به عنوان یک شماره 4 رقمی به دنبال سال است
می توانید اطلاعات بیشتری در مورد DateTime. strptime () در اینجا کسب کنید.
4- کل DataFrame را تمیز و تبدیل کنید
اکنون که ما نحوه تمیز کردن 4 تغییر را پوشش داده ایم و تاریخ را به قالب DateTime تبدیل کرده ایم ، اجازه می دهیم یک حلقه برای تمیز کردن کل ستون "تاریخ" اجرا کنیم.
وای که تعداد انگشت شماری از کد است. نگران نباشید ما آن را تجزیه خواهیم کرد:
در اینجا ما از هر ردیف حلقه می کنیم و به دنبال هر یک از تغییرات رشته ای 4 تاریخ هستیم.
توجه داشته باشید که "|"نماد نمایانگر "یا" است. این امکان را به ما می دهد تا به دنبال یک تنوع یا دیگری بگردیم.
پس از پیدا کردن تنوع ، بررسی می کنیم که آیا سال آن را دارد یا خیر.
اگر بله ، یک سال به رشته اضافه نکنید. اگر خیر ، سال مناسب را به انتهای رشته اضافه کنید.
در مرحله بعد ، ما داده های "Date" را از قالب DateTime تبدیل می کنیم.
تاریخ های ما 2 قالب ممکن در حال حاضر ، یکی با یک نماد دوره و دیگری بدون. ما هر دو را بررسی خواهیم کرد.
پس از اتمام ، داده های تاریخ جدید را به یک لیست اضافه کنید.
بررسی کنید که آیا تعداد ردیف های لیست با DataFrame اصلی مطابقت دارد یا خیر.
اگر بله ، لیست را به عنوان ستون جدید به DataFrame اصلی ما اضافه کنید.
ما در نهایت داده های "تاریخ" خود را ثابت کردیم!
3. تجزیه و تحلیل احساسات را اجرا کنید و یک شاخص نمره ایجاد کنید
بخش بعدی این است که عناوین خود را به یک آنالایزر احساساتی ارسال کنیم تا یک امتیاز را از بین ببرد.
ما می توانیم مدل آنالایزر احساسات خود را بسازیم. ساده می تواند چیزی باشد که با استفاده از یادگیری ماشین نظارت شده آموزش دیده است.
داده های آموزش می تواند عناوین مالی تاریخی باشد. کلمات ، عبارات یا کل عناوین در این مجموعه داده با نمره احساسات برچسب گذاری می شود. به عنوان مثال. 1 می تواند بسیار مثبت باشد ، 0 خنثی و-1 بسیار منفی است. این به عنوان تجزیه و تحلیل احساسات مبتنی بر واژگان شناخته می شود.
شما می توانید از واژگان به عنوان لیستی از کلمات ، نگارشی ، مراحل ، ایموجی ها و غیره فکر کنید.
سپس می توانیم از این مدل آموزش دیده برای ارزیابی نمره احساساتی برای عناوین آینده استفاده کنیم.
همه این چیزهای ساختمانی مدل سرگرم کننده به نظر می رسد اما ... ما در این مقاله این کار را نمی کنیم. من مقاله دیگری را که به ساختمان مدل تجزیه و تحلیل احساسات اختصاص داده شده است ، خواهم نوشت.
در این مقاله از مدل های از پیش آموزش استفاده خواهیم کرد که توسط دیگران ساخته شده است.
آنالایزر احساسات Vader چیست
Vader یک آنالایزر احساساتی است که با استفاده از رسانه های اجتماعی و داده های خبری با استفاده از یک رویکرد مبتنی بر واژگان آموزش دیده است. این بدان معنی است که به کلمات ، نگارشی ، مراحل ، ایموجی ها و غیره نگاه می کند و آنها را مثبت یا منفی ارزیابی می کند.
Vader مخفف "فرهنگ لغت آگاهانه و استدلال احساسات" است. می توانید در اینجا و اینجا اطلاعات بیشتری کسب کنید.
با استفاده از Vader برای تجزیه و تحلیل عناوین TSLA
در اینجا مراحل است:
- کتابخانه NLTK را نصب کنید
- تجزیه و تحلیل احساسات را اجرا کنید
مرحله 1: کتابخانه NLTK را نصب کنید
NLTK مخفف ابزار زبان طبیعی است. این یک کتابخانه است که به ما کمک می کند تا زبانها را مدیریت و تجزیه و تحلیل کنیم.
ما به این نیاز داریم زیرا آنالایزر Vader بخشی از کتابخانه NLTK است.
می توانید آن را از طریق آناکوندا یا پیپ نصب کنید.
بعد باید واژگان Vader را بارگیری کنیم. این را به عنوان داده های اضافی مورد نیاز برای اجرای آنالایزر Vader ما فکر کنید.
کد زیر را در نوت بوک Jupyter خود اجرا کنید تا Vader_lexicon بارگیری کنید:
مرحله 2: تجزیه و تحلیل احساسات را اجرا کنید
سرانجام وقت آن است که تجزیه و تحلیل احساسات واقعی را اجرا کنیم!
این کد است (کوتاه تر از آن چیزی است که فکر می کنید EH):
ما از یک حلقه استفاده می کنیم تا هر تیتر را به آنالایزر خود منتقل کنیم. نمره احساسات به هر عنوان اختصاص می یابد.
در مرحله بعد ، ما این لیست را در DataFrame اصلی خود جمع می کنیم. با این حال ، ما فقط به مقادیر متغیر "ترکیب" علاقه مند هستیم.
4- شاخص نمره عقب مانده در برابر قیمت ها
در این بخش ، ما می خواهیم رابطه بین بازده سهام TSLA و نمره احساسات خود را مقایسه کنیم. اگر رابطه معنی داری وجود داشته باشد ، ممکن است نمرات احساسات ما ارزش پیش بینی کننده ای داشته باشد.
در اینجا مراحل بعدی آورده شده است:
- نمرات احساسات روزانه
- قیمت TSLA را وارد کرده و بازده را محاسبه کنید
- رابطه بین نمره عقب مانده در برابر بازده (روزانه) را بررسی کنید
مرحله 1: نمرات احساسات روزانه
ما فقط به یک نمره در روز نیاز داریم تا به عنوان قیمت روزانه TSLA مقایسه کنیم.
با این حال ، ممکن است بیش از یک مقاله در روز وجود داشته باشد. در این موارد ، ما نمرات همه مقالات را برای کسب نمره روزانه ترکیب می کنیم.
روش df. groupby () ستون هایی را که غیر ضروری می داند حذف می کند. خروجی تاریخ (به عنوان شاخص شما) و نمرات روزانه خواهد بود.
مرحله 2: قیمت TSLA را وارد کرده و بازده را محاسبه کنید
هدف در این مرحله دریافت بازده روزانه (نه قیمت سهام) TSLA است.
اکنون باید قیمت سهام را برای TSLA بدست آوریم. ما آن را از مالی یاهو به صورت دستی دریافت خواهیم کرد.
به امور مالی یاهو بروید و تیک تیک سهام TSLA را جستجو کنید.
روی داده های تاریخی کلیک کنید ، تاریخ های مورد نظر خود را انتخاب کرده و داده ها را بارگیری کنید.
داده ها به صورت CSV بارگیری می شوند.
جایگزین ، اگر تنبل هستید ، آن را از repo ما بگیرید.
پاندا یک روش مناسب برای وارد کردن پرونده های CSV دارد:
برخی از شما این را نمی دانید اما داده های "تاریخ" در قالب رشته است. می توانید با کد زیر بررسی کنید:
بنابراین ، ما باید ستون "تاریخ" را به قالب DateTime تبدیل کنیم.
برای انجام این کار از روش دیگری به نام pd. astype () استفاده خواهیم کرد.
این کد کل ستون "تاریخ" را به قالب DateTime تغییر می دهد.
در مرحله بعد ، از آنجا که ما فقط در این مقاله به ستون "Adj Close" علاقه مند هستیم ، بنابراین اجازه دهید همه ردیف های ناخواسته را رها کنیم. در مرحله بعد ، ما ستون "تاریخ" خود را به عنوان فهرست خود تنظیم می کنیم تا مدیریت آن آسان تر شود.
اکنون که قیمت های خود را داریم ، باید بازده خود را محاسبه کنیم.
برای محاسبه بازده روزانه ، ما قیمت های امروز را با دیروز تقسیم می کنیم.
مرحله 3: رابطه بین نمره عقب مانده در برابر بازده (روزانه) را بررسی کنید
هدف در این مرحله بررسی این است که آیا نمره احساسات پیش بینی بازده سهام آینده را دارد یا خیر.
برای انجام این کار ، ما رابطه بین نمره احساسات یک روزه و بازده TSLA را با استفاده از رگرسیون ساده بررسی می کنیم.
یک نمره احساسات یک روزه به ما امکان می دهد عناوین مقاله امروز را با بازده سهام فردا مقایسه کنیم.
این یک نکته مهم است زیرا ما برای پیش بینی آینده به شاخص نمره خود نیاز داریم ، نه اینکه به ما بگوییم که در حال حاضر چه اتفاقی می افتد.
البته، می توان استدلال کرد که عنوان ممکن است تاثیر فوری بر قیمت سهام داشته باشد. برای آزمایش آن، به داده های قیمت دقیق در بازه زمانی یک دقیقه یا حتی دوم نیاز داریم.
ما در این مقاله این کار را انجام نمی دهیم زیرا تنظیم آن دشوارتر است، داده های قیمت دقیقه و ثانیه گران است و گاهی اوقات نادرست است، متغیرهای زیادی در معاملات زنده (نقدینگی، اسپرد و غیره) وجود دارد که ممکن است اجازه ندهند. ما با قیمت های اعلام شده و غیره وارد معاملات خود شویم.
خوب، بیایید تحلیل را شروع کنیم. در اینجا مراحل انجام می شود:
- نمره احساسات عقب افتاد
- بازده روزانه را با امتیاز احساسات عقب افتاده مطابقت دهید
- پاک کردن داده ها (دوباره)
- تست را طراحی کنید
- تست ارزش پیش بینی
مرحله 1: نمره احساسات عقب افتاد
این کد تمام داده ها را یک ردیف به پایین جابجا می کند.
صبر کنید آیا آن را پایین می آوریم؟نباید بالا بیاد؟در واقع پایین است.
در اینجا نحوه فکر کردن در مورد آن است. به عنوان مثال. در 2018-01-16، امتیاز تاخیر 0. 5719 است. هنگامی که ما یک رگرسیون 0. 5719 را در برابر بازده های 2018-01-16 TSLA اجرا می کنیم، در واقع امتیاز 2018-01-15 را در برابر بازده های 2018-01-16 بررسی می کنیم.
این چیزی است که میخواهیم. امتیاز تاریخ قدیمی در برابر بازده های آینده.
مرحله 2: بازده روزانه را با امتیاز احساسات عقب افتاده مطابقت دهید
تعداد ردیف های شاخص امتیاز ما با تعداد ردیف های بازگشتی ما یکسان نیست.
این اتفاق می افتد زیرا روزهای معاملاتی وجود دارد که هیچ خبری وجود ندارد.
بنابراین، قبل از اینکه بتوانیم رگرسیون را اجرا کنیم، باید بازده روزانه را با نمرات احساسات مربوطه مطابقت دهیم.
برای این منظور از pd. merge() استفاده می کنیم. کد بالا یک تاریخچه جدید ایجاد می کند که از بازگشت های TSLA به عنوان مرجع استفاده می کند و امتیاز احساس تاخیر مناسب را برای آن می گیرد.
به این به عنوان یک نسخه پیچیده تر از "vlookup" در اکسل فکر کنید، اما همان کار را انجام می دهد.
در اینجا و اینجا می توانید در مورد متد ()pd. merge اطلاعات بیشتری کسب کنید.
مرحله 3: پاک کردن داده ها (دوباره)
در روزهایی که خبری نیست، امتیازات احساسی وجود ندارد. وقتی امتیازی وجود ندارد، ستون امتیاز یک NaN (عدد نیست) را نشان می دهد.
داشتن NaN معادل نمره 0 است. بنابراین، همه NaN ها را با 0 جایگزین می کنیم.
ما این کار را با استفاده از این کد انجام می دهیم:
مرحله 4: تست را طراحی کنید
روش تنبل برای اجرای آزمون بررسی رابطه بین نمرات احساسات روزانه در برابر بازده روزانه TSLA است.
با این حال، علاوه بر عناوین مقالات، عوامل زیادی بر قیمت سهام TSLA تأثیر می گذارند.
ما در مورد چگونگی جداسازی تأثیر تیترها به طور عمیق نمی پردازیم. در حال حاضر، بیایید حداقل ها را انجام دهیم.
حداقل این است که داده هایی را حذف کنید که در آن امتیاز 0 یا ناچیز است.
فرض خواهیم کرد که نمره بی ن-0. 5 و 0. 5 به خاطر سادگی ناچیز است. این یک چهره دلخواه است. در صورت تمایل می توانید آن را در بهینه سازی پیاده روی بهینه سازی کنید.
با انجام این کار ، ما فرضیه خود را به این ترتیب تعریف کرده ایم:
این آزمون آزمایش نمی کند که آیا نمره اثرات طولانی مدت دارد زیرا ما فقط نمره امروز را در برابر بازده سهام فردا مقایسه می کنیم.
کد زیر تمام داده هایی را که نمره احساسات بی ن-0. 5 و 0. 5 است حذف می کند.
مرحله 5: آزمون برای ارزش پیش بینی
سرانجام ، داده های ما برای ما تمیز و آماده است. اکنون باید آزمایش کنیم که آیا بین نمره احساسات تاخیر و بازده روزانه رابطه مثبت وجود دارد.
چند راه برای انجام این کار وجود دارد:
- همبستگی را بررسی کنید
- رگرسیون را اجرا کنید
- یک تست ادغام مانند تست افزوده دیک ی-فولر را اجرا کنید
- یک فرضیه از آزمون میانگین را اجرا کنید (برای دیدن این آموزش باید به Quantopian وارد شوید)
هر یک از 4 آزمایش فوق کافی خواهد بود. دلیل این امر ، اگر از نتایج آزمون راضی باشیم ، ما هنوز هم باید استراتژی را با استفاده از یک محیط تولید با پشتوانه مناسب آزمایش کنیم-شبیه سازی شلیک معاملات ، استفاده از داده های داخل و خارج از نمونه ، حسابداری هزینه ها و کمیسیون ، اجتناب از آنبیش از حد و غیره
بنابراین ، شما می توانید از این تست های آماری به عنوان یک فیلتر اولیه فکر کنید تا ببینید که آیا پتانسیل داریم یا خیر.
در این مقاله ، ما آن را ساده نگه می داریم و همبستگی را اجرا می کنیم.
قبل از آن ، اجازه دهید داده های خود را ترسیم کرده و آن را تجسم کنیم.
در محور X ، نمره 1 روزه احساسات خود را داریم. در محور y ما روزانه TSLA خود را بازده داریم.
این خیلی خوب به نظر نمی رسدما یک شکل شیب دار به سمت بالا می خواهیم. یک شکل شیب دار به سمت بالا نشان می دهد که وقتی نمره (1) بالا می رود ، بازده روزانه بالا می رود و بالعکس.
در حالت ایده آل ، ما چیزی شبیه به این می خواهیم:
به هر حال ، بیایید قبل از صحبت در مورد نتایج ، یک تحلیل همبستگی انجام دهیم. کد زیر یک محاسبه همبستگی ساده را اجرا می کند.
ارزیابی نتایج ما
ضریب همبستگی ما 0. 044 است. این تقریباً نزدیک به 0 است. این بدان معنی است که عناوین مقاله به تنهایی هیچ ارزش پیش بینی کننده ای برای بازده سهام فردا ندارند.
صادقانه بگویم ، در اینجا جای تعجب ندارد. بازارها پیشرفته تر می شوند و ما یک تحلیل بسیار ساده گرایانه انجام دادیم.
اما هیچ نگرانی ، قبل از پایان دادن به مقاله ، اجازه نمی دهیم به پیشرفت هایی که می توانیم در تجزیه و تحلیل خود برای تجارت در دنیای واقعی انجام دهیم ، نگاهی بیندازیم.
تجارت در دنیای واقعی - بهبود تحلیل ما
2 تاخیر دوم و رابطه بلند مدت
ما می توانیم عناوین را به 2 نوع تقسیم کنیم. 1) آنهایی که حرکتی و 2) مربوط به اصول اولیه.
این به اخبار مربوط می شود که باعث تأثیر فوری می شود. اگر این کار را انجام می دهیم ، باید به جای عناوین تجزیه و تحلیل از عناوین خبری استفاده کنیم.
از آنجا که این خبر تأثیر فوری دارد ، اگر برای این کار از یک تاخیر 1 روزه استفاده کنیم ، خیلی کند خواهد بود.
بنابراین ، ما بهتر است از تأخیر زمانی کوتاه تر مانند یک تاخیر 2 ثانیه استفاده کنیم. اما توجه داشته باشید که داده های چنین بازه های زمانی کم گران هستند و ممکن است دقیق نباشند.
خبر بد این است که ، حتی اگر شما موفق به اجرای دقیق این تجزیه و تحلیل شوید ، با فرکانس بالا ، یا حتی صندوق های محافظت کمی منظم در دنیای واقعی کشتار خواهید شد زیرا در حال رقابت با سرعت اجرای هستید.
در بازه های زمانی پایین تجارت نکنید ، مگر اینکه مطمئن باشید که حاشیه ای دارید.
این نوع اخبار اثر اساسی طولانی مدت دارد. عناوین تجزیه و تحلیل SeekingAlpha ما در این گروه قرار می گیرند.
یک تاخیر 1 روزه ممکن است خیلی کوتاه باشد تا اثر شروع شود.
در این حالت ، ما می توانیم یک نمره شاخص بلند مدت ایجاد کنیم و بر اساس عناوین مقاله فردی از آن اضافه یا تفریق کنیم. علاوه بر این ، از آنجا که عناوین جدیدتر ممکن است تأثیر بیشتری داشته باشند ، می توانیم وزن را برای عناوین قدیمی تر کاهش دهیم.
سپس می توانیم قیمت TSLA (نه بازده) را در برابر این شاخص مقایسه کنیم.
ماسهبازی استراتژی شما
سر و صدای زیادی در بازار وجود دارد. بسیاری از عوامل علاوه بر عناوین ، بر قیمت سهام TSLA تأثیر می گذارد (اگرچه ظاهراً عناوین نماینده تقریبی این عوامل دیگر هستند).
تجارت دارایی با استفاده از عناوین تنها هنگامی که دارایی توسط بسیاری از عوامل دیگر بمباران می شود ، خطرناک است.
همانطور که قبلاً در بخش اولیه این مقاله ذکر شد ، می توانیم با محافظت از آن با دارایی دیگر ، این مشکل را کاهش دهیم. سپس ما از ارزش نسبی نمرات احساسات به عنوان پیش بینی کننده خود استفاده می کنیم.
تاریخ های ضربه بالا
در روزهایی که متغیرهای دیگر تأثیر زیادی دارند ، تجارت نکنید.
اگر می دانید که امروز یک نتیجه انتخابات رئیس جمهور اعلام می شود ، احتمالاً تیتر Tesla Seekingalpha شما تأثیر چندانی نخواهد داشت.
اگر تسلا در حال اعلام درآمد خود باشد ، مقالات مربوط به افراد غیرقانونی تأثیر چندانی نخواهد داشت.
برای پاسخگویی به این موارد در تجزیه و تحلیل خود ، این تاریخ های تأثیر زیاد برون زا را از مجموعه داده های خود حذف کنید.
صحت آنالایزر احساسات ما
صحت آنالایزر احساسات Vader در هیچ کجای کامل نیست. فقط با چشم زدن به خروجی ، باید بتوانید این موضوع را ببینید.
من می گویم نمرات این 3 عنوان کاملاً از این امتیاز نیست
همانطور که قبلاً ذکر شد ، ما از قبل می دانیم که این خروجی احساسات دارای واریانس بزرگی است و ما به تعداد زیادی متکی هستیم تا مقدار متوسط خروجی کمی مفید را از بین ببریم.
گفته می شود ، اگر می خواهید در این مورد پیشرفت کنید ، راه حل این است که با آموزش آن بر روی نوع داده هایی که در آن آزمایش می کنید ، آنالایزر احساسات خود را بسازید.
به عنوان مثال. اگر از عناوین Seekingalpha استفاده می کنید ، یک آنالایزر مبتنی بر واژگان را آموزش دهید که فقط بر اساس عناوین Seekingalpha است. اما توجه داشته باشید که آنالایزر شما بیش از حد به داده های SeekingAlpha متناسب است و در صورت استفاده از چیز دیگری به خوبی کار نخواهد کرد.
گزینه دیگر این است که 10 سال صبر کنید تا شخصی بتواند یک آنالایزر احساساتی فوق العاده دقیق ایجاد کند (من مطمئن هستم که صندوق های کمتری این کار را انجام داده اند) و منبع باز آن.
به جای نمره خام از دلتا از نمره استفاده کنید
یک قدم جلو فکر کنید.
نمره احساسات را با انتظارات فعلی مقایسه کنید.
اگر می دانید که تسلا در بازارها بسیار منفی مشاهده می شود ، یک امتیاز عالی بیشتر تأثیر می گذارد.
اگر تسلا از قبل خوش بینانه مشاهده شود ، یک امتیاز عالی به اندازه تأثیرگذار نیست.
از بیش از یک منبع به دنبال عناوین باشید
در حال حاضر ما فقط به داده های اصلی Seekingalpha نگاه کرده ایم. تهیه اطلاعات ما از منابع مختلف برای اهداف مختلف ممکن است امن تر باشد.
برای اخبار حسی ، از کانال های خبری بزرگتر می خواهید.
برای مقالات اساسی طولانی مدت ، ممکن است بخواهید آنها را از وبلاگ های قانونی تر یا شرکت های تحقیقاتی تهیه کنید.
در هر دو مورد ، ترکیبی از منابع مختلف می خواهید. این امر باعث افزایش عینیت داده ها می شود زیرا برخی از منابع تمایل به مغرضانه دارند.
مکمل داده های اصلی با داده های دیگر
داده های تیتر فقط یک جنبه است.
این داده ها را با سایر داده های جایگزین مانند تصاویر ماهواره ای/هواپیماهای بدون سرنشین از کارخانه های تسلا ترکیب کنید ، میزان لیست های اتومبیل های دست 2 دست ، فعالیت رسانه های اجتماعی آنها و غیره را خرد کنید تا پیش بینی بهتری داشته باشید.
یادداشت پایان - واقعاً تجارت را درک کنید
در پایان روز ، شما باید واقعاً دلیل تجارت خود را درک کنید.
با یک فرضیه روبرو شوید و آن را به طور مناسب آزمایش کنید.
متغیرهایی را که می خواهید آزمایش کنید جدا کنید ، داده های خود را در قطعات داخل و خارج از نمونه تقسیم کنید ، مراقب استفاده بیش از حد یا P-Hacking باشید.
در اینجا مصاحبه ای در مورد چارچوب برای طراحی استراتژی های معاملاتی که به نظر من مفید است ، آورده شده است.
تجارت یک ورزش رقابتی است. این مقاله برخی از اصول اولیه را برای تجزیه و تحلیل احساسات در بر می گیرد. به آن فکر کنید که به شما آموزش می دهد که چگونه هر قطعه شطرنج حرکت می کند.
برای برنده شدن در تجارت ، شما باید استراتژی هایی را برای پیشی گرفتن از دیگران بیاموزید ، زیرا همه سعی می کنند همیشه از یکدیگر پیشی بگیرند ، شما باید خلاق باشید و برای ماندن در بازی نوآوری کنید.
حساب اسلامي...
ما را در سایت حساب اسلامي دنبال می کنید
برچسب :
نویسنده : کامران فیوضات
بازدید : <-PostHit->
تاريخ : چهارشنبه
3 خرداد
1402 ساعت: 23:50