بهترین نمونه کارها سرمایه گذاری از طریق شبیه سازی مونت کارلو در پایتون

ساخت وبلاگ

یافتن یک نمونه کارها بهینه سرمایه گذاری با استفاده از شبیه سازی مونت کارلو در پایتون از ابتدا تا انتها

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

در این مقاله دانش مالی ، ریاضی و برنامه نویسی مورد نیاز مدیریت سرمایه گذاری به روشی آسان برای درک توضیح داده خواهد شد.

از این رو ، این مقاله برای دانشمندان داده ، برنامه نویسان ، ریاضیدانان و کسانی که علاقه مند به امور مالی هستند مفید است.

لطفاً fintechexplained d isClaimer را بخوانید. این برنامه براساس نظرات من است و آنها می توانند اشتباه کنند. همیشه قبل از سرمایه گذاری پول خود ، از یک مشاور مالی حرفه ای مشاوره بگیرید.

1. ما در تلاش برای دستیابی به چه چیزی هستیم؟

بیایید در نظر بگیریم که می خواهم 1000 دلار برای یک سال سرمایه گذاری کنم. علاقه ای که بانک محلی خیابان من برای واریز پول برای یک دوره ثابت 1 ساله ارائه می دهد ، کم است. از این رو ، من از بازگشت سالانه پیشنهادات آن راضی نیستم. در نتیجه ، من تصمیم گرفته ام با خرید سهام شرکت های مختلف با 1 هزار دلار من در سهام سرمایه گذاری کنم. اگرچه آنها به طور مقایسه ای خطرناک تر هستند ، اما به طور بالقوه می توانند در ازای ایجاد خطر بیشتر به من کمک کنم. تا اینجای کار خیلی خوبه.

من می خواهم پول سرمایه گذاری را به گونه ای سرمایه گذاری کنم که بتوانم با کمترین میزان ریسک ممکن ، بالاترین میزان بازده را بدست آورم. برای من ، این نمونه کارها بهینه است و برنامه ای که من در این مقاله نشان خواهم داد ، توضیح می دهد که چگونه می توانیم به آن برسیم.

2. مفهوم در سطح بالایی

من 7 شرکت بالقوه را انتخاب کرده ام و می خواهم با خرید سهام آنها روش بهینه برای سرمایه گذاری پول خود را پیدا کنم.

به طور خلاصه ، من مراحل زیر را انجام می دهم:

  • من علاقه مند به سرمایه گذاری 1،000 دلار در 7 سهام شرکت زیر (دارایی) هستم: ZM ، Uber ، SWI ، RNG ، CRWD ، کار ، Symc.

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

  • حالا بگذارید این سوال را بپرسیم ؛چه مقدار از پول سرمایه گذاری 1000 دلاری من را باید در خرید هر یک از این سهام اختصاص دهم؟به طور سنتی ، سرمایه گذاران جدید به طور مساوی در شرکت های هدف خود سرمایه گذاری می کنند ، اما دارایی ها می توانند با یکدیگر جمع شوند و برخی از دارایی ها ممکن است با یکدیگر همبستگی منفی داشته باشند.

بنابراین ، ما باید نمونه کارها بهینه را پیدا کنیم. نمونه کارها بهینه موردی است که بالاترین بازده را برای کمترین خطر ایجاد می کند.

  • تولید هر نمونه کارها ممکن می تواند بسیار زیاد باشد. در نتیجه ، من قصد دارم از روش مونت کارلو برای تولید 10'000+ پرتفوی مختلف در پایتون استفاده کنم.

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

  • برای هر نمونه کارها ، بازده و خطر آن را ایجاد می کنم. از این رو ، من باید قیمت سهام هر یک از دارایی های موجود در نمونه کارها را بدست آورم.
  • سرانجام ، من نسبت بازده/ریسک را تولید می کنم و با بالاترین نسبت بازده/ریسک از پرتفوی 10'000+ نمونه کارها را می گیرم.

این یک نمونه کارها بهینه انتخابی ما برای سرمایه گذاری خواهد بود.

توجه: از آنجا که من برنامه های آینده بزرگی برای این برنامه دارم ، من به معمار می روم و برنامه را به صورت مؤلفه طراحی می کنم تا در آینده به راحتی برنامه افزایش یابد. من همچنین در این مقاله معماری و طراحی برنامه را توضیح خواهم داد.

3. بیایید شروع کنیم: کلاه مالی من را روشن کنید

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

