Python4Finance
9.33K subscribers
570 photos
41 videos
152 files
763 links
کانال Python4Finance
آموزش پایتون در اقتصاد و مدیریت مالی
هر روز چند نکته را در خصوص پایتون برای مالی بیاموزیم
***
ارتباط با من
b2n.ir/y72935
***
آپارت:
aparat.com/Python4Finance
کانال چالش ها:
t.me/python4finance_challenge
加入频道
مدل ARIMA
«میانگین متحرک خودهمبسته یکپارچه» (Autoregressive Integrated Moving Average | ARIMA) ابزاری مهم در تحلیل «سری‌های زمانی» (Time Series) به منظور پیش‌بینی قیمت‌های آینده یک متغیر بر اساس مقدار کنونی آن به شمار می‌آید. هدف ARIMA شناسایی ماهیت روابط بین باقیمانده‌ها است که مدلی با درجه خاصی از قدرت پیش‌بینی را فراهم می‌کند.

در مثال این پست، یک مدل ARIMA بر اساس داده های شرکت گوگل از سال 2018 تا پایان 2020 اجرا شده است.

#سری_زمانی
#آریما
#پایتون_مالی
#time_series
#Arima

@python4finance
2
بدست آوردن روند در یک سری زمانی
سری های زمانی یکی از مباحث بسیار جذاب و در عین حال کاربردی در بازار سرمایه هستند. برای مثال قیمت یک سهم در طول زمان، شاخص بورس، تولید ملی و ... ، همه مثال هایی از سری های زمانی هستند.
(اگر با مباحث سری زمانی، چرخه، روند و ... آشنا نیستند حتما وبینار جادوی سری های زمانی را مشاهده نمایید.)
در مثال این پست، قیمت سهم شرکت اپل از اواسط سال 2020 بررسی شده و به کمک فیلتر هودریک-پرسکات چرخه و روند از یکدیگر تفکیک و رسم می شوند.

#سری_زمانی
#چرخه
#روند
# هودریک-پرسکات

#time_series
#Hodrick-Prescott

پایتون برای مالی در تلگرام https://yangx.top/python4finance
پایتون برای مالی در بله https://ble.im/python4finance
1
ماژول trendet ، یک ماژول جالب برای تشخیص روندهای داده های سری زمانی بازارهای مالی
قبلا در این لینک در خصوص ماژول Investpy کمی توضیح دادم. یکی از ماژول هایی که بر اساس این ماژول نوشته شده ماژول trendet است که هدف آن تشخیص روندهای بازار است. ماژول به صورت بسیار حرفه ای نوشته شده است و تقریبا خودش همه کارها را به صورت خودکار انجام می دهد.
در لینک گیت هاب ماژول، سورس ماژول و چند مثال خوب ذکر شده است.
در مثال این پست، روندهای سهم اپل از ابتدای سال 2021 میلادی استخراج و رسم شده است.
فایل سورس برنامه را هم برای راحتی کار در پست بعد تقدیم خواهم کرد.

#سری_زمانی
#تشخیص_روند
#پایتون_مالی
#time_series
#trendet
#investpy

t.me/python4finance
trendet.py
1.6 KB
ماژول trendet ، یک ماژول جالب برای تشخیص روندهای داده های سری زمانی بازارهای مالی

فایل سورس برنامه پست بالا، به پیوست تقدیم می گردد.

#سری_زمانی
#تشخیص_روند
#پایتون_مالی
#time_series
#trendet
#investpy

t.me/python4finance
مانایی (stationary) در سری های زمانی
تحلیل داده های سری زمانی، یکی از پرکاربردترین و درعین حال زیباترین مباحث در اقتصاد و مالی است. هم از این جهت که بیشتر داده های ما در طول زمان شکل می گیرند و هم از این جهت که قواعد نظام مندی برای تحلیل داده های سری زمانی وجود دارد.
برای استفاده از بیشتر مدل های تحلیل داده های سری شرط اصلی مانا بودن داده هاست. مانایی یا ایستایی (stationary) به معنای آن است که در طول زمان میانگین و واریانس داده ها یکسان باشد و البته کوواریانس هم تابعی از زمان نباشد. به عبارت دیگر لازم است اجزای تشکیل دهنده سری زمانی را با روش هایی از یکدیگر جدا کنیم.
برای تشخیص مانایی یک سری زمانی هم می توان از شکل استفاده کرد و هم می توان از مدل دیکی فولر کمک گرفت.
در تصویر این پست، یک سری زمانی مانا و سه سری زمانی نامانا نمایش داده شده است.
ان شاء الله در پست های آتی مطالب مفصلی را در خصوص سری های زمانی و نیز تحلیل آنها در پایتون تقدیم می کنم.

#مانایی
#سری_زمانی
#ایستایی
#دیکی_فولر
#پایتون_مالی
#آموزش پایتون

