تجزیه و تحلیل داده ها و تجسم در امور مالی - تجزیه و تحلیل فنی سهام با استفاده از پایتون

ساخت وبلاگ

نحوه استفاده از کتابخانه های پایتون مانند پاندا ، ماتپلوتلیب و Seabo برای به دست آوردن بینش از داده های روزانه سهام و حجم قیمت سهام.

با افزایش نفوذ در تجزیه و تحلیل به جنبه های بی شماری از زندگی ما ، مطمئناً امور مالی یکی از اولین مواردی است که می تواند به این روند برسد. در این مقاله ، من سعی کرده ام نشان دهم که چگونه می توان تجزیه و تحلیل داده ها و تکنیک های تجسم را در دنیای مالی گنجانید.

1. درباره داده ها

برای این تجزیه و تحلیل ، من از 2 سال از داده های تاریخی از اواسط فوریه 2018 تا فوریه 2020 از سهام زیر ذکر شده در بورس اوراق بهادار ملی (NSE) استفاده کرده ام-

  • HDFC Ltd.
  • صنایع دارویی Sun Ltd.
  • خدمات مشاوره تاتا با مسئولیت محدود
  • Jindal Steel & Power Ltd.
  • Jubilant Foodworks Ltd.

دلیل انتخاب این موارد به این دلیل است که من در دوره کارآموزی اخیر خود روی این سهام کار کرده بودم. ممکن است مجموعه سهام خود و مدت زمان تجزیه و تحلیل را انتخاب کنید.

سهام من انتخاب کردم از بخش های مختلف و کلاه بازار است. خواهید دید که چگونه در این مقاله پیشرفت می کنیم. برای شروع ، ما سهام HDFC را به صورت جداگانه بررسی خواهیم کرد و سپس به سمت تجزیه و تحلیل ترکیبی حرکت خواهیم کرد. برای این بخش ، من پرونده CSV از داده های تاریخی سهام HDFC را از Finance Yahoo بارگیری کرده ام. در بخش بعدی ، ما از یک ابزار عالی برای استخراج مستقیم قیمت سهام از وب استفاده خواهیم کرد.

2. درک داده ها و آمار عمومی

وارد کردن کتابخانه های لازم -

وارد کردن numpy به عنوان npواردات پاندا به عنوان PDوارد کردن matplotlib. pyplot به عنوان pltواردات دریایی را به عنوان SNS وارد کنیدوارد کردن dateTimeهشدارها را وارد کنیدهشدارها.

داده ها را از پرونده CSV بخوانید و چند ردیف اول را نمایش دهید -

hdfc_df = pd. read_csv ("hdfc. csv")hdfc_df. head ()

از آنجا که بازه زمانی تجزیه و تحلیل ما زیاد است ، می توانیم در تعداد مکان های اعشاری که باید در نظر بگیریم استراحت کنیم.

hdfc_df = hdfc_df. round (2)hdfc_df. head (2)

بهتر! اکنون ، اجازه می دهیم شکل مجموعه داده را تعیین کنیم -

hdfc_df. shape

مجموعه داده HDFC ما دارای 491 ردیف و 7 ستون است. در مرحله بعد ، ما بررسی می کنیم که آیا مجموعه داده دارای مقادیر تهی است -

hdfc_df. isnull (). جمع ()

ورودی های تهی را از مجموعه داده رها کنید -

hdfc_df. dropna (inplace = true ، محور = 0)

اکنون ، اجازه دهید نوع داده هر ستون را بررسی کنیم -

hdfc_df. dtypes

همانطور که می بینیم ، ستون "تاریخ" در قالب مناسب نیست. پانداس دارای ویژگی های داخلی برای مقابله با داده های سری زمانی به روشی دقیق تر است. اما برای استفاده از عملکرد پاندا برای تاریخ ، باید اطمینان حاصل کنیم که ستون "تاریخ" از نوع "DateTime64 (NS)" است.