این مقاله را بخوانید که نحوه عملکرد مدیریت سرمایه گذاری را توضیح می دهد

مدیریت سرمایه گذاری و عوامل

درک کنید که چگونه پول خود را عاقلانه سرمایه گذاری کنید

4. 7 مرحله از روند

در سطح بالایی ، ما باید هفت مرحله زیر را انجام دهیم که در زیر نشان داده شده است:

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

5- بیایید در مرحله 5 روند فوق تمرکز کنیم - معیارهای ریسک و بازگشت

برای هر دارایی ، ما قصد داریم اقدامات زیر را انجام دهیم:

5. 1بازده دارایی

اولین قدم محاسبه بازده دارایی ها در نمونه کارها شما است.

برای اینکه ما بازده دارایی را محاسبه کنیم ، باید دو مرحله زیر را انجام دهیم:

  1. ما باید قیمت های تاریخی روزانه دارایی ها را بدست آوریم

2. سپس ما باید با محاسبه معادله زیر بازده هندسی آنها را محاسبه کنیم:

بازده ها به گونه ای تولید می شوند که بتوانیم قیمت سهام را استاندارد کنیم تا بتوان آنها را با یکدیگر مقایسه کرد.

5. 2. دارایی انتظار می رود میانگین بازده

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

برای محاسبه میانگین بازده دارایی ، ما به میانگین بازده هر سهام نیاز داریم:

5. 3. از دارایی گرفته تا نمونه کارها بازده مورد انتظار

اکنون آماده محاسبه بازده مورد انتظار نمونه کارها هستند. این نمونه کارها دارایی ها را در کنار هم نگه می دارد. دارایی های موجود در نمونه کارها بخشی از کل مبلغ سرمایه گذاری اختصاص یافته است. به عنوان مثال ، نمونه کارها ممکن است 40 ٪ از دارایی ABC و 60 ٪ از دارایی DEF را در خود جای دهد.

از بازده مورد انتظار دارایی ، می توانیم بازده مورد انتظار نمونه کارها را محاسبه کنیم. با محاسبه میانگین وزنی محاسبه می شود:

5. 4. ریسک نمونه کارها

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

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

نوسانات در این مورد انحراف استاندارد یعنی خطر کل نمونه کارها است.

انحراف استاندارد پراکندگی مقادیر اطراف را اندازه گیری می کند.

5. 5 یافتن نمونه کارها بهینه با استفاده از نسبت شارپ

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

مرحله آخر محاسبه نسبت شارپ هر یک از پرتفوی ها است. نسبت شارپ میزان بازده اضافی بیش از نرخ ریسک به عنوان اندازه گیری مربوط به خطر است:

اگر می خواهید در مورد اقدامات عملکرد سرمایه گذاری بیشتر بخوانید ، این مقاله را بخوانید:

چگونه عملکرد سرمایه گذاری را اندازه گیری می کنیم؟

توضیح چگونگی تخمین و محاسبه عملکرد سرمایه گذاری

6. اجرای پایان به پایان 7 مرحله

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

در این بخش ، مفهوم را با استفاده از نمودارهای بصری که برنامه برای هر یک از مراحل تولید می کند ، نشان می دهم تا بتوانیم مفاهیم را بهتر درک کنیم.

توجه: تمام داده هایی که می خواهم در زیر توضیح دهم به طور خودکار در یک صفحه گسترده اکسل توسط کد ذخیره می شود.

6. 1 نتیجه نهایی: نمایش نمونه کارها بهینه

تاکنون فهمیده ایم که این برنامه قیمت سهام تاریخی را برای 7 شرکت منتخب ما واگذار می کند. سپس با محاسبه نسبت بازده ، ریسک و شارپ هر یک از پرتفوی ها ، پرتفوی 10'000+ تولید می کند.

در میان این پرتفوی ها ، سه پرتفوی زیر را نشان می دهد:

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

از این رو ، در کل پرتفوی 10'001 وجود خواهد داشت:

  1. نمونه کارها با دارایی به همان اندازه اختصاص یافته
  2. 10،000 اوراق بهادار تولید شده به طور تصادفی

هنگامی که من برنامه را اجرا کردم ، پرتفوی 10'001 با تجارت بازده ریسک آنها نمایش داده می شود:

بیایید نمودار را مرور کنیم:

هر دایره یک نمونه کارها منحصر به فرد است. محور x ریسک است و محور y بازده نمونه کارها است. رنگ نمونه کارها نسبت شارپ است.

