دو پست جدید وبلاگ من در مورد مقیاس بندی بینش تحلیلی با پایتون بود. قسمت 1 را می توان در اینجا یافت و قسمت 2 را می توان در اینجا یافت. چندین ماه از آن زمان می گذرد که من آن را نوشتم ، عمدتا به دلیل این واقعیت که من خانواده ام را به سیاتل منتقل کردم تا در ماه نوامبر به آمازون بپیوندم. من بیشتر وقت را صرف پروژه اصلی خود در تعیین برنامه جهانی جهانی و نقشه راه اطلاعات مربوط به کسب و کار خود کرده ام.
قبل از عزیمت من به شرکت سابق من ، Flosports ، ما در حال بازنگری در گزارش های تجزیه و تحلیل خود در سراسر سازمان بودیم (داده ها ، بازاریابی ، محصول و همکاران) و بخشی از این تعمیرات اساسی شامل گزارشگری مالی ما بود. در حالی که من در اوایل اجرای آن کار را ترک کردم ، طی چند ماه گذشته ، من به استفاده گسترده از پایتون برای تجزیه و تحلیل های مالی ، به ویژه پاندا ، ادامه دادم. در این پست ، من به اشتراک می گذارم که چگونه از منابع آنلاین بسیار مفید ، API مالی یاهو استفاده کردم (به یک کار در اطراف نیاز دارد و ممکن است نیاز به جایگزینی منبع داده آینده داشته باشد) ، و نوت بوک Jupyter تا عمدتاً ردیابی و معیار عملکرد یک نمونه کارها سهام سهام را خودکار کند. بشر
نمای کلی PME و معیار عملکرد سهام فردی
من به عنوان یک پیش زمینه سریع ، من از سال 2002 در سبد سهام خودم سرمایه گذاری کرده ام و چند سال پیش یک مدل مالی برای نمونه کارها خود تهیه کردم. سالها است که من قیمت های تاریخی را بارگیری می کنم و داده ها را در مدل مالی بارگیری می کنم - در حالی که کارگزاران آنلاین بازده های تحقق یافته و غیر واقعی را محاسبه می کنند ، و همچنین درآمد و سود سهام ، دوست دارم داده های تاریخی را در مدل داشته باشم زیرا من تجزیه و تحلیل های خودم را برای ارزیابی انجام می دهممواضعیک دیدگاه / گزارش که من هرگز از کارگزاران و خدمات آنلاین پیدا نکرده ام ، یک تحلیل شبیه به "بازار عمومی" است. به طور خلاصه ، معادل بازار عمومی (PME) مجموعه ای از تجزیه و تحلیل های مورد استفاده در صنعت سهام خصوصی برای مقایسه عملکرد صندوق سهام خصوصی نسبت به معیار صنعت است. جزئیات بیشتر در اینجا
مرتبط ، اکثریت قریب به اتفاق مدیران نمونه کارها سهام قادر به انتخاب نمونه کارها از سهام نیستند که از بازار وسیع تر ، به عنوان مثال ، S& P 500 ، در طول مدت طولانی مدت (بهتر است (از بازار وسیع تر)~1 از 20 صندوق های داخلی که به طور فعال مدیریت می شوند ، صندوق های شاخص را ضرب می کنند). حتی هنگامی که برخی از سهام های فردی از عملکرد بهتر ، کمترین عملکرد دیگران بیشتر از سهام بهتر عمل می کند ، به این معنی که یک سرمایه گذار به طور کلی بدتر از سرمایه گذاری در یک صندوق شاخص است. در طول مدرسه تجارت ، من در مورد PME آموختم ، و من یک تحلیل مشابه مفهومی را در ارزیابی دارایی های سهام عمومی فعلی خود درج کردم. برای انجام این کار به درستی ، شما باید زمان ورود به سرمایه گذاری خاص برای هر موقعیت نمونه کارها (دوره های برگزاری) را نسبت به سرمایه گذاری دلار معادل S& P 500 در طی دوره برگزاری یکسان اندازه گیری کنید. به عنوان نمونه ، اگر در تاریخ 6/1/2016 سهام خریداری کرده اید و هنوز هم آن را در اختیار دارید ، می خواهید بازده سهام را در آن دوره با بازگشت سرمایه گذاری برابر دلار در 6/1/2016 در S& P 500 مقایسه کنید.(مثال معیار ما). در میان چیزهای دیگر ، ممکن است متوجه شوید که حتی اگر سهام نسبتاً خوبی انجام داده باشد ، ممکن است بازده S& P 500 را در همان دوره زمانی دنبال کند.
در گذشته ، من داده های قیمت تاریخی را از Finance Yahoo بارگیری کردم و از توابع شاخص و مطابقت در اکسل استفاده کردم تا عملکرد دوره برگزاری نسبی هر موقعیت را در مقابل S& P 500 محاسبه کنم. در حالی که این یک روش خوب برای تحقق این هدف است ، انجام همان استفادهپاندا در نوت بوک Jupyter مقیاس پذیر تر و گسترده تر است. هر زمان که داده های جدید را بارگیری کرده و در اکسل بارگیری می کنید ، به ناچار نیاز دارید که برخی از فرمول ها را اصلاح کرده و برای خطاها اعتبار دهید. با استفاده از پاندا ، اضافه کردن محاسبات جدید ، مانند Multial ROI تجمعی (که من آن را پوشش خواهم داد) ، تقریباً هیچ وقت برای اجرای آن طول نمی کشد. و تجسم ، که برای آنها از طرح استفاده می کنم ، بسیار قابل تکرار و در تولید بینش بسیار مفید هستند.
افشای اطلاعات: هیچ چیز در این پست نباید مشاوره سرمایه گذاری در نظر گرفته شود. عملکرد گذشته لزوماً نشانگر بازده آینده نیست. اینها نمونه های کلی در مورد نحوه وارد کردن داده ها با استفاده از پاندا برای نمونه کوچکی از سهام در فواصل زمانی مختلف و محک زدن عملکرد فردی آنها در برابر یک شاخص است. شما باید تمام سؤالات مربوط به سرمایه گذاری را که باید به مشاور مالی خود داشته باشید هدایت کنید.
علاوه بر مشارکت در این آموزش ، من همچنان به تجدید نظر و ساختن این رویکرد ادامه می دهم ، و برخی از ملاحظات را برای توسعه بیشتر در پایان این پست بیان می کنم. من معتقدم که این پست برای متخصصان دارایی در سطح داده های مبتنی بر علوم داده در سطح متوسط ، به ویژه که باید در بسیاری از انواع دیگر تجزیه و تحلیل های مالی گسترش یابد ، مفید خواهد بود. این رویکرد "مانند PME" است به این معنا که اندازه گیری میزان سرمایه گذاری در دوره های برابر است. از آنجا که سرمایه گذاری در بازار عمومی بسیار مایع تر از سهام خصوصی است و با فرض اینکه شما از یک رویکرد توقف توقف پیروی می کنید ، از دیدگاه من مهمتر از آن است که روی دارایی های فعال تمرکز کنید - به طور کلی توصیه می شود که دارایی های واگذاری که یک معیار را تحت الشعاع قرار می دهد یا دیگر نمی خواهید. به دلایل مختلف ، در حالی که من یک دیدگاه بلند مدت را در نظر می گیرم و خوشحالم که تا زمانی که آنها را داشته باشند ، از سهام بهتر برخوردار هستم.
- من یک مشترک فعلی DataCamp هستم (پست آینده آینده در مورد DataCamp) و این آموزش جامعه در Python for Finance عالی است.
- من یک repo برای این پست از جمله نوت بوک پایتون در اینجا و پرونده اکسل در اینجا ایجاد کرده ام.
- If you want to see the full interactive version (because Jupyter >ادغام GitHub بسیار جذاب است) ، می توانید با استفاده از NBViewer در اینجا مشاهده کنید.
طرح کلی آنچه می خواهیم انجام دهیم:
- با استفاده از API مالی یاهو ، S& P 500 و نمونه داده های Ticker را وارد کنید
- یک فایل نمونه کارها "Master" ایجاد کنید که نمونه کارها نمونه کارها را با داده های تاریخی و داده های تاریخی S& P 500 ترکیب می کند
- تعیین کنید که S& P 500 نزدیک در تاریخ کسب هر سرمایه گذاری بود ، که به ما امکان می دهد موقعیت سهم معادل S& P 500 را با همان دلار سرمایه گذاری شده محاسبه کنیم
- بازده نسبی ٪ و ارزش دلار را برای موقعیت های نمونه کارها در مقابل بازده S& P 500 در آن زمان محاسبه کنید
- بازده نمونه کارها تجمعی و ROI Multial را محاسبه کنید ، تا ارزیابی کنید که این نمونه کارها به خوبی در مقایسه با شاخص بازار چقدر خوب است
- یکی از موارد مهم: به طور پویا محاسبه کنید که چگونه هر موقعیت نسبت به یک توقف دنباله دار انجام می شود ، به عنوان مثال ، اگر یک موقعیت 25 ٪ زیر بسته شدن خود بسته شود ، در روز معاملاتی بعدی موقعیت را در نظر بگیرید.
- تجسم
- مقایسه کل بازده - ٪ بازده هر موقعیت نسبت به معیار شاخص
- بازده تجمعی با گذشت زمان - $ افزایش / (ضرر) هر موقعیت نسبت به معیار
- سرمایه گذاری های تجمعی با گذشت زمان - با توجه به موارد فوق ، بازده سرمایه گذاری کلی چگونه با وزن برابر و مدت زمان سرمایه گذاری S& P 500 مقایسه می شود؟
- تنظیم شده نزدیک ٪ تخفیف از مقایسه بالا - جدیدترین نزدیکترین موقعیت نسبت به بسته شدن تنظیم شده آن از زمان خریداری شده چیست؟
نوت بوک Python Portfolio سرمایه گذاری
واردات داده ها و دستکاری DataFrame
شما با وارد کردن کتابخانه های لازم پایتون ، وارد کردن ماژول کاملاً آفلاین ، و در نمونه نمونه کارها ما DataFrame را شروع خواهید کرد.
اکنون که در پرونده نمونه کارها نمونه کارها را خوانده اید ، چند متغیر ایجاد خواهید کرد که محدوده تاریخ S& P 500 و همه تیک های نمونه کارها را ضبط می کند. توجه داشته باشید که این یکی از معدود جنبه های این نوت بوک است که هر هفته به بروزرسانی نیاز دارد (محدوده تاریخ را تنظیم کنید تا جدیدترین هفته معاملات را شامل شود - در اینجا ، ما این قیمت را از طریق 3/9/2018 اجرا می کنیم).
همانطور که در پست آموزش مالی Python ذکر شد ، بسته Pandas-Datareader ما را قادر می سازد تا در داده هایی از منابع مانند Google ، Yahoo! بخوانیم. امور مالی و بانک جهانی. در اینجا من روی یاهو تمرکز خواهم کرد. امور مالی ، اگرچه من بسیار مقدماتی با Quantopian کار کرده ام و همچنین به عنوان منبع داده به جستجوی Quandl رسیده ام. همانطور که در پست DataCamp نیز ذکر شد ، نقطه پایانی Yahoo API اخیراً تغییر کرده است و این نیاز به نصب یک رفع موقت به منظور Yahoo! امور مالی برای کار. من این کار را در کد زیر نیاز به تنظیم جزئی کردم. من متوجه برخی از داده های جزئی داده شده ام که داده ها همیشه همانطور که انتظار می رود خوانده نمی شوند ، یا آخرین روز معاملاتی گاهی از دست نمی رود. در حالی که این مسائل نسبتاً نادر بوده است ، من همچنان نظارت می کنم که آیا یاهو! امور مالی بهترین و مطمئن ترین منبع داده به جلو خواهد بود.
اگر به همراه نوت بوک خود پیروی می کنید ، پس از خواندن موفقیت آمیز در داده های API یاهو ، باید چیزی مانند زیر را ببینید:
در کد زیر ، شما مجموعه ای از همه تیک های موجود در نمونه کارها ما را با نام DataFrame ایجاد می کنید. سپس شما یک تابع را برای خواندن در کلیه تیکرها و داده های مربوط به آنها در یک Dataframe جدید می نویسید ، که در اصل همان رویکردی است که برای S& P500 اتخاذ کرده اید اما برای همه تیک های نمونه کارها اعمال می شود.
همانطور که با S& P 500 DataFrame ، یک DataFrame Adj_Close ایجاد خواهید کرد که فقط دارای ستون ADJ Close برای همه تیک های سهام شما است. اگر به نوت بوک در پیوند repo I به بالا نگاه کنید ، این کد در بلوک های کد بیشتری از آنچه در زیر نشان داده شده است ، جمع می شود. به منظور توصیف این موضوع در اینجا ، من زیر تمام کدهایی که منجر به DataFrame اولیه merged_portfolio ما می شود ، درج شده ام.
بسته به سطح آشنایی شما با پاندا ، این بسیار ساده برای کمی بسیار زیاد خواهد بود. در زیر ، من آنچه را که این خطوط انجام می دهند باز می کنم:
- رویکرد کلی که می گیرید ، نمونه ای از ترکیبات تقسیم شده است (توجه داشته باشید که این یک PDF را بارگیری می کند).
- خط All_data [['adj Close']] یک DataFrame جدید با ستون های ارائه شده در لیست ایجاد می کند. در اینجا Adj Close تنها مورد ارائه شده در لیست است.
- با استفاده از این خط کد ، adj_close [adj_close ['date'] == end_of_last_year] ، شما در حال فیلتر کردن داده های adj_close فقط به سطحی هستید که ستون تاریخ داده ها با تاریخی که قبلاً در متغیر end_of_last_year مشخص کرده اید (2017 ، 12 ، 12 ، 12 ، 12 ، 1229)
- شما همچنین می توانید شاخص داده های adj_close_latest و portfolio_df را تنظیم کنید. من این کار را کردم زیرا اینگونه است که شما دو dataframe را ادغام خواهید کرد. عملکرد ادغام ، بسیار شبیه به پیوندهای SQL ، یک عملکرد بسیار مفید است که من اغلب از آنها استفاده می کنم.
- در عملکرد ادغام ، شما DataFrame Left (Portfolio_DF) و DataFrame سمت راست ما (ADJ_CLOSE_LATEST) را مشخص می کنید. با مشخص کردن Left_Index و Right_index Equal True ، شما بیان می کنید که این دو DataFrame یک شاخص مشترک را به اشتراک می گذارند و در این مورد به هر دو می پیوندید.
- آخر ، شما یک ستون جدید به نام "Retu Ticker" ایجاد می کنید. این میزان بازده درصد برای هر موقعیت سهام را با تقسیم ADJ نزدیک به هزینه واحد (قیمت اولیه خرید سهام) و تفریق 1. محاسبه می کند. یک خط کد.
- شما برای صاف کردن Master DataFrame و به ستون های مربوط به DataFrames کوچکتر از Reset_Index در Merged_portfolio استفاده می کنید.
- در خط merged_portfolio_sp ، شما Master DataFrame فعلی (Merged_portfolio) را با SP_500_ADJ_CLOSE ادغام می کنید. شما این کار را انجام می دهید تا قیمت بسته شدن S& P را در تاریخ خرید هر موقعیت داشته باشید - این به شما امکان می دهد عملکرد S& P را در همان بازه زمانی که هر موقعیت برگزار می شود ، ردیابی کنید (از تاریخ خرید تا آخرین تاریخ نزدیک بازار).
- ادغام در اینجا کمی متفاوت از گذشته است ، به این ترتیب که ما در ستون تاریخ خرید DataFrame سمت چپ و در ستون تاریخ DataFrame سمت راست می پیوندیم.
- پس از اتمام این ادغام ، ستون های اضافی خواهید داشت که به آن احتیاج ندارید - از آنجا که در نهایت Master DataFrame ما تعداد قابل توجهی از ستون ها برای تجزیه و تحلیل خواهد داشت ، مهم است که در این راه ستون های تکراری و غیر ضروری را هرس کنید.
- روش های مختلفی برای حذف ستون های غیر ضروری و انجام پاکسازی نام ستون مختلف وجود دارد. برای سادگی ، من از Python del استفاده می کنم و سپس چند ستون را با روش تغییر نام پاندا تغییر نام می دهم ، و با تغییر نام به Ticker Adj Close ، ستون Adj Close Ticker را روشن می کنم. و شما تنظیم اولیه S& P را با SP 500 Close Close تشخیص داده اید.
- هنگامی که شما merged_portfolio_sp ['Equiv SP Shares'] را محاسبه می کنید ، این کار را می کنید تا بتوانید ارزش معادل S& P 500 را برای نزدیک در تاریخ به دست آوردن هر موقعیت تیکر محاسبه کنید: اگر 5000 دلار را برای موقعیت سهام جدید هزینه کنید ، خودمی توانست 5000 دلار برای S& P 500 هزینه کند. در ادامه مثال ، اگر S& P 500 در زمان خرید با 2500 دلار برای هر سهم معامله می شد ، می توانستید 2 سهم خریداری کنید. بعداً ، اگر S& P 500 با 3000 دلار برای هر سهم معامله شود ، سهام شما 6000 دلار (2 سهام معادل * 3000 دلار برای هر سهم) خواهد بود و در این مدت زمانی قابل مقایسه 1000 دلار سود کاغذ خواهید داشت.
- در بقیه بلوک کد ، شما بعد یک ادغام مشابه را انجام می دهید ، این بار به آخرین نزدیکی S& P 500 پیوست - این قطعه دوم مورد نیاز برای محاسبه بازده قابل مقایسه S& P نسبت به دوره برگزاری هر موقعیت را فراهم می کند: قیمت S& P 500 در هر یکروز کسب Ticker و آخرین بازار S& P 500 نزدیک است.
شما اکنون DataFrame "استاد" خود را با موارد زیر توسعه داده اید:
- قیمت ، سهام و ارزش هر موقعیت نمونه کارها در روز کسب موقعیت و همچنین آخرین قیمت بسته شدن بازار.
- قیمت معادل S& P 500 ، سهام و ارزش در روز کسب موقعیت معادل برای هر تیک و همچنین آخرین قیمت بسته شدن S& P 500.
با توجه به موارد فوق ، شما برای مقایسه عملکرد هر موقعیت و همچنین عملکرد کلی این استراتژی / سبد سهام ، نسبت به سرمایه گذاری دلار قابل مقایسه و زمان برگزاری S& P 500 ، محاسبات لازم را انجام خواهید داد.
در زیر خلاصه ای از ستون های جدید که شما به "Master" DataFrame اضافه می کنید.
- در ستون اول ، ['SP Retu'] ، شما ستونی را ایجاد می کنید که بازده مطلق S& P 500 را در دوره برگزاری هر موقعیت محاسبه می کند (توجه داشته باشید ، این یک بازده مطلق است و بازده سالانه نیست). در ستون دوم (['ABS. Retu Compare']) ، شما ["بازگشت تیکت"] (بازگشت هر موقعیت) را نسبت به ["بازگشت SP"] در همان دوره زمانی مقایسه می کنید.
- در سه ستون بعدی ، ["ارزش سهم تیک"] ، ["مقدار SP 500 مقدار"] و ["مقدار ABS مقایسه"] ، ما معادل دلار (ارزش بازار) را بر اساس سهام خود که در گذشته دارند ، محاسبه می کنیمقیمت نزدیک تنظیم شده (و بازده S& P را از تیکر برای محاسبه عملکرد بیش از / (زیر)) کم کنید.
- آخر ، ستون های ['سود سهام / (ضرر)] و [' SP 500 GAD / (ضرر)]] سود / از دست دادن دلار غیر واقعی ما را در هر موقعیت محاسبه می کنند و S& P 500 سود / ضرر قابل مقایسه. این به ما امکان می دهد تا تأثیر ارزش هر موقعیت را در مقابل صرفاً سرمایه گذاری آن دلار در S& P 500 مقایسه کنیم.
شما اکنون برای مقایسه عملکرد نمونه کارها خود با یک نمونه کارها به همان اندازه که در S& P 500 سرمایه گذاری شده است ، نیاز دارید. و اینکه چگونه موقعیت های شما قدم می زند) و ب) جدیدترین قیمت بسته شدن برای هر موقعیت نمونه کارها را نسبت به جدیدترین بسته شدن خود مقایسه کنید (این به شما امکان می دهد ارزیابی کنید که آیا موقعیتی باعث توقف دنباله دار شده است ، به عنوان مثال ، 25 ٪ زیر بسته شدن بالا).
در زیر ، من با بلوک کد عملکرد YTD شروع می کنم و جزئیات مربوط به کد زیر را ارائه می دهم.
- هنگام ایجاد merged_portfolio_sp_latest_ytd dataframe ، اکنون در حال ادغام داده های "استاد" با adj_close_start dataframe هستید. به عنوان یک یادآوری سریع ، شما این DataFrame را با فیلتر کردن روی DataFrame ADJ_CLOSE ایجاد کردید که در آن ستون "تاریخ" با متغیر end_of_last_year برابر است. شما این کار را انجام می دهید زیرا به این ترتیب عملکرد سهام و شاخص YTD (سال به روز) است. پایان سال گذشته قیمت شروع سال بعد است.
- از اینجا ، ما یک بار دیگر از DEL برای حذف ستون های غیر ضروری و روش تغییر نام برای روشن کردن ستون های تازه اضافه شده "Master" DataFrame استفاده می کنیم.
- آخر اینکه ، ما هر تیک (در ستون ['Ticker Adj Close']) را می گیریم و بازده YTD را برای هر یک محاسبه می کنیم (ما همچنین یک مقدار معادل S& P 500 برای هر مقدار در ستون "SP 500 آخرین نزدیک" داریم).
در بلوک کد زیر ، شما از روش sort_values برای مرتب سازی مجدد DataFrame "استاد" ما استفاده می کنید و سپس سرمایه گذاری های نمونه کارها تجمعی (مجموع هزینه های کسب موقعیت خود) ، و همچنین ارزش تجمعی موقعیت های نمونه کارها و ارزش تجمعی از آن را محاسبه می کنید. سرمایه گذاری های نظری S& P 500. این به شما امکان می دهد تا بتوانید ببینید که چگونه کل نمونه کارها شما با سرمایه گذاری در موقعیت های انجام شده در زمان های مختلف در کل دوره ، به طور کلی با یک استراتژی که در آن به سادگی در یک شاخص سرمایه گذاری کرده اید مقایسه می کند. بعداً ، شما از ['Cum Ticker ROI Mult'] استفاده خواهید کرد تا به شما در تجسم میزان هر سرمایه گذاری کمک کرده یا بازده کلی سرمایه گذاری خود را کاهش داده یا کاهش دهد.
اکنون در حال نزدیک شدن به کشش خانگی هستید و تقریباً آماده شروع به تجسم داده های خود و ارزیابی نقاط قوت و ضعف تیک تیک فردی نمونه کارها و عملکرد کلی استراتژی هستید.
مانند گذشته ، من بلوک کد اصلی را برای تعیین محل معاملات نسبت به بسته شدن اخیر آنها درج کرده ام. سپس کد را در زیر باز می کنم.
- برای شروع ، شما DataFrame adj_close را با Portfolio_df DataFrame ادغام می کنید. این سومین بار است که شما به منظور انجام یک تجزیه و تحلیل جدا شده که پس از آن با DataFrame کلی "استاد" ترکیب خواهید شد ، از این DataFrame Adj_close استفاده کرده اید.
- این ادغام اولیه به ویژه مفید نیست ، زیرا شما تاریخ و قیمت های نزدیک را تنظیم می کنید که تاریخ خرید خود را برای هر موقعیت از پیش تعیین می کنید. در نتیجه ، ما داده ها را ارسال می کنیم تاریخ خرید خود را ارسال می کنیم و سپس از آن زمان حداکثر قیمت بسته شدن را پیدا می کنیم.
- یک بار دیگر ، من از DEL برای حذف ستون های غیرضروری DataFrame ادغام شده استفاده کردم. این کدی است که من باید Refactor ، به عنوان ایجاد یک لیست ، به عنوان مثال ، cols_to_keep ، و سپس فیلتر کردن DataFrame با این یک رویکرد بهتر باشد - به عنوان یک FYI ، اجرای بلوک Del Code بیش از یک بار خطایی را به وجود می آورد و شما نیاز داریدمجدداً DataFrame خود را دوباره آغاز کنید و دوباره بلوک Del Code را اجرا کنید.
- پس از حذف ستون های غیر ضروری ، سپس از روش sort_values استفاده می کنید و مقادیر را با ستون های "Ticker" ، "تاریخ کسب" و ستون های "تاریخ" (همه صعود) مرتب می کنید. شما این کار را انجام می دهید تا مطمئن شوید که تمام ردیف های تیک در کنار هم قرار گرفته اند ، و ما با تاریخ کسب مرتب سازی می کنیم (در صورت خرید بیش از یک بار سهام مشابه) و صعود تاریخ به منظور فیلتر کردن تاریخ قبل از موقعیت های شماتاریخ خرید. به عبارت دیگر ، شما فقط از زمانی که این مقام را حفظ کرده اید ، نگران بسته شدن زیاد هستید.
- به منظور فیلتر کردن DataFrame ، شما یک ستون جدید ['Date Delta'] ایجاد می کنید که با تفاوت بین ستون های تاریخ و تاریخ خرید محاسبه می شود.
- You then convert this column into a numeric column, and you create a new dataframe called adj_close_acq_date_modified where the ['Date Delta'] is >= 0. این تضمین می کند که شما فقط از تاریخ خرید هر موقعیت ، اوج های بسته شدن را ارزیابی می کنید.
- اکنون که ADJ_CLOSE_ACQ_DATE_Modified DataFrame را دارید ، ما از یک تابع پانداس بسیار قدرتمند به نام Pivot_Table استفاده خواهیم کرد. اگر با جداول محوری در اکسل آشنا هستید ، این عملکرد مشابه است که می توانید داده ها را بر اساس یک شاخص واحد یا چند شاخص محوری کنید ، مقادیر را برای محاسبه و ستون ها برای محوریت مشخص کنید ، و همچنین از توابع AGG (که اهرم Numpy) استفاده می کند. بشر
- با استفاده از تابع Pivot_Table ، ما در تاریخ تیک و کسب قرار می گیریم و مشخص می کنیم که می خواهیم حداکثر (np. max) را برای هر موقعیت نزدیک پیدا کنیم. این به شما امکان می دهد تا نزدیک تنظیم شده برای هر موقعیت نسبت به این نزدیک تنظیم شده ، مقایسه کنید.
- اکنون شما یک DataFrame ADJ_CLOSE_PIVOT دارید ، و این فهرست را مجدداً تنظیم می کنید و یک بار دیگر در ADJ_CLOSE DataFrame می پیوندید. این باعث می شود DataFrame ADJ_CLOSE_PIVOT_MERGED ایجاد شود ، که به شما می گوید وقتی هر موقعیت را خریداری کرده اید و تاریخی که از زمان کسب آن به پایان رسیده است.
- سرانجام ، ما DataFrame "Master" خود را با این آخرین DataFrame کوچکتر ، ADJ_CLOSE_PIVOT_MERGED ترکیب خواهیم کرد.
- پس از انجام این کار ، اکنون می توانید ستون نهایی مورد نیاز را محاسبه کنید ، ["PCT OFF HIGH"]. شما ['Ticker Adj نزدیک'] را می گیرید و آن را با ["بسته شدن Adj Close" تقسیم می کنید و تقسیم می کنید. این صفر خواهد بود) در جدیدترین روز معاملاتی که ارزیابی شده است (این به طور کلی نشانه بسیار خوبی است اگر این مورد باشد).
این یک آسانسور بسیار مهم بوده است ، و اکنون زمان آن رسیده است که تجسم های طولانی مدت ما. اگر همچنان در نوت بوک خود پیگیری کرده اید ، اکنون یک DataFrame بسیار غنی با تعدادی از معیارهای نمونه کارها محاسبه شده دارید ، همانطور که در زیر نشان داده شده است:
بازده کل و تجسم بازگشت تجمعی
برای همه این تجسم ها از Plotly استفاده خواهید کرد ، که به شما امکان می دهد نمودارهای D3 را کاملاً بدون کد بسازید. در حالی که من از Matplotlib و Seabo نیز استفاده می کنم ، من واقعاً تعامل توطئه ای را ارزیابی می کنم. و هنگامی که به آن عادت کردید ، نحو نسبتاً ساده می شود و نمودارهای پویا به راحتی قابل دستیابی هستند.
اولین نمودار شما در زیر بازده کل موقعیت های فردی نسبت به S& P 500 (مشابه دوره های برگزاری موقعیت و سرمایه گذاری فرضی در S& P 500) را مقایسه می کند. در زیر ، خواهید دید که در دوره های برگزاری مجزا ، 6 از 8 موقعیت از S& P بهتر عمل می کنند. دو مورد آخر ، توییتر (که در واقع بازده منفی داشته است) و والمارت یک سرمایه گذاری به موقع مساوی را در S& P 500 کم کرد.
از آنجا که هر یک از این تجسم ها نسبتاً مشابه هستند ، من کد مورد نیاز برای تولید تجسم فوق را توضیح می دهم ، و برای موارد باقی مانده فقط مشاهدات را از هر تجسم خلاصه می کنم.
- هنگام استفاده از Plotly ، اثری را ایجاد می کنید که داده های X و Y را که مشخص می کنید ترسیم کنید. در اینجا ، شما در Trace1 مشخص می کنید که می خواهید یک نمودار نوار را ترسیم کنید ، با هر تیک در محور x و بازگشت هر تیک در محور y.
- در Trace2 ، برای تجزیه و تحلیل کمی داده ها ، ما از یک نمودار خط پراکندگی برای تیک در محور x و بازگشت S& P در محور y استفاده خواهیم کرد.
- جایی که نوار بالاتر از خط است ، تیکت فردی (6 از 8 بار) از S& P 500 بهتر عمل کرده است.
- سپس شما یک شیء داده را با این آثار ایجاد می کنید ، و سپس یک طرح برای نمودار ارائه می دهید. در این حالت عنوان ، Barmode و موقعیت افسانه را مشخص می کنید. شما همچنین در یک عنوان و قالب (قالب درصد به دو مکان اعشاری) برای سری Y محور عبور می کنید.
- سپس شما یک شیء شکل را با استفاده از go. figure ایجاد می کنید ، داده ها و اشیاء چیدمان را مشخص می کنید ، که قبلاً داده ها و چیدمان را نامگذاری کرده اید.
نمودار بعدی در زیر مبلغ دلار سود / (ضرر) را برای هر موقعیت ، نسبت به S& P 500 نشان می دهد ، و همچنین نشان دهنده بازده کل Ticker است. در حالی که به طور کلی توصیه می شود که شما یک اندازه موقعیت مساوی را به موقعیت های خود اختصاص دهید (یا به طور بالقوه اندازه مثبت را بر اساس نوسانات ضمنی تعیین کنید) ، ممکن است همیشه اینگونه نباشد. برای یک سرمایه گذاری کمتر بی ثبات ، ممکن است بیشتر از موقعیت خطرناک سرمایه گذاری کنید (یا ممکن است قوانین اندازه موقعیت دیگری داشته باشید). با توجه به این ، این تجسم هر دو بازده هر موقعیت و سهم ارزش دلار در بازگشت کل نمونه کارها شما را نشان می دهد.
در اینجا ، می بینید که اگرچه کمی در فیس بوک (FB) نسبت به سایر موقعیت ها سرمایه گذاری کرده اید ، اما این سهام~20K دلار در این نمونه کارها مسخره ، بیشتر از بازگشت 4 برابر نسبت به سرمایه گذاری معادل S& P 500 در مدت مشابه.
نمودار بعدی در زیر ستون های تجمعی را که ایجاد کرده اید ، به دست می آورد: "cum invst" ، "cum sp باز می گردد" ، "cum ticker باز می گردد" و "cum ticker roi mult".
- در سراسر محور x شما نمونه کارها را به صورت الفبایی طبقه بندی کرده اید. هر موقعیت سرمایه گذاری اولیه و ارزش کل (سرمایه گذاری به علاوه بازده یا ضرر کمتری) را برای آن موقعیت نشان می دهد ، همراه با موقعیت های قبل.
- برای توضیح بیشتر ، بر اساس~سرمایه گذاری 8K دلار در AAPL ، این رشد به~$22.5k (>14K دلار سود) ، در مقابل 15K دلار ارزش کل برای S& P. این بازده 2. 75 برابر بیش از سرمایه گذاری اولیه در AAPL است (ارزش 22. 5K دلار از 8K $ سرمایه گذاری است~2. 75x ROI).
- در ادامه به FB ، شما سرمایه گذاری کرده اید~16K دلار کل (8K دلار در هر دو موقعیت) ، و این به بیش از 50K دلار افزایش یافته است ، بیشتر از 3 برابر بازده کل - این بدان معنی است که FB ROI کل نمونه کارها شما را گسترش داده است.
- در پایین تر از محور X ، می بینید که هر دو TWTR و WMT کل ROI نمونه کارها را کاهش داده اند-این بدیهی است ، زیرا هر دو S& P را تحت تأثیر قرار داده اند ، اما من معتقدم که بزرگی سهم با این تجسم واضح تر است.
- به عنوان یک احتیاط ، این رویکرد تجمعی ، با توجه به دوره های مختلف برگزاری ، کمی از سیب و پرتقال برای برخی از موقعیت ها بر اساس زمان دستیابی به آنها ترکیب می شود. با این حال ، شما همیشه می توانید این تجزیه و تحلیل را با تنظیم زیر در داده های کوچکتر منزوی کنید و به طور جداگانه موقعیت هایی را که دارای دوره های نگهدارنده تر هستند ، مقایسه کنید. به عنوان مثال ، می توانید خریدهای 2H 2016 و 1H 2017 خود را جدا از یکدیگر مقایسه کنید.
تنظیم نزدیک ٪ تخفیف از مقایسه بالا
نمودار نهایی شما مقایسه می کند که آخرین قیمت نزدیک هر موقعیت از زمان بسته شدن موقعیت ، از بسته شدن بالاترین موقعیت آن فاصله دارد. این به طور کلی یک تجسم مهم است که باید در نظر بگیرید:
- هنگامی که سهام با قیمت های بالاتر بسته می شود ، به طور کلی توصیه می شود که جلوی توقف خود را نیز تنظیم کنید. برای نشان دادن ، یک مثال در اینجا آورده شده است:
- موقعیتی با 10 دلار به دست می آید و به 20 دلار دو برابر می شود - با استفاده از یک توقف 25 ٪ دنباله دار ، می خواهید در صورت بسته شدن 15 دلار (15 دلار / 20 1 دلار = (25 ٪)) روز بعد فروش این موقعیت را در نظر بگیرید.
- اگر این موقعیت به 25 دلار افزایش یابد ، می خواهید در نظر داشته باشید که توقف دنباله خود را به 18. 75 دلار (18. 75 دلار / 25-1 $ = (25 ٪)) در نظر بگیرید.
- همانطور که در اوایل ذکر شد ، هیچ چیز در اینجا مشاوره مالی نیست. سیستم های مختلف معاملاتی قوانین متفاوتی برای توقف های دنباله دار دارند و این یک نمونه بارز است.
- توقف های دنباله دار به منظور کمک به حفظ سود و به طور کلی در کاهش احساسات سرمایه گذاری مهم هستند. در حالی که دیدن بازگشت فعلی موقعیت شما آسان است ، آنچه که تمایل به دستی دارد (یا در صورت استفاده از سرویس توقف توقف) تا حدودی گران است ، محاسبه میزان نزدیک شدن موقعیت های شما به توقف های دنباله شما است.
- این تجسم نهایی این ارزیابی را برای هر تاریخی که مرور می کنید آسان می کند. در نمودار ، می بینیم که AAPL ، MTCH و NFLX همه در تاریخ 3/9/2018 در اوج بسته شدن خود بسته شدند (به طور معمول یک علامت بسیار خوب).
- با این حال ، TWTR بیش از 25 ٪ پایین تر از بالاترین نزدیک خود (33 ٪ پایین تر از 3/9/2018) و WMT است~20 ٪ پایین ترین سطح خود.
- در این حالت ، شما ممکن است بخواهید TWTR را بفروشید و همچنان به عملکرد WMT توجه کنید.
محدودیت های نزدیک شدن و خلاصه بسته شدن
اکنون شما یک نوت بوک Jupyter نسبتاً توسعه یافته و مجموعه داده های نمونه کارها را دارید که می توانید از آنها برای ارزیابی نمونه کارها سهام خود استفاده کنید ، و همچنین در معیارهای جدید و تجسم اضافه کنید.
لطفاً توجه داشته باشید که در حالی که این نوت بوک بررسی نسبتاً کاملی از یک نمونه کارها را ارائه می دهد ، در زیر هنوز مورد توجه قرار نگرفته است ، اما در مقایسه کلی تأثیر می گذارد و احتمالاً زمینه های بزرگی را برای توسعه آینده ارائه می دهد:
- همانطور که در ابتدا ذکر شد ، این نوت بوک بر روی دارایی های فعال متمرکز است - در حالت ایده آل ، ما همه موقعیت ها ، چه در خارج از کشور و چه فعال را ارزیابی می کنیم ، تا بتوانیم دیدگاه کاملاً جامع در مورد استراتژی سرمایه گذاری شخص نسبت به گزینه های دیگر ، مانند مقایسه شاخص داشته باشیم.
- رویکرد در اینجا در سود سهام مؤثر نیست. در حالی که ما قیمت های نزدیک تعدیل شده را ارزیابی می کنیم (که منعکس کننده سود سهام است) ، بازده کل سهامدار باعث افزایش ارزش سهام و سود سهام می شود تا بازده کل سهام را نشان دهد. اگرچه انجام این کار دشوارتر است ، این کاری است که من ارزیابی می کنم در آینده گنجانیده شود.
- در یک یادداشت مرتبط ، سرمایه گذاران همچنین می توانند سود سهام را در یک موقعیت دوباره سرمایه گذاری کنند ، به جای اینکه توزیع نقدی را انجام دهند. این مسئله احتمالاً حتی پیچیده تر از حسابداری برای سود سهام است ، زیرا هزینه های کسب کم و گسترش یافته است ، و طی چندین سال از داشتن موقعیتی که می توانید هر سال چهار (یا بیشتر) تاریخ کسب در هر سال برای سهام که در آن سود سهام را سرمایه گذاری می کنید داشته باشید.
با توجه به آن مناطق آینده ، ما در اینجا کارهای زیادی انجام دادیم. این شامل واردات S& P 500 و داده های تیک با استفاده از Yahoo! API امور مالی و ایجاد یک DataFrame Master که نمونه کارها شما را با تیک تیک تاریخی و قیمت های مقایسه ای S& P 500 ترکیب می کند. در انجام این کار ، شما می توانید بازده مطلق و ارزش دلار را برای هر موقعیت محاسبه کنید (و در مقایسه با سرمایه گذاری S& P 500 به همان اندازه) ، و همچنین تأثیر تجمعی هر موقعیت بر عملکرد کل نمونه کارها شما. شما همچنین می توانید بر اساس قوانین معاملات خود ، توقف های دنباله دار خود را به صورت پویا کنترل کنید. و شما تجسم هایی ایجاد کرده اید که به شما امکان می دهد بینش بهتری نسبت به Master DataFrame خود داشته باشید ، با تمرکز بر معیارهای مختلف و سهم هر موقعیت در هر یک.
امیدوارم که این آموزش را مفید بدانید و از هرگونه بازخورد در نظرات استقبال می کنم. احساس راحتی کنید که در توییتر ، kevinboller نیز به من دسترسی پیدا کنید و وبلاگ شخصی من را می توان در اینجا یافت.
فارکس حرفه ای...
ما را در سایت فارکس حرفه ای دنبال می کنید
برچسب :
نویسنده : مرتضی احباب
بازدید : <-PostHit->
تاريخ : چهارشنبه
24 اسفند
1401 ساعت: 13:55