hdfc_df ['date'] = pd. to_datetime (hdfc_df ['date'])HDFC_DF. HEAD (2

برای به دست آوردن مدت زمان کل که ما این تجزیه و تحلیل را انجام می دهیم -

hdfc_df [‘date ']. max () - hdfc_df [‘ date']. min ()

خروجی: Timedelta (729 روز 00:00:00))

تقریباً 252 روز معاملاتی در سال با میانگین 21 روز در ماه یا 63 روز در هر سه ماه وجود دارد. از 365 روز احتمالی ، 104 روز آخر هفته (شنبه و یکشنبه) هنگام بسته شدن بورس سهام است.

در مرحله بعد ، ما از تابع توصیف () پاندا استفاده خواهیم کرد تا از سطح بالایی درباره نحوه عملکرد سهام HDFC در حدود دو ماه گذشته استفاده کنیم-

HDFC_DF. ILOC [-90:]. توصیف (). Astype (int)

در 90 روز گذشته ، میانگین قیمت بسته شدن سهام HDFC حدود 2307 پوند بود. برای حدود 75 ٪ از زمان ، سهام زیر 2421 پوند معامله می شد و حداکثر 2492 پوند بود. حداکثر حجم سهام معامله شده در یک روز 8808006 بود که مقدار متوسط آن 2776142 بود.

3. تنوع عمومی در قیمت سهام

قبل از اینکه به سمت تحقیقات بیشتر حرکت کنیم ، ستون "تاریخ" را به عنوان شاخص DataFrame تنظیم می کنیم. این طرح ریزی را آسان می کند.