می بینیم که رابطه کاملاً خطی نیست. هنگامی که یک سرمایه گذار دارایی ها را با هم در یک نمونه کارها ترکیب می کند ، جمع آوری دارایی ها می تواند به ما در متنوع سازی ریسک کمک کند و این به عنوان تجارت بازگرداندن ریسک شناخته می شود. سه الماس در نمودار وجود دارد:

  1. نمونه کارها الماس سبز: این نمونه کارها بهینه انتخاب شده ما است. برای هر نمونه کارها ، ما نسبت شارپ را تولید کردیم. این نمونه کارها با حداکثر نسبت شارپ است. این بالاترین بازده را برای کمترین خطر ممکن به ما داد. این نمونه کارها به عنوان نمونه کارها 2187 نامگذاری شده است.
  2. نمونه کارها الماس سیاه: این نمونه کارها به همان اندازه اختصاص داده شده ما است. می توانیم ببینیم که نمونه کارها با تخصیص مساوی در جایی در وسط قرار دارد. به اندازه نمونه کارها 2187 که به عنوان الماس سبز مشخص شده است ، خوب نیست. ما همچنین می توانیم شاهد تعداد زیادی اوراق بهادار باشیم که بازده بالاتری را برای همان ریسکی که در صورت سرمایه گذاری خود به طور یکسان سرمایه گذاری می کنیم ، ایجاد می کنند. از این رو ، این بدان معناست که این برنامه اوراق بهادار برتر را برای ما ایجاد کرده است. در واقع ، تمام پرتفوی هایی که بالاتر از الماس سیاه در محور y با همان مقدار محور x هستند ، بهتر از نمونه کارها به همان اندازه اختصاص یافته هستند زیرا برای همان خطر ، بازده بالاتری ایجاد می کنند.
  3. نمونه کارها Red Diamond: این نمونه کارها است که کمترین خطر را ایجاد می کند.

این جزئیات نمونه کارها 2187 است.

دو نکته اصلی که باید به آن توجه داشته باشید عبارتند از:

  1. این به ما پیشنهاد می کند که در کار سرمایه گذاری نکنیم.
  2. همچنین برجسته است که ما باید بیشتر پول خود را در RNG و CRWD سرمایه گذاری کنیم.

بازده نمونه کارها از نمونه کارها با توجه به خطر 41 ٪ 130 ٪ است. نسبت شارپ تقریباً 316 ٪ است (= 41/130).

6. 2 مرحله اول واکشی قیمت سهام است

ما یک مؤلفه ساختیم که 3 سال گذشته قیمت سهام تاریخی را بدست آورد:

قیمت سهام داده های سری زمانی است.

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

همانطور که می بینید ، ما به سادگی نمی توانیم ZM را با SYMC مقایسه کنیم زیرا قیمت سهام از نظر بزرگی متفاوت است. از این رو ، ما باید بازده را برای استاندارد سازی قیمت سهام محاسبه کنیم.

6. 3 سپس ما باید بازده ها را تولید کنیم

ما بازده هندسی روزانه را محاسبه کرده ایم:

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

توجه: آیا بازده های تاریخی انتخاب درستی است؟آیا باید در عوض اقدامات مختلفی ایجاد کنیم؟من در آینده یک برنامه برتر را پیاده سازی خواهم کرد که نشان می دهد چگونه می توانیم به جای آن بازده های وزنی را اجرا کنیم.

6. 4 از بازده ، ما باید ماتریس کواریانس را تولید کنیم

کد سپس ماتریس کواریانس را آماده می کند:

ماتریس کواریانس در برگه کواریانس صفحه گسترده اکسل همانطور که در زیر آمده است ذخیره می شود:

6. 5 مرحله بعدی در مورد تولید اوراق بهادار 10'001 است

این کد 10 001 اوراق بهادار تولید می کند که در آن یکی از پرتفوی ها یکی از مواردی است که ما سرمایه گذاری را به طور مساوی با 7 دارایی اختصاص می دهیم. محدودیتی برای همه 10،000 اوراق بهادار اعمال شده است که مبلغ تخصیص آنها 100 ٪ است. این بدان معنی است که ما فقط قصد خرید دارایی ها را داریم.

کد نمونه کارها را در یک نمودار بازده ریسک قرار می دهد ، جایی که محور y بازده نمونه کارها و محور X است ، خطر این نمونه کارها است.

