پیشبینی قیمت نفت برنت

در این مقاله ما به بررسی وضعیت تغییر قیمت نفت برنت در سی سال گذشته از 1992 تا کنون میپردازم و پس از آن به پیش بینی قیمت نفت با استفاده از الگوریتم های ماشین لرنینگ و شبکه های عصبی خواهم پرداخت . ابتدا فیچرهای ( ستون های ) دیتافریم و بررسی میکنم که شامل :Date : تاریخ مربوط به اطلاعات یک ردیفPrice : میانگین قیمت معامله شده در یک هفتهOpen : قیمت شروع در یک هفتهHigh : بالاترین قیمت معامله شده در یک هفتهLow : پایین ترین قیمت معامله شده در یک هفتهVol : حجم معاملات انجام شده درهفتهChange % : درصد تغییر قیمت نسبت به تاریخ قبلی (هفته پیشین)این مساله یک مساله سری زمانی هست که برای حل اون کلاسی را میسازیم که پارامتر های ورودی آن را n تعداد هفته یِ قبل برای پیش بینیِ قیمت (ستون Price) m تعداد هفته بعد و زمان t که داده ها از اون زمان به قبل به داده های train و از اون زمان به بعد به داده های test تقسیم میشن در نظر گرفته شده و متدهایی برای ساختن دیتافریم داینامیک ، جدا کردن داده ها به test و train نسبت به زمان t و پیش بینی قیمت را در کلاس میسازیم . با استفاده از داده های بالا با الگوریتم های ماشین لرنینگی به نتایج موثری برای پیش بینی قیمت نرسیدم به همین دلیل متوجه شدم برای اینکار نیازمند داده های تاثیر گذار دیگری هم میباشم .تحلیل ، بررسی و مهندسی فیچرها :نمودار تغییرات قیمت نفت در طول زمان را در شکل زیر مشاهده میکنیم :با بررسی نمودار بالا میتوان به افزایش صعودی قیمت نفت از سال 2000 به بعد به بالای 20 دلار پی برد. نمودار فراوانی قیمت نفت را رسم کردم :فراوانی قیمت نفتمشاهده میکنیم که دیتا فریم ما بالانس نیست میتوان پی برد که فراوانی در قیمت 20 دلار بسیار زیاد بوده و در قیمت بالای 130 دلار بسیار کم و از اونجایی که اکثر قیمت های 20 دلار مربوط به سال 2000 به قبل میباشد پس با حذف این دو قیمت به دیتا فریم بالانس تری میرسیم که نمودار فراوانی آن به شکل زیر میباشد :فراوانی قیمت نفتتغیرات قیمت در طول زمانبا توجه به نمودار بدست آمده و تغیرات آن به نتایج زیر میتوان پی برد :الف) تغییر قیمت تدریجی نفت از سال 2004 ببعد و افت شدید قیمت در سال 2008ب) بالاترین رکورد قیمت نفت از 2008 تا 2016ج) کاهش و افزایش قیمت در سال 2012د) کاهش و افزایش قیمت در سال 2016بررسی مورد ج و د :ج) بررسی مورد افزایش قیمت در سال 2012 :1- کاهش 15 درصدی تولید نفت نروژ ( کاهش عرضه )2- افزایش 0.7 درصدی سفارش کالاهای صنعتی آمریکا ( افزایش تقاضا )3- افزایش تقاضای چین برای نفت خام ( افزایش تقاضا )د) بررسی کاهش و افزایش قیمت در سال 2016 :1 - دلیل کاهش قیمت1.1- افزایش ذخایر نفتی آمریکا ( افزایش عرضه )1.2- عبور ایران از تحریم های نفتی و عرضه آن به بازار ( ژیوپولیتیک )2 - دلیل افزایش قیمت2.1- محدودیت 1.9 درصدی اوپک در عرضه جهانی ( کاهش عرضه )با توجه به مثال های بالا میتوان به مفهوم دو عامل مهم یعنی ژیوپولیتیک و عرضه و تقاضا پی برد . که من از عرضه و تقاضا بعنوان فیچر تاثیر گذار استفاده میکنم .عرضه تقاضا :با استفاده از سایت datasource.kapsarc.org به دیتا فریم شاخص عرضه و تقاضا جهانی دست یافتم :دیتا فریم تغییرات جهانی عرضه و تقاضای نفتبا توجه به دیتافریم و تقسیم تقاضا نسبت به عرضه میتوان به مقداری دست یافت که این مقدار را در ستونی به اسم supply_demand ذخیره کردم . حال نمودار عرضه-تقاضا را نسبت به زمان رسم کردم : ( زمان از سال 2018 ببعد است )تغیرات عرضه و تقاضا در طول زمانتغییرات قیمت نفت در طول زمانهرچه مقدار عددی ای که در ستون عرضه و تقاضا هست کمتر باشد نشان دهنده این است که عرضه نسبت به تقاضا زیاد تر بوده و قیمت هم کمتر میشود در واقع این نمودار با نمودار قیمت نفت نسبت مستقیم دارد .شاخص دلار :از دیگر عوامل تاثیرگذار میتوان به شاخص دلار اشاره کرد . که این دو مقدار رابطه عکس ای باهم دارند . نمودار شاخص دلار را از سال 2000 به بعد مشاهده میکنیم و میتوان دید در سال هایی که قیمت نفت بالا بوده شاخص دلار به کمترین مقدار خود رسیده است .تغییرات شاخص دلار در طول زمانتغییرات قیمت نفت در طول زماننوسانات قیمت :پس از اضافه کردن فیچرها بصورت تحلیلی میتوان از روش های تکنیکال برای مهندسی فیچر استفاده میکنیم که یکی از روش ها تجزیه نوسانات قیمت به نوسانات بلندمدت، میان مدت و کوتاه مدت است و سپس این نوسانات را بعنوان ویژگی در دیتافریم اضافه کردم .که دیتافریم نهایی به صورت زیر حاصل شد :دیتافریم نهاییدیتافریم بدست آمده شامل فیچرهای زیر است :Date : تاریخ مربوط به اطلاعات یک ردیفPrice : میانگین قیمت معامله شده در یک هفتهIndex_dolar : شاخص دلار در یک هفتهLong-term volatility : نوسانات بلند مدت در یک هفتهMedium-term volatility : نوسانات میان مدت در یک هفتهShort-term volatility : نوسانات کوتاه مدت در یک هفتهSupply_demand : نسبت عرضه به تقاضا در یک هفته قبلپیشبینی قیمت : برای پیش بینی قیمت هم از روش ماشین لرنینگ کلاسیک و هم شبکه عصبی استفاده کردم . الف) مدل های کلاسیک : در روش کلاسیک با استفاده از تکنیک Stack Modeling و استفاده از مدل های Random Forest و Gradient Boosting Regressor بعنوان بیس مدل و Linear Regressor بعنوان متا مدل به MAE=1.68 دست یافتم .ب) شبکه عصبی : در روش پیاده سازی با استفاده از شبکه های عصبی با پیاده سازی الگوریتم LMSکه یک شبکه عصبی تک لایه میباشد به MAE=1.46 دست پیدا کردم .امیدوارم از مطالب لذت برده باشین