در مقاله آخر ، ما عملکرد سهام در یک نمونه کارها را مورد تجزیه و تحلیل قرار دادیم تا تعیین کنیم که بهترین عملکرد را در مناطقی مانند بازده ، نسبت شارپ (ریسک به پاداش) و سایر معیارها انجام می دهد. در این پست وبلاگ ، ما تئوری مالی را با داده های دنیای واقعی آمیخته و یاد می گیریم که چگونه یک نمونه کارها بهینه بسازیم. ما شاهد اجرای آن در پایتون خواهیم بود.
چه موضوعاتی در این وبلاگ پوشش داده خواهد شد
- نظریه مدرن نمونه کارها
- بهینه سازی نمونه کارها (ایجاد نمونه کارها بهینه با تعیین وزن)
- گرفتن تخصیص گسسته
سلب مسئولیت: مطالب موجود در این مقاله صرفاً آموزشی است و نباید به عنوان مشاوره سرمایه گذاری حرفه ای در نظر گرفته شود. فرض این مقاله نشان دادن چگونگی "ثروتمند شدن سریع" نیست. ایده این مقاله این است که شما را شروع کرده و امکانات را با پایتون به نمایش بگذارید.
تئوری:
نظریه نمونه کارها مدرن ، یا MPT (همچنین به عنوان تجزیه و تحلیل میانگین واریانس شناخته می شود) ، یک چارچوب ریاضی برای ساخت یک نمونه کارها از دارایی ها برای به حداکثر رساندن بازده مورد انتظار برای سطح معینی از ریسک بازار (انحراف استاندارد بازده نمونه کارها) است. از آنجا که ریسک با تنوع در سود همراه است ، می توانیم با استفاده از اقدامات پراکندگی مانند واریانس و انحراف استاندارد ، آن را تعیین کنیم.
تجارت بین ریسک و بازگشت اساس ساخت و ساز نمونه کارها را تشکیل می دهد.
ضروری است که هرچه ریسک بالاتر باشد ، بازده بالاتر خواهد بود ، بنابراین سرمایه گذاران مختلف تجارت را متفاوت بر اساس ویژگی های گریز از خطر فردی ارزیابی می کنند.
با این حال ، همانطور که در مقاله آخر دیدیم ، می توان در ضمن افزایش بازده از طریق تنوع کارآمد ، یعنی با ترکیب دارایی های همبستگی منفی ، خطر را کاهش داد. می توان یک مجموعه کارآمد از اوراق بهادار را ساخت که کمترین ریسک برای بازده معین یا بالاترین بازده برای سطح مشخصی از ریسک دارند. سرمایه گذاران بسته به ترجیحات بازده ریسک آنها می توانند در این مرز کارآمد (ما در مورد این موضوع صحبت خواهیم کرد) انتخاب کنند. این فرآیند ساخت یک مجموعه کارآمد از اوراق بهادار به عنوان بهینه سازی نمونه کارها ، که از نظر ریاضی یک کار کاملاً پیچیده است ، نامگذاری شده است.
بازده مورد انتظار نمونه کارها به عنوان مبلغ وزنی بازده دارایی های فردی محاسبه می شود. ریسک نمونه کارها به نسبت (وزن) سرمایه گذاری شده در هر امنیت ، خطرات فردی آنها و همبستگی یا کواریانس بستگی دارد. این دو اصطلاح به صورت متقابل استفاده می شوند ، اما تفاوت بین این دو وجود دارد ،
- کواریانس - کواریانس می تواند میزان دو متغیر تصادفی با هم متفاوت باشد.
- همبستگی - مشکل کواریانس این است که استاندارد نشده است و انجام این کار ، ما کواریانس را بین دو متغیر با انحراف استاندارد آنها تقسیم می کنیم ، که این ضریب همبستگی را از 1 تا 1 به ما می دهد.
یک مرز کارآمد نشان دهنده تمام ترکیبات پرتفوی ممکن است. دارای حداکثر نمونه کارها بازده است که از یک دارایی واحد با بالاترین بازده در سمت راست شدید و حداقل نمونه کارها واریانس در سمت چپ شدید تشکیل شده است. بازده نشان دهنده محور y است ، در حالی که سطح خطر بر روی محور x قرار دارد.