hdfc_df. index = hdfc_df [‘date ']

اکنون قیمت بسته شدن (تعدیل شده) سهام را در مدت 2 سال ترسیم کنید تا ایده کلی در مورد چگونگی عملکرد سهام در دوره معین داشته باشید.

hdfc_df [‘adj Close ']. طرح (figsize = (15،8))plt. show ()

در طرح فوق ، اگر توجه داشته باشید ، در حدود ماه سپتامبر 2018 کاهش چشمگیری در قیمت سهام وجود دارد. جدا از "اثر سپتامبر" ، کاهش عمومی در قیمت سهام HDFC را می توان به تشدید کننده نسبت دادجنگ تعرفه بین ایالات متحده و چین که تأثیر گسترده ای در بازارهای مالی هند داشت.

4- تغییر درصد روز (بازده روزانه)

تغییر درصد روزانه در قیمت سهام بر اساس درصد تغییر بین 2 روز متوالی قیمت بسته می شود. بیایید بگوییم که آیا قیمت بسته شدن سهام دیروز 500 پوند بود و امروز سهام با 550 پوند بسته شد. بنابراین ، درصد تغییر 10 ٪ است. یعنی ((550-500) / 500)*100. اینجا هیچ رمز و راز نیست!

بر این اساس ، ما یک ستون جدید "DAY_PERC_CHANGE" را معرفی خواهیم کرد که بازده روزانه در قیمت سهام را نشان می دهد. این کار را می توان با استفاده از تابع داخلی PCT_CHANGE () در پایتون انجام داد.

hdfc_df [‘day_perc_change '] = hdfc_df [‘ adj Close']. pct_change ()*100hdfc_df. head ()

متوجه خواهید شد که اولین مقدار در ستون "day_perc_change" نان است. ما این ردیف را رها خواهیم کرد.

hdfc_df. dropna (محور = 0 ، inplace = true)

بازده روزانه به صورت یک طرح -

hdfc_df [‘day_perc_change ']. طرح (figsize = (12 ، 6) ، fontsize = 12)

می توان مشاهده کرد که در بیشتر روزها ، بازده بین 2 ٪ تا 2 ٪ با تعداد کمی سنبله بین عبور از 6 ٪ علامت در هر دو طرف است.

به همین ترتیب می توانید مقالات خبری مشابهی را برای روزهایی پیدا کنید که افزایش شدید/سقوط قیمت سهام وجود داشته باشد.

ترسیم هیستوگرام توزیع روزانه بازده -

HDFC_DF [‘DAY_PERC_CHANGE ']. HIST (سطل = 50 ، figsize = (10،5))plt. xlabel ("بازده روزانه")plt. ylabel ("فرکانس")plt. show ()#نصفhdfc_df. day_perc_change. describ ()

هیستوگرام برگشتی روزانه در مورد مبدا محور است. برای 2 سال گذشته ، میانگین بازده روزانه حدود 0. 072 بوده است و در بیشتر روزها بازده روزانه کمتر از 1 ٪ نشان می دهد که سهام HDFC در طول دوره کمتری داشته است. در طول دوره ، بیشترین درصد تغییر در جهت مثبت 6. 46 ٪ و در جهت منفی 6. 56 ٪ بود. واضح است ، ما هیچ نمونه ای از "Bull Run" یا "Drop Bear" نداریم!

5. تجزیه و تحلیل روند

در مرحله بعد ، یک ستون جدید "روند" اضافه می کنیم که مقادیر آن بر اساس تغییر درصد روز به روز است که در بالا محاسبه کردیم. روند از رابطه زیر تعیین می شود -

Def Trend (x):if x>-0. 5 و X بازگشت "اندک یا بدون تغییر"elif x>0. 5 و X بازگشت "مثبت جزئی"elif x>-1 و X بازگشت "منفی جزئی"elif x>1 و X بازگشت "مثبت"elif x>-3 و X بازگشت "منفی"elif x>بازگشت 3 و X "در بین بهترین های برتر"elif x>-7 و X بازگشت "در بین بازندگان برتر"elif x>7:بازگشت "Bull Run"elif x بازگشت "افت خرس"HDFC_DF [‘TREND '] = np. zeros (HDFC_DF [‘ DAY_PERC_CHANGE']. COUNT ())HDFC_DF [‘TREND '] = HDFC_DF [‘ DAY_PERC_CHANGE']. اعمال کنید (Lambda X: Trend (x))hdfc_df. head ()

ما آرزو می کنیم ببینیم که سهام در 2 سال گذشته چگونه روند دارد. این می تواند به عنوان یک نمودار پای تجسم شود ، در حالی که هر بخش درصد روزهای هر روند را نشان می دهد. ما یک نمودار پای برای ستون "روند" ترسیم خواهیم کرد تا فرکانس نسبی هر دسته از روند را تجسم کنیم.

برای این کار ، ما از عملکرد Groupby () با ستون Trend استفاده خواهیم کرد تا تمام روزها را با همان روند در یک گروه واحد قبل از ترسیم نمودار پای جمع کنیم.

تجسم فرکانس روند با نمودار پای-

dfc_pie_data = hdfc_df. groupby ("روند")pie_label = مرتب شده ([i for i in hdfc_df. loc [: ، 'trend']. منحصر به فرد ()]plt. pie (hdfc_pie_data ['trend']. count () ، برچسب ها = pie_label ،autopct = '٪ 1. 1f ٪٪' ، شعاع = 2)plt. show ()

برای دوره مورد نظر از اواسط فوریه 2018 تا فوریه 2020 ، سهام HDFC برای حدود 1. 8 ٪ از زمان و در بین بازنده های برتر برای 1. 6 ٪ در بین برتری های برتر قرار داشت. برای حدود 12. 4 ٪ از دوره زمانی ، سهام در یک روز معین مثبت عمل کرده است. به همین ترتیب ، برای بیشتر دوره زمانی (حدود 29. 6 ٪) سهام تغییر بسیار جزئی در قیمت نشان داد. این مشاهدات مطابق با هیستوگرام بازگشت روزانه است که در بخش فوق دیدیم.

6. بازده و حجم روزانه

plt. stem (hdfc_df [‘date '] ، hdfc_df [‘ day_perc_change'])(HDFC_DF [‘حجم]/1000000) . plot (figsize = (15 ، 7. 5) ،رنگ = "سبز" ،آلفا = 0. 5)

(* حجم روزانه تجارت در مقیاس کاهش یافته است تا با مقیاس بازگشت روزانه مطابقت داشته باشد)

با مخلوط کردن حجم تجارت روزانه (به رنگ سبز) با بازده روزانه (به رنگ آبی) ، مشاهده شد که هر زمان که حجم سهام معامله شده زیاد باشد ، نسبتاً زیاد افزایش یا کاهش قیمت سهام منتهی به بازده بالا وجود دارد. بشربنابراین ، در یک روز معین اگر حجم معاملات غیر متعارف انجام شود ، می توان انتظار تغییر بزرگی در بازار را در هر جهت داشت. حجم سهام معامله می شود که با افزایش یا کاهش قیمت سهام همراه است ، به طور کلی ، شاخصی از اعتماد به نفس معامله گران و سرمایه گذاران در یک شرکت خاص است.

7. تجزیه و تحلیل همبستگی سهام با نقشه جفت و توطئه های مشترک

"هرگز تمام تخم های خود را در یک سبد واحد قرار ندهید"

هر وقت به دنبال تنوع نمونه کارها هستیم ، نمی خواهیم سهام مربوط به یکدیگر باشد. از نظر ریاضی ، ضریب همبستگی پیرسون (که به آن مقدار R پیرسون نیز گفته می شود) بین هر جفت سهام باید نزدیک به 0 باشد. ایده پشت آن ساده است - فرض کنید نمونه کارها شما شامل سهام بسیار همبسته است ، پس اگر یک سهام فرو ریخت ، دیگران ممکن استبیش از حد سقوط کنید و در معرض خطر از دست دادن تمام سرمایه گذاری های خود هستید!

من سهام فوق را برای انجام تجزیه و تحلیل همبستگی انتخاب کردم. تمام این سهام از بخش های مختلف صنعت و کلاه بازار است. شما در انتخاب سهام مورد علاقه خود آزاد هستید. این روش یکسان است.

در بخش قبلی ما از پرونده CSV از پیش بارگیری شده برای تجزیه و تحلیل استفاده کرده ایم. در این بخش ، ما برای استخراج قیمت سهام ، از بسته خواننده داده های Pandas Web Data استفاده خواهیم کرد.

# بسته وارداتوارد کردن pandas_datareader. data به عنوان وب# تنظیم تاریخ شروع و پایانstart = dateTime. Datetime (2018 ، 2 ، 15)پایان = dateTime. Datetime (2020 ، 2 ، 14) # داده های قیمت بسته شدن را استخراج کنیدcombined_df = web. datareader ([‘hdfc. ns '،" jindalstel. ns "،" jublfood. ns "،" sunpharma. ns "،" tcs. ns "،"^nsei "] ،"یاهو" ، شروع = شروع ، پایان = پایان) ["adj Close"]

مقادیر تهی را رها کنید و چند ردیف اول را نمایش دهید -

# مقادیر تهی را رها کنیدcombined_df. dropna (inplace = true ، محور = 0)# چند ردیف اول را نمایش دهیدcombined_df. head ()

(^ nsei نمادی برای شاخص بورس اوراق بهادار ملی است - Nifty 50)

در مرحله بعد ، ما همبستگی بین سهام مختلف را به صورت جفتی با Seabo Pairplot تجزیه و تحلیل خواهیم کرد.

# بازده روزانه همه سهام فوق را در یک DataFrame جدید ذخیره کنیدPCT_CHG_DF = COMBID_DF. PCT_CHANGE ()*100pct_chg_df. dropna (inplace = true ، چگونه = "هر" ، محور = 0)# توطئه pairplotواردات دریایی را به عنوان SNS وارد کنیدsns. set (سبک = "کنه" ، font_scale = 1. 25)sns. pairplot (pct_chg_df)

توجه داشته باشید که تجزیه و تحلیل همبستگی با تغییر درصد روزانه (بازده روزانه) قیمت سهام انجام می شود و نه بر روی قیمت سهام.

اگر با دقت مشاهده کنید ، توطئه های موجود در ناحیه مثلثی پایین همان توطئه های موجود در ناحیه مثلثی فوقانی با محورهای فقط در تعویض هستند. بنابراین ، تجزیه و تحلیل هر یک از توطئه ها کافی است. مورب نشانگر هیستوگرام است ، دقیقاً مانند موردی که در بالا برای سهام HDFC مشاهده می شود.

بردن:

سهام HDFC ، Jindal Steel ، غذاهای شاداب ، Sun Pharma و TCS می توانند در یک نمونه کارها گنجانده شوند زیرا هیچ دو سهام همبستگی معنی داری را نشان نمی دهد.

اشکال:

اگرچه توطئه های جفت تجسم بسیار خوبی از همه ترکیبات ممکن بین دسته سهام ارائه می دهند ، اما هیچ اطلاعات مفصلی مانند مقدار R پیرسون یا مقدار p null-Hypotesesis را برای تعیین کمیت همبستگی ارائه نمی دهد. این جایی است که طرح مشترک وارد تصویر می شود!

در حالی که Pair Plot یک بینش بصری در مورد همه همبستگی های ممکن ارائه می دهد ، Seabo Continplot اطلاعات مفصلی مانند مقدار R پیرسون (ضریب همبستگی پیرسون) را برای هر جفت سهام ارائه می دهد. مقدار R پیرسون ا ز-1 تا 1 متغیر است. مقدار منفی نشانگر رابطه خطی منفی بین متغیرها است ، در حالی که مقدار مثبت نشانگر رابطه مثبت است. مقدار R پیرسون نزدیک به 1 (ی ا-1) همبستگی قوی را نشان می دهد ، در حالی که ارزش نزدیک به 0 نشانگر همبستگی ضعیف است.

علاوه بر مقدار R پیرسون ، طرح مشترک همچنین هیستوگرام مربوطه را در لبه ها و همچنین فرضیه P-مقدار P نشان می دهد.

در اینجا نمونه ای از توطئه های مشترک بین سهام Sun Pharma vs Jindal Steel و Jindal Steel vs HDFC -

از Scipy. stats آمار وارداتsns. jointplot ("sunpharma. ns" ، "jindalstel. ns" ، pct_chg_df ، kind = "پراکندگی"). حاشیه نویسی (stats. pearsonr)sns. jointplot (‘jindalstel. ns '،" hdfc. ns "، pct_chg_df ، kind =" پراکندگی "). حاشیه نویسی (stats. pearsonr)plt. show ()

غذای آماده:

  • مقدار R پیرسون برای Jindal Steel V/S Sun Pharma 0. 24 است که بسیار کمتر است. این نشانگر همبستگی ضعیف است.
  • به طور مشابه ، مقدار R پیرسون در مورد فولاد Jindal HDFC V/S که نشان دهنده همبستگی ضعیف بین سهام HDFC و فولاد جیندال است ، 0. 29 مشاهده می شود.

این نتایج فوق از توطئه های مشترک ما را به ارقام عددی مجهز می کند تا بینش هایی را که ما با مشاهده بصری نقشه جفت قبلاً به دست آورده ایم ، مشخص کنیم.

برحذر بودن! داشتن همبستگی تنها پارامتر برای تعیین اینکه سهام در یک نمونه کارها وجود دارد و کدام یک را حذف می کند ، نیست. چندین عامل دیگر در بازی وجود دارد. بهتر است به دنبال مشاوره در مورد متخصصان و تصمیم گیری آگاهانه باشید.

9. تجزیه و تحلیل نوسانات

نوسانات یکی از مهمترین ستون های بازارهای مالی است. گفته می شود اگر ارزش آن بتواند در مدت زمان کوتاهی تغییر کند ، سهام دارای نوسانات بالایی است. از طرف دیگر ، نوسانات پایین به این معنی است که ارزش سهام در طی یک دوره زمانی نسبتاً ثابت است. این حرکات به دلیل عوامل مختلفی از جمله تقاضا و عرضه ، احساسات ، اقدامات شرکت ها ، حرص و طمع و ترس و غیره است. از نظر ریاضی ، نوسانات با استفاده از یک اقدام آماری به نام "انحراف استاندارد" اندازه گیری می شود که عزیمت دارایی را از ارزش متوسط آن اندازه گیری می کند.

ما قبلاً بازده داخل (بازده روزانه) سهام HDFC و چندین سهام دیگر را محاسبه کرده ایم. در مرحله بعد ، میانگین نورد 7 روزه (که به آن میانگین متحرک نیز گفته می شود) بازده روزانه را محاسبه می کنیم ، سپس انحراف استاندارد (که ریشه مربع واریانس است) محاسبه می کنیم و مقادیر را ترسیم می کنیم. آرامش ، ما لازم نیست که همه اینها را به صورت دستی محاسبه کنیم. عملکرد پاندا "Rolling ()" و عملکرد "STD ()" کار را فقط در یک خط انجام می دهد!

hdfc_vol = pct_chg_df [‘hdfc. ns ']. نورد (7) . std ()*np. sqrt (7)hdfc_vol. plot (figsize = (15 ، 7))

در مرحله بعد ، تجزیه و تحلیل نوسانات مقایسه ای سهام HDFC با سهام Sunpharma و شاخص Nifty50 را مشاهده خواهیم کرد. درست مانند بالا ، ما میانگین نورد 7 روزه و انحراف استاندارد را محاسبه می کنیم ، همه در یک خط کد واحد. پاندا در واقع زندگی ما را آسان می کند!

نوسانات = pct_chg_df [['hdfc. ns' ، 'sunpharma. ns' ، '^nsei']]. نورد (7) . std ()*np. sqrt (7)نوسانات. PLOT (FIGSIZE = (15 ، 7))

می توانید مشاهده کنید که سهام Sun Pharma نسبت به سهام HDFC دارای نوسانات بالاتری است ، در حالی که شاخص Nifty دارای کمترین نوسانات است. این پیش بینی می شود زیرا Sun Pharma یک سهام میانه است و سهام میانی درپوش به طور کلی تمایل به نوسانات بالاتری در مقایسه با سهام بزرگ کلاه مانند HDFC دارد.

بسیاری از بازرگانان و سرمایه گذاران به دنبال سرمایه گذاری با نوسانات بالاتری هستند تا بتوانند سود بیشتری کسب کنند. اگر سهام حرکت نکند ، نه تنها نوسانات کم دارد بلکه از پتانسیل سود کم نیز برخوردار است. از طرف دیگر ، یک سهام یا امنیت دیگر با سطح نوسانات بسیار بالا می تواند از پتانسیل سود فوق العاده ای برخوردار باشد ، اما ریسک به همان اندازه زیاد است.

نهادهای پایان

هیچ استراتژی کامل وجود ندارد که بتواند سود سرمایه گذاری شما را تضمین کند. در دنیای واقعی ، عوامل مختلفی وجود دارد که معامله گران قبل از سرمایه گذاری در نظر می گیرند. با استفاده از استراتژی ها و تکنیک های مناسب ، ما فقط می توانیم شانس خود را بهبود بخشیم. من مشتاقانه منتظر هستم تا برخی از این استراتژی ها و تکنیک ها را به همراه تظاهرات با استفاده از پایتون در مقالات بعدی خود معرفی کنم.

منابع:

- - - - - - - - - - - - - - - - - - - - - - - - - - سلب مسئولیت - این مقاله صرفاً برای اهداف آموزشی است و هیچ شرکت یا سهام را تأیید نمی کند. لطفاً قبل از تصمیم گیری در رابطه با خرید یا فروش سهام ، با کارشناسان مشورت کنید.- - - - - - - - - - - - - - - - - - - - - - - - - - - -

استراتژی های مؤثر فارکس...
ما را در سایت استراتژی های مؤثر فارکس دنبال می کنید

برچسب : نویسنده : توران میرهادی بازدید : <-PostHit-> تاريخ : جمعه 30 تير 1402 ساعت: 17:07