#stationary
#Time_series
#Dickey_Fuller
#python
1
مانا سازی داده ها
برای مانا سازی داده ها، در صورتی که داده ها دارای روند باشند، با روش هایی روند را از سری زمانی جدا می کنیم و یا اصطلاحا روند زدایی می کنیم. اگر داده ها از رفتار گام تصادفی پیروی کنند، معمولا از تفاضل گیری استفاده می کنیم. برای تفاضل گیری کافی است داده ها را یک زمان از یکدیگر کسر کنیم. آنقدر این کار را تکرار می کنیم،تا داده ها مانا شوند.
البته این روش یک اشکال بزرگ دارد و آن اینکه که با هر بار تفاضل گیری، یک ردیف از داده ها را از دست می دهیم. در صورتی که حجم داده ها زیاد باشد این موضوع مسئله مهمی نیست اما در صورتی که حجم داده ها کم باشد، ممکن است در تحلیل های آتی دچار مشکل شویم.
در تصویر این پست، یک مثال ساده از تفاضل گیری نمایش داده شده است. در مثال بعدی، با داده های واقعی در پایتون موضوع را بررسی می کنیم.
#مانایی
#تفاضل_گیری
#سری_زمانی
#ایستایی
#دیکی_فولر
#پایتون_مالی
#آموزش پایتون

#stationary
#Difference
#Time_series
#Dickey_Fuller
#python
مانا سازی داده ها (مثال)
در مثال این پست، اطلاعات مربوط به شاخص S&P500 دریافت و رسم می شود. سپس با استفاده از روش تفاضل گیری داده ها مانا شده و مجددا رسم می شوند.

#مانایی
#تفاضل_گیری
#سری_زمانی
#ایستایی
#پایتون_مالی
#آموزش_پایتون

#stationary
#Difference
#Time_series
#python
Time_Series_Forecasting_with_Python_Cheat_Sheet.pdf
974.7 KB
برگه خلاصه مرور سری های زمانی با پایتون

مطالعه این برگه، جهت یادآوری و مرور مطالب توصیه می شود.

#پایتون_مالی
#خلاصه
#برگه_تقلب
#پایتون_عمومی
#سری_زمانی
#Time_Series_Forecasting


پایتون برای مالی

🆔 @python4finance
23
نمونه گیری در داده های سری زمانی
عموما در بازارهای مالی با داده های سری زمانی سر و کار داریم. قبلا در این پست (لینک) در خصوص انتخاب داده، نمونه گیری و بازنمونه گیری در یادگیری ماشین صحبت شد. در نمونه گیری های متقاطع رایج، نمونه ها به صورت تصادفی از هر بخش جامعه انتخاب می شدند. اما در داده های سری های زمانی، روش‌های اعتبارسنجی متقاطع (cross-validation) مناسب نیستند، چرا که منجر به آموزش روی داده‌های آینده و ارزیابی روی داده‌های گذشته می‌شوند. برای اطمینان از قابل‌مقایسه‌بودن معیارها در بین بخش‌ها (folds)، نمونه‌ها باید با فواصل زمانی مساوی انتخاب شوند. وقتی این شرط برقرار باشد، هر مجموعه آزمون بازه‌ی زمانی یکسانی را پوشش می‌دهد و اندازه مجموعه آموزش با انباشت داده‌ها از تقسیمات قبلی افزایش می‌یابد.
این نوع اعتبارسنجی متقاطع، نوعی تغییر یافته از KFold است. در تقسیم kام، k بخش اول را به‌عنوان مجموعه آموزش و بخش (k+1)ام را به‌عنوان مجموعه آزمون برمی‌گرداند.

#پایتون_مالی
#انتخاب_داده
#نمونه_گیری

#سری_زمانی
#Time_series
#Sampling


پایتون برای مالی

🆔 t.me/python4finance
🆔 ble.ir/python4finance
25
نمونه‌گیری در داده های سری زمانی- بخش دوم
برای نمونه گیری از سری های زمانی در ماژول scikit-learn از تابع TimeSeriesSplit در کلاس model_selection استفاده می کنیم.
در مثال این پست، نمونه های مختلفی از جامعه برای آموزش و آزمون انتخاب می شود.
#code by @python4finance
import numpy as np
from sklearn.model_selection import TimeSeriesSplit
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4]])
y = np.array([1, 2, 3, 4, 5, 6])
tscv = TimeSeriesSplit()
for i, (train_index, test_index) in enumerate(tscv.split(X)):
print(f"Fold {i}:")
print(f" Train: index={train_index}")
print(f" Test: index={test_index}")


#پایتون_مالی
#انتخاب_داده
#نمونه_گیری

#سری_زمانی
#Time_series
#Sampling


پایتون برای مالی

🆔 t.me/python4finance
🆔 ble.ir/python4finance
18