بیایید با پایتون شروع کنیم!
ماژول مورد استفاده:
Pyportfolioopt:
Pyportfolioopt بر این عقیده ساخته شده است که بسیاری از سرمایه گذاران مفاهیم گسترده مربوط به بهینه سازی نمونه کارها را درک می کنند اما تمایلی به حل مشکلات پیچیده بهینه سازی ریاضی ندارند. این می تواند با استفاده از تکنیک های کلاسیک بهینه سازی واریانس کلاسیک ، که ما نیز از آن استفاده خواهیم کرد ، بهینه شود.
بنابراین ، به طور خلاصه ، Pyportfolioopt کتابخانه ای است که روش های بهینه سازی نمونه کارها را پیاده سازی می کند.
اگر می خواهید در مورد آن اطلاعات بیشتری کسب کنید ، می توانید به مستندات PyportfolioOpt مراجعه کنید
اکنون که با این تئوری آشنا هستید و دانش اساسی در مورد ماژول PyportfolioOpt کسب کرده اید ، می توانیم به بخش برنامه نویسی برویم.
زمان کدگذاری!
1. نصب کتابخانه های مورد نیاز
ترمینال را باز کرده و محیط Conda را برای نصب بسته های زیر فعال کنید.
PIP Pyportfolioopt را نصب کنید

2. وارد کردن کتابخانه ها
بسته های مختلفی مانند پاندا ، Numpy و سایر موارد وجود دارد که ما از آنها استفاده خواهیم کرد. اگر آنها را نصب نکرده اید ، می توانید آنها را با PIP انجام دهید
وارد كردناعماقasNPوارد كردنپانداasPDوارد كردنmatplotlib. pyplotasPLTوارد كردندریاییasSBاز جانبزمان قراروارد كردنتاریخاز جانبنایوارد كردنget_historyasgh plt. style. use ("FiveThirtyEight") از جانبpypfopt. effific_frontierوارد كردنسرپرست کارآمداز جانبپيپفوپتوارد كردنModels Risk_modelsاز جانبپيپفوپتوارد كردنانتظار می روداز جانبpypfopt. discrete_allocationوارد كردنجابجایی گسسته ، get_latest_prices
اگر مقاله قبلی را نخوانده اید ، می توانید به این لینک بروید. ما با داده های استخراج شده با کتابخانه NSEPY ادامه می دهیم. احساس تنبلی می کنید؟مجموعه داده های نمونه را از این لینک بارگیری کنید.
3. بهینه سازی
# محاسبه بازده سالانه و ماتریس کواریانس نمونه سالانه بازده دارایی های روزانهمیانگین = مورد انتظار_ retus. emean_historical_retu (df) s = Risk_models. sample_cov (df)# برای نمونه ماتریس کواریانس S
خروجی:

کواریانس اندازه گیری گسترش بین اعداد در یک مجموعه داده است ، یعنی اندازه گیری می کند که هر تعداد در مجموعه داده ها از میانگین چقدر است. هرچه واریانس قیمت دارایی بیشتر باشد ، دارایی های ریسک بیشتر و بازده بالاتری نیز بیشتر می شوند. متداول ترین مدل ریسک ماتریس کواریانس است که نوسانات دارایی و وابستگی مشترک آنها را توصیف می کند. این مهم است زیرا یکی از اصول متنوع سازی این است که با ساختن بسیاری از شرط های نامربوط ، خطر را می توان کاهش داد (همبستگی چیزی نیست جز نسخه استاندارد کواریانس)
plt. style. use ('ggplot') fig = plt. figure () sb. heatmap (s ، xticklabels = s. columns ، yticklabels = s. columns ، cmap ='rdbu_r'، Aot =درست است، واقعی، خط عرض =0.5) چاپ("کواریانس بین بازده ساده روزانه سهام در نمونه کارها شما") plt. show (شکل)
خروجی:

EF = کارآمد (میانگین ، S) وزن = ef. max_sharpe ()#برای به حداکثر رساندن نسبت شارپ #OptimizationCleaned_weights = ef. Clean_weights ()#برای تمیز کردن وزن خام # کلیدها را بگیرید و آنها را در یک لیست ذخیره کنیدبرچسب ها = لیست (cleaned_weights. keys ())# مقادیر را بدست آورید و آنها را در یک لیست ذخیره کنیدمقادیر = لیست (cleaned_weights. values ()) شکل ، ax = plt. subplots () ax. pie (مقادیر ، برچسب ها = برچسب ها ، autopct ='٪ 1. 0f ٪٪') چاپ("تخصیص نمونه کارها") plt. show (شکل)
نسبت شارپ توصیف می کند که بازده اضافی برای نوسانات اضافی که برای نگه داشتن یک دارایی خطرناک تحمل می کنید ، دریافت می کنید. پس از تعیین میانگین بازده تاریخی ، ما با تعیین وضعیت بهینه سازی به عنوان "حداکثر شارپ" ، مرزهای کارآمد را ارزیابی می کنیم تا وزنه هایی به گونه ای داشته باشد که نسبت شارپ را به حداکثر برساند. سپس ، ما در حال تمیز کردن وزنهای خام هستیم ، آنها را دور می کنیم و وزنه هایی را تعیین می کنیم که مقادیر مطلق آنها زیر کاهش 0 ٪ باشد.
خروجی:

