بهینه سازی میانگین واریانس مارکویتز با پایتون

در اینجا توضیحی در مورد کد آمده است:

1. کتابخانه های لازم را وارد می کند – پانداها برای خواندن CSV، numpy برای ماتریس ها و scipy.optimize برای به حداقل رساندن.

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

3. بازده مورد انتظار از ستون ‘بازده مورد انتظار’ استخراج می شود. ماتریس کوواریانس به عنوان یک ماتریس مورب با استفاده از بازده مقدار دهی اولیه می شود.

4. تابع هدف برای بهینه سازی به عنوان کمینه کردن واریانس (قرب ماتریس کوواریانس * وزن) تعریف می شود.

5. یک تابع محدودیت برای اطمینان از مجموع وزن ها به 1 تعریف شده است.

6. حدود وزن به عنوان غیر منفی تعیین می شود.

7. حدس اولیه از وزن های مساوی تعریف شده است.

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

9. مسئله با استفاده از scipy.optimize.minimize حل شده است.

10. وزن های بهینه از نتیجه استخراج می شود.

11. وزن های بهینه برای هر سهام چاپ می شود.

بنابراین به طور خلاصه، مسئله بهینه‌سازی پورتفولیو میانگین واریانس را به‌عنوان یک مسئله کمینه‌سازی محدود با استفاده از scipy فرمول‌بندی و حل می‌کند تا وزن‌های پورتفولیوی را پیدا کند که واریانس موضوع وزن‌های مجموع 1 را به حداقل می‌رساند.

توضیح خط به خط کد:

 توضیح خط به خط :

1. پانداها را برای خواندن CSV و numpy را برای ماتریس ها وارد می کند:
– از pandas برای خواندن داده های CSV استفاده می شود
– numpy برای عملیات ماتریس استفاده خواهد شد

2. داده های CSV را در یک دیتافریم می خواند:
– pd.read_csv فایل را می خواند و در DataFrame pandas ذخیره می کند

3. بازده های مورد انتظار را در یک آرایه Numpy استخراج می کند:
– df[‘Expected return’] آن ستون را انتخاب می کند
– () .to_numpy آن را به آرایه Numpy تبدیل می کند

4. ماتریس کوواریانس را به صورت قطری اولیه می کند:
– np.diag یک ماتریس مورب ایجاد می کند
– از بازده مورد انتظار به عنوان عناصر مورب استفاده می کند

5. تابع هدف را تعریف می کند:
– np.dot وزن‌های transpose، covariance، weights را برمی‌گرداند
– این واریانس، هدف ما برای به حداقل رساندن را محاسبه می کند

6. محدودیت وزن ها را با جمع 1 تعریف می کند:
– جمع اوزان را برمی گرداند – 1

7. حد وزن ها را غیر منفی تعیین می کند:
– کرانه ها لیستی از حد پایین و بالایی هستند

8. حدس اولیه را با وزن های مساوی تنظیم می کند:
– از این نقطه بهینه سازی را شروع می کند

9. مسئله بهینه سازی را تعریف می کند:
– از هدف، مرزها، محدودیت ها، ارگ عبور می کند

10. بهینه سازی را با استفاده از scipy حل می کند:
– وزن های بهینه شده را برمی گرداند

11. وزن های بهینه را استخراج و چاپ می کند:
– حلقه ها را برای چاپ وزن هر سهم

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

دیدگاهتان را بنویسید