می بینیم که سه پرتفوی مشخص شده اند. الماس سبز نمونه کارها بهینه ما است.

اوراق بهادار در برگه Montecarloportfolios از صفحه گسترده اکسل همانطور که در زیر آمده است ذخیره می شوند:

سپس می توانیم تخصیص نمونه کارها 2187 (نمونه کارها بهینه ما را که در نمودار ذکر شده است) پیدا کنیم و سپس در نمونه کارها سرمایه گذاری کنیم.

نسبت های خطر ، بازده و شارپ همه اوراق بهادار تولید شده در برگه Montecarloportfolioratios همانطور که در زیر آمده است ذخیره می شوند:

7. بیایید برنامه را طراحی کنیم: قرار دادن کلاه فناوری من

سرانجام ، من قصد دارم کدی را که اجرا کردم مستند کنم.

من این قسمت را با توضیح نحوه معمار و طراحی برنامه شروع می کنم. من هر مؤلفه را با جزئیات به همراه کد توضیح خواهم داد.

هسته اصلی طراحی این برنامه فقط در یک مفهوم می چرخد:

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

7. 1 ساختار کاربردی

لطفاً با کلیک بر روی اینجا به کل کد موجود در GitHub دسترسی پیدا کنید

ساختار پوشه زیر در C: Drive ایجاد شده است.

پرونده های پایتون زیر در پوشه کد قرار می گیرند

ما در مقالات بعدی روی پوشه اسناد و آزمایشات کار خواهیم کرد.

7. 2 بیایید هر یک از پرونده های پایتون را درک کنیم

بسته های پایتون

1. تنظیمات پیکربندی

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

به عنوان یک نتیجه ، من منطقه ای را در کدی که تنظیمات قابل تنظیم در آن ذخیره شده است ، پیاده سازی کرده ام:

نام پرونده: settings. py

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

هنگامی که کد اجرا شد ، داده ها را در یک صفحه گسترده اکسل که در PortfolioOptimisationPath = ‘C: Temp PortfolioOptimisation. xlsx" ذخیره می شود ، وارد می کند.

2. کارخانه شیء

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

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

نام پرونده: object_factory. py

به عنوان مثال ، در مرحله بعدی ، می توانیم یک کلاس web_companies_extractor را اجرا کنیم که با ضبط صفحه وب ویکی پدیا ، نام شرکت های NASDAQ 100 را بدست می آورد. تمام کاری که ما باید انجام دهیم این است که Web_Companies_Extractor را از عملکرد get_companies_extractor () بدون تغییر بقیه کد برگردانیم.

3. شرکت های استخراج کننده برای دریافت شرکت های هدف

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

نام پرونده: شرکت ها_ extractor. py

در این مثال ، استخراج کننده شرکت های استاتیک ، همانطور که از نام آن پیداست ، لیست استاتیک شرکت هایی را که در پرونده Settings. py پیکربندی شده اند ، برمی گرداند.

4- قیمت استخراج کننده برای استخراج قیمت دارایی ها

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

نام پرونده: price_extractor. py

5. ماشین حساب معیارها برای محاسبه نسبت شارپ و اوراق بهادار هدف ما

نام پرونده: CALCULS. PY کلاس اول

6. ماشین حساب بازده ریسک برای محاسبه ریسک و بازده

کدی که ریسک و بازده را محاسبه می کند در کلاس Risk_retu_calculator قرار دارد.

نام پرونده: CALCULS. PY کلاس اول

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

7. شبیه ساز مونت کارلو برای تولید اوراق بهادار

این کلاس اصلی است که پرتفوی 10'001 را برای ما ایجاد می کند.

نام پرونده: monte_carlo_simulator. py

نکته مهم این است که با توابع ریسک و بازگشت ، فوری می شود. این کار به سادگی یک نمونه کارها با تخصیص مساوی و 10 000 پرتفوی با تخصیص تولید شده به طور تصادفی ایجاد می کند. مبلغ تخصیص برای هر نمونه کارها 100 ٪ است ، دلالت بر این دارد که ما فقط علاقه مند به خرید دارایی هستیم.

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

8. نمودار نقشه برداری برای ترسیم اوراق بهادار و مارک بهترین اوراق بهادار

این پرونده نمودارهای لازم را برای ما آماده می کند.

نام پرونده: chart_plotter. py

9. مخزن پرونده برای ذخیره تمام داده ها در یک پرونده

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