فقط می دانید ، سهام همپوشانی در تصویر فوق Dabur و Icicibank است ، هر دو آنها 0 ٪ تخصیص داده اند ، بنابراین در نمودار پای همپوشانی دارند. بهترین راه برای نمایندگی نیست ، درست است؟در نظرات به ما بگویید که چگونه می توانیم این کار را برطرف کنیم ، و شما در وبلاگ ذکر خواهید کرد :)
عملکرد نمونه کارها:
ef. portfolio_performance (verbose =درست است، واقعی)

گرفتن تخصیص گسسته:
portfolio_amount = float (ورودی ("مبلغی را که می خواهید سرمایه گذاری کنید وارد کنید:")) ifportfolio_amount! ='' : # تخصیص گسسته هر سهم در هر سهام را دریافت کنیدآخرین_Prices = get_latest_prices (df) وزنه ها = Cleaned_weights create_allocation = discretealLocation (وزنه ها ، آخرین_Prices ، total_portfolio_value = int (portfolio_amount)) تخصیص ، باقیمانده = گسسته_آلود . lp_portofio () گنجانیده شده_ alist_allist_list = []]برایسمبلinتخصیص: CRESETE_ALLOCATION_LIST. APPEND (Allocation. get (نماد)) PORTFOLIO_DF = PD. DATAFRAME (ستون ها = [["تیک" , "تعداد سهام برای خرید"]) Portfolio_df ["تیک"] = Portfolio_df Allocation ["تعداد سهام برای خرید"] = چاپ CUSTRE_ALLOCATION_LIST ("تعداد سهام برای خرید با مقدار ₨"+ str (portfolio_amount)) چاپ (portfolio_df) چاپ ("بودجه باقی مانده با شما خواهد بود: ₨"، int (باقیمانده))
ما در واقع مبلغی را که می خواهند سرمایه گذاری کنند و بر اساس این ورودی و آخرین قیمت ها ، از کاربر استفاده می کنیم ، تعداد سهام خریداری شده را تعیین می کند.
خروجی:

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

برای حل این خطا ، دستور زیر را در ترمینال anaconda خود وارد کرده و هسته را مجدداً راه اندازی کنید یا اسکریپت را دوباره اجرا کنید و باید کار کند.
نصب Cond a-C Cond a-Forge CVXOPT
4. بسته بندی آن
و با آن ، این یک بسته بندی است!
ساخت و ساز نمونه کارها در مورد مدیریت سرمایه گذاری جنبه بسیار مهمی است. شناسایی دارایی های بالقوه اولین قدم برای ایجاد یک سبد بهینه است که پس از آن عوامل مهمی مانند ریسک و بازده مورد انتظار به تصویر می آیند. با استفاده از Pyportfolioopt ، می توان مشکلات بهینه سازی خود را با اهداف ، داده ها و محدودیت های سفارشی ایجاد کرد ، که کاملاً قدرتمند است. جدا از آن ، می توان از مدل های مختلفی استفاده کرد.
همانطور که دیدیم ، این تئوری بسیار گسترده است ، و به نظر می رسد که هضم در یک حرکت بسیار زیاد باشد ، با این وجود ، امیدوارم که شما از این مقاله لذت ببرید!
همچنین می توانید به پیوند GitHub در اینجا دسترسی پیدا کنید تا کل کد را در یک پرونده واحد مشاهده کنید.
با تشکر از شما برای خواندن ؛اگر تاکنون به آن رسیده اید ، لطفاً مقاله را دوست داشته باشید. این مرا تشویق می کند تا مقالات بیشتری بنویسم. پیشنهادات ارزشمند خود را به اشتراک بگذارید. من واقعاً از بازخورد صادقانه شما قدردانی می کنم!
لطفاً در صورت داشتن هرگونه سؤالی در این باره یا نیاز به اطلاعات بیشتر داشته باشید ، احساس راحتی کنید و به آن وصل شوید. برای به روزرسانی های خودکار در مورد مقالات آینده ، مشترک شدن در لیست پستی من را در نظر بگیرید. استراتژی های مؤثر فارکس...
ما را در سایت استراتژی های مؤثر فارکس دنبال می کنید
برچسب :
نویسنده : توران میرهادی
بازدید : <-PostHit->
تاريخ : جمعه
10 شهريور
1402 ساعت: 17:06