نام پرونده: file_repository. py

10. آهنگسازان

Monte Carlo Simulator برای هر یک از پرتفوی ها در یک قاب داده با شکل زیر ، تخصیص ها را به همراه خطر ، بازگشت و نسبت شارپ برای هر یک از پرتفوی ها ایجاد می کند:

با این حال ، طرحر نمودار انتظار آرایه های 3x1d از خطر ، بازده و نسبت شارپ را دارد:

Mapper داده هایی را که خروجی شبیه ساز مونت کارلو در قالب ورودی مورد نیاز برای طرحر نمودار است ، نقشه می کند.

این نمونه ای از یک الگوی مسئولیت واحد است. هر مؤلفه/کلاس مسئولیت واضح خود را دارد. این ویژگی به ما امکان می دهد تا در آینده برنامه را به راحتی حفظ و گسترش دهیم.

نام پرونده: sappers. py

11. قسمت نهایی - پرونده اصلی - چسب

وقتی مقاله را شروع کردیم ، 7 مرحله از روند را تشریح کردیم.

پرونده اصلی مراحل را به ترتیب درست اجرا می کند

چگونه به آن دست یافتیم؟

ما یک فایل main. py را اجرا کردیم که تمام مراحل فوق را اجرا می کند:

توجه داشته باشید که عملکرد generate_optimum_portfolio () مراحل را به ترتیب درست انجام می دهد:

  1. ابتدا اشیاء مورد نیاز را فوری می کند
  2. برای بدست آوردن شرکت های مورد نیاز ، استخراج کننده شرکت ها را بدست می آورد.
  3. برای بازیابی قیمت دارایی ، استخراج کننده قیمت ها را دریافت می کند
  4. بازده روزانه دارایی ها را به همراه کواریانس محاسبه می کند
  5. برای تولید اوراق بهادار به همراه بازگشت ، خطر و نسبت شارپ ، شبیه ساز مونت کارلو را صدا می کند.
  6. سپس نمودار ترسیم کننده داده های مورد نیاز را ترسیم می کند و مخزن پرونده داده ها را برای تجزیه و تحلیل ذخیره می کند.

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

7. 3. کد کامل در GitHub

لطفاً با کلیک بر روی اینجا به کل کد موجود در GitHub دسترسی پیدا کنید

8. مراحل بعدی

این یک راه حل کار است که ما را به یک نمونه کارها بهینه تبدیل می کند. اکنون که این چارچوب ساخته شده است ، می توانیم به راحتی آن را تقویت کنیم. من ویژگی های زیر را اضافه می کنم:

  1. برای ساختن یک مرز کارآمد از یک بهینه ساز استفاده کنید. این امر تعدادی از پرتفوی برتر را از طریق تکنیک های بهینه سازی پیشرفته تولید می کند.
  2. Extractor شرکت ها را برای تولید نمونه کارها که شامل کلیه شرکت های NASDAQ 100 است ، گسترش دهید.
  3. اقدامات ریسک برتر و بازگشت را به همراه ماتریس کواریانس آینده نگر اجرا کنید.
  4. از مفاهیم علوم داده و یادگیری ماشین استفاده کنید تا به ما در دستیابی به یک نمونه کارها برتر و بهینه کمک کنیم.
  5. برنامه ای بسازید که Top X را پیدا کند ، به عنوان مثال10 ، شرکت ها برای ما و سپس برنامه نمونه کارها بهینه را اجرا می کنند.

9. خلاصه

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

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

در این مقاله همچنین دانش مالی ، ریاضی و برنامه نویسی مورد نیاز مدیریت سرمایه گذاری به روشی آسان برای درک توضیح داده شده است.

امیدوارم کمک کند

توجه داشته باشید از ویرایشگران Data Science: در حالی که ما به نویسندگان مستقل اجازه می دهیم مقالات را مطابق با قوانین و دستورالعمل های خود منتشر کنند ، ما سهم هر نویسنده را تأیید نمی کنیم. شما نباید بدون اینکه به دنبال مشاوره حرفه ای باشید ، به آثار نویسنده اعتماد کنید. برای جزئیات بیشتر به اصطلاحات خواننده ما مراجعه کنید.

استراتژی‌های اسکالپ...
ما را در سایت استراتژی‌های اسکالپ دنبال می کنید

برچسب : نویسنده : ناصر تقوایی بازدید : 54 تاريخ : جمعه 5 خرداد 1402 ساعت: 23:15