سلب مسئولیت: این یک رویکرد تحقیق و آموزشی مبتنی بر اطلاعات است. به دلیل خطرات ناشی از سهام معاملات ، با الگوریتم ، مواد و نتایج حاصل از این مقاله سرمایه گذاری نکنید.
معرفی
علاقه من به یادگیری ماشین ، تجزیه و تحلیل داده ها و بورس سهام باعث شد تا این موضوع را برای پروژه سال آخر Capstone سال خود انتخاب کنم. من این پروژه را روی یکی از بسیاری از برنامه های یادگیری ماشین در امور مالی متمرکز کردم. صنعت مالی در حال رشد است و به دنبال راه هایی برای استفاده از یادگیری ماشین است زیرا خدمات کارآمد ایجاد کرده است که به مشتریان و مشتریان با سرمایه گذاری های مالی ارزش افزوده می کند.
پیش بینی قیمت سهام قانون پیش بینی قیمت سهام بر اساس داده های تاریخی است. من برای تشخیص روندها و درک بازار فعلی از داده های تاریخی در یادگیری ماشین استفاده کردم. یادگیری ماشین با استفاده از مدلهای آماری برای ترسیم بینش و پیش بینی ، فرایند تجارت را خودکار می کند. یادگیری ماشین می تواند مقدار زیادی از داده ها را هم ساختار یافته و چه ساختار یافته جمع آوری و آزمایش کند. این می تواند الگوریتم های مناسب را اعمال کند ، تبدیل ، جستجو برای الگوهای و تصمیم گیری بر اساس داده های جدید.
من کارهای بسیاری را برای استفاده از رویکرد یادگیری ماشین در الگوی تجزیه و تحلیل و پیش بینی انجام داده ام. به دلیل افزایش و اهمیت یادگیری ماشین در صنعت ، این امیدوار کننده است. پیش بینی قیمت دقیق سهام به دلیل ماهیت بازار سهام مالی ، که شامل روندهای فعلی ، سیاست و اقتصاد است ، چالش برانگیز است. آنها با تصمیم گیری در مورد خرید ، فروش یا نگه داشتن سهام ، تأثیر سنگینی بر قیمت ها ایجاد می کنند. بنابراین ، خطرات اجتناب ناپذیر است و فقط می توان کاهش یافت.
این پروژه نشان می دهد که چگونه تلاش های مختلفی برای استفاده از یادگیری ماشین در پیش بینی سهام برای شاخص S& P500 انجام شده است. من آن را در پایتون با کتابخانه های منبع باز پیاده سازی کردم. من داده های تاریخی را از مالی یاهو دریافت کردم و روشهای پیش پردازش را برای ایجاد داده ها به کار بردم. همچنین ، با استفاده از اعتبار سنجی متقاطع جستجوی شبکه تصادفی ، یک فرآیند تنظیم بیش از حد برای اعتبارسنجی مدل برای ساختمان ، اتصالات و آموزش برای پیش بینی. پس از پیش بینی ، تجزیه و تحلیل خطا برای شناسایی نحوه عملکرد مدل و چگونگی دقیق مقادیر پیش بینی شده بسیار مهم است.
از مدل رگرسیون جنگلی تصادفی برای پیش بینی استفاده می شود. این پیش بینی مقادیر پایین و زیاد روزهای معاملاتی بعدی را پیش بینی می کند ، که شامل قیمت های آینده برای پنج روز آینده ، یک ماه و یک سال S& P500 است. نتیجه خرید ، فروش یا نگه داشتن سهام بر اساس مقادیر پیش بینی شده خواهد بود. هدف از این پروژه جمع آوری داده ها ، پردازش داده ها و ساختن الگوریتم معاملاتی برای پیش بینی است.
1. واردات کتابخانه ها
کتابخانه های زیر باید قبل از شروع نصب شوند.
- PANDAS - یک کتابخانه پایتون که پرونده داده را به عنوان یک قاب داده Pandas برای تجزیه و تحلیل داده ها بارگیری می کند.
- Matplotlib - یک بسته پایتون برای ترسیم نمودارها.
- Scikit-Lea-یک کتابخانه با منبع باز پایتون که در تجزیه و تحلیل داده ها استفاده می شود و از مدل های یادگیری ماشین ، پیش پردازش ، ارزیابی مدل و برنامه های آموزشی پشتیبانی می کند. همچنین به عنوان یک کتابخانه فرعی برای train_test_split ، RandomForestRengressor ، StandardsCaler ، تصادفی searchcv و معیارها عمل می کند.
- Numpy - یک کتابخانه پایتون که با آرایه کار می کند.
- YFINANCE-یک کتابخانه منبع باز پایتون برای دسترسی به داده های مالی استفاده می شود.
yfinance را به عنوان yf وارد کنیدDateTime را به عنوان dt وارد کنیدواردات پاندا به عنوان PDوارد کردن numpy به عنوان npاز واردات numpy arangeوارد کردن matplotlib. pyplot به عنوان pltاز پاندا واردات read_csv را وارد کنیداز معیارهای واردات Skleaاز sklea. model_selection واردات قطار_test_splitاز Sklea. Ensemble Import RandomForestRengratorاز Sklea. Preprocessing StandardsCalerاز sklea. model_selection واردات تصادفی searchcv
2. مجموعه داده ها را وارد کنید
اطلاعات مورد نیاز این پروژه داده های تاریخی است. این شامل تاریخ ، قیمت باز ، قیمت نزدیک ، بالاترین قیمت ، کمترین قیمت و حجم معاملات برای هر روز معاملات است. معامله گران از این داده ها برای اندازه گیری نوسانات سهام استفاده می کنند.
داده ها از طریق اسکریپت پایتون دریافت می شوند. در اینجا ، از یک اسکریپت پایتون برای به دست آوردن داده ها با استفاده از yfinance استفاده می شود. این داده های سهام S& P500 را از اول ژانویه 2017 تا شانزدهم اکتبر 2021 بدست می آورد. داده های سهام S& P5 بارگیری شده در یک قاب داده بارگذاری شده و به یک پرونده CSV (مقدار جداگانه کاما) تبدیل می شود. بنابراین ، من می توانم آن را به صورت محلی ذخیره کنم و به سرعت آن را در الگوریتم بارگذاری کنم. من مجموعه داده ها را در sp500_data. csv ذخیره کردم.
sp500data = yf. download ("^gspc" ، start = "2017-01-01" ، end = "2021-10-16")sp500_df = pd. dataframe (sp500_data)sp500_df. to_csv ("sp500_data. csv")3. داده ها را تجسم کنید
نمودار خطی از قیمت های نزدیک تنظیم شده را با گذشت زمان ترسیم کنید.
read_df = pd. read_csv ("sp500_data. csv")read_df. set_index ("تاریخ" ، inplace = true)read_df ['adj Close']. طرح ()plt. ylabel ("قیمت های نزدیک تنظیم شده")plt. show ()نتیجه:
4- داده های پیش پردازش
این مرحله مهمترین بخش این پروژه است. پیش پردازش داده ها اقداماتی برای آماده سازی داده ها برای مدل یادگیری ماشین انجام می شود. پیش پردازش شامل تبدیل داده های خام به فرمی است که مدل می تواند از آن استفاده کند و روی آن کار کند. این پروژه با هدف داشتن مجموعه داده ای که مدل آن را می پذیرد ، و الگوریتم می فهمد. در یک مجموعه داده ، مقادیر می توانند از بین بروند و اطلاعات می توانند زائد و بی ربط باشند یا پر سر و صدا باشند. تمیز کردن داده ها نوعی پیش پردازش است که شامل از بین بردن مقادیر گمشده یا متناقض و تغییر شاخص است. و همچنین انتخاب ویژگی ، تنظیم HyperParameter و استاندارد سازی داده ها.
بیان سوالات به شما کمک می کند تا تعیین کنید که چرا قبل از پردازش اهمیت دارد؟این مدل باید با آنچه شما به آن می دهید کار کند. بنابراین ، چگونه می توانم از پیش پردازش کنم تا مدل من بتواند داده ها را بپذیرد؟ما قصد داریم به نوع داده هایی که داریم توجه کنیم.
مرحله 1: پرونده را بخوانید و تاریخ را به عنوان فهرست تنظیم کنید.
df = pd. read_csv ("sp500_data. csv")df. set_index ("تاریخ" ، inplace = true)df. dropna (inplace = true)مرحله 2: انتخاب ویژگی
اینجاست که ویژگی های X و Y برای دستیابی به مجموعه داده های مدل انتخاب می شوند. ویژگی های X و Y برای مجموعه داده های آموزش و آزمایش اعلام شده است.
ویژگی ها ستون هایی در مجموعه داده هستند. انتخاب ویژگی یکی از مفاهیم اساسی برنامه های یادگیری ماشین است که تأثیر فوق العاده ای بر عملکرد مدل دارد. در انتخاب آینده ، هر ستون لازم نیست. این ویژگی های انتخاب شده دارای تأثیر هستند و به خروجی پیش بینی کمک می کنند. ویژگی های غیر ضروری عملکرد کلی مجموعه آزمون را کاهش می دهد. روشی برای انتخاب آینده ، پیدا کردن مهمترین ویژگی ها ، اهمیت ویژگی است. Sklea دارای اهمیت ویژگی و ماژول انتخاب کننده ویژگی است که می تواند اجرا شود. با استفاده از ماژول اهمیت ویژگی ، به هر ویژگی در داده ها نمره داده می شود. ویژگی هایی با بالاترین امتیاز مهمترین آنهاست و متغیرهای خروجی صدا تضمین می شوند. مزایای استفاده از انتخاب ویژگی شامل بهبود دقت ، کاهش بیش از حد ، کاهش زمان آموزش و بهبود تجسم داده ها است. ویژگی های بیشتری وجود دارد ، این مدل احتمالاً از افزایش بیش از حد رنج می برد.
X مقادیر ستون های باز ، بالا ، کم ، نزدیک و ADJ Close را در خود نگه می دارد. y مقادیر برای ستون Adj-Close را نگه می دارد. ستون های دیگر ، از جمله حجم ، برای این روند انتخاب نشده اند زیرا به آنها احتیاج نخواهد داشت. از پنج ویژگی استفاده شد.
x = df. iloc [: ، 0: 5] . valuesy = df. iloc [: ، 4]
x. shape = (1206 ، 5) و y. shape = (1206 ،) شکل نقطه طول آرایه است. مقادیر x و y با استفاده از شکل متفاوت انتخاب تغییر می کند.
مرحله 3: به مجموعه داده های قطار و تست تقسیم کنید.
قبل از مدل سازی ، مجموعه داده باید به یک مجموعه داده آموزش و آزمایش تقسیم شود.
مجموعه آموزش: زیر مجموعه ای از مجموعه داده است که برای ساخت و متناسب بودن مدل های پیش بینی شده استفاده می شود. یک مجموعه آموزشی با ساختن یک اسکریپت مجموعه داده آموزشی ایجاد می شود که ویژگی های مجموعه آموزش را از گزینه های ورودی و داده های قیمت سهام خام ایجاد می کند. داده ها برای آموزش در مدل تغذیه می شوند. این مدل از این داده ها یاد می گیرد و در مجموعه قطار اجرا می شود.
مجموعه آزمایش: زیر مجموعه ای از مجموعه داده ها برای ارزیابی عملکرد احتمالی آینده یک مدل است. این یک استاندارد خوب برای ارزیابی مدل است. مجموعه آزمایش در برابر مجموعه داده های پیش بینی شده و آزمایش مدل آموزش داده شده استفاده می شود. این مدل این بخش از مجموعه را ندیده است. برای اهداف ارزیابی استفاده می شود.
x_train ، x_test ، y_train ، y_test = train_test_split (x ، y ، test_size = 0. 26 ، random_state = 0)
مرحله 4: مقیاس بندی ویژگی ها
این استاندارد سازی داده ها نامیده می شود. Sklea دارای تابعی به نام استاندارد Scaler است که برای استاندارد سازی مجموعه داده استفاده می شود. استاندارد سازی برای بهبود پایداری عددی مدل و افزایش سرعت آموزش شناخته شده است.
"این یک عمل خوب است که متناسب با مقیاسگر روی داده های آموزش و سپس داده های آزمایش را تغییر دهید. این امر از هرگونه نشت داده در طی فرآیند تست مدل جلوگیری می کند. این زمانی مفید است که می خواهید داده هایی را که مطابق با واحدهای مختلف است مقایسه کنید. "
ما با استفاده از مقیاس استاندارد ، X_Train و X_Test را مقیاس می دهیم.
مقیاس = استاندارد ()x_train = scale. fit_transform (x_train)x_test = scale. transform (x_test)
مرحله 4: تنظیم HyperpareMater
HyperParameters تنظیمات مدل است. داشتن پارامترهایی که برای بهینه سازی عملکرد تنظیم شده اند ، مهم است. من آن را بعد از آموزش و آزمایش مجموعه داده ، قبل از قرار دادن و پیش بینی تنظیم کردم. HyperParameters مشکل اصلی در یادگیری ماشین را که بیش از حد است ، حل می کند. من در این پروژه از اعتبار سنجی متقابل تصادفی استفاده کردم.
Hyperparameters در مدل جنگل تصادفی یا برای افزایش قدرت پیش بینی کننده مدل یا سریعتر کردن مدل استفاده می شود.
برای یک مدل رگرسیون جنگلی تصادفی ، بهترین پارامترهای مورد توجه عبارتند از:
- n_estimators - تعداد درختان در جنگل
- max_depth - حداکثر عمق در یک درخت
- min_samples_split - حداقل تعداد نقاط داده قبل از تقسیم نمونه
- min_samples_leaf - حداقل تعداد گره های برگ که باید نمونه برداری شوند
- bootstrap - نمونه برداری برای نقاط داده ، درست یا نادرست
- Random_State - تعداد تصادفی برای جنگل تصادفی تولید می شود.
grid_rf = 'n_estimators': [20 ، 50 ، 100 ، 500 ، 1000]'max_depth': np. arange (1 ، 15 ، 1) ،'min_samples_split': [2 ، 10 ، 9] ،'min_samples_leaf': np. arange (1 ، 15 ، 2 ، dtype = int) ،'bootstrap': [درست ، نادرست] ،'Random_state': [1 ، 2 ، 30 ، 42]>rscv = تصادفی searchcv (برآوردگر = مدل ، param_distributions = grid_rf ، cv = 3 ، n_jobs = -1 ، verbose = 2 ، n_iter = 200)rscv_fit = rscv. fit (x_train ، y_train)بهترین_ پارامترها = rscv_fit. best_params_چاپ (بهترین_ پارامترها)
نتیجه:
[cv] bootstrap end = true ، max_depth = 9 ، min_samples_leaf = 1 ، min_samples_split = 9 ، n_estimators = 500 ، random_state = 2 ؛زمان کل = 1. 6s
[cv] bootstrap end = true ، max_depth = 9 ، min_samples_leaf = 1 ، min_samples_split = 9 ، n_estimators = 500 ، random_state = 2 ؛زمان کل = 1. 5s
[cv] bootstrap end = false ، max_depth = 9 ، min_samples_leaf = 3 ، min_samples_split = 10 ، n_estimators = 500 ، random_state = 2 ؛زمان کل = 1. 6s
[cv] bootstrap end = false ، max_depth = 9 ، min_samples_leaf = 3 ، min_samples_split = 10 ، n_estimators = 500 ، random_state = 2 ؛زمان کل = 1. 6s
[cv] bootstrap end = false ، max_depth = 9 ، min_samples_leaf = 3 ، min_samples_split = 10 ، n_estimators = 500 ، random_state = 2 ؛زمان کل = 1. 6s
[cv] bootstrap end = false ، max_depth = 1 ، min_samples_leaf = 9 ، min_samples_split = 10 ، n_estimators = 1000 ، random_state = 2 ؛زمان کل = 1. 6s
[cv] bootstrap end = false ، max_depth = 1 ، min_samples_leaf = 9 ، min_samples_split = 10 ، n_estimators = 1000 ، random_state = 2 ؛زمان کل = 1. 5s
[cv] bootstrap end = false ، max_depth = 1 ، min_samples_leaf = 9 ، min_samples_split = 10 ، n_estimators = 1000 ، random_state = 2 ؛زمان کل = 1. 5s
[cv] bootstrap end = true ، max_depth = 3 ، min_samples_leaf = 9 ، min_samples_split = 9 ، n_estimators = 1000 ، random_state = 2 ؛زمان کل = 2. 3s
[cv] bootstrap end = true ، max_depth = 3 ، min_samples_leaf = 9 ، min_samples_split = 9 ، n_estimators = 1000 ، random_state = 2 ؛زمان کل = 2. 3s
5- مدل را اعمال کرده و پیش بینی کنید
اکنون مجموعه داده برای مدل آماده است. اولین قدم این است که یک مقدار برای حالت تصادفی انتخاب کنید و درخت را بر اساس تعداد حالت های تصادفی بسازید. جنگل تصادفی با ایجاد زیرمجموعه های تصادفی از ویژگی ها و ساختن درختان کوچکتر با استفاده از این زیر مجموعه ها از برازش بیش از حد جلوگیری می کند. برای ساختن جنگل تصادفی، داده ها باید آموزش داده شوند. همچنین، اینجا جایی است که پارامترهای تنظیم هایپرپارامتر اعمال می شوند.
مدل = RandomForestRegressor(n_estimators=500, random_state=42, min_samples_split=2, min_samples_leaf=1, max_depth=10, bootstrap=True)model. fit(x_train، y_train)predict = model. predict(x_test)چاپ (پیش بینی)print(predict. shape)
نتیجه:
[ 2802. 86056944 2269. 85750483 2477. 74466762 2766. 66301296 2374. 42506466 4186. 38753688 2634. 951824 2634. 951824. 4695 2855. 06226344 3131. 29479236 2468. 950334 4471. 22437158 4372. 35380957 2449. 15157999 4221. 59524 4226. 59525 13304 2574. 02973146 4442. 45695459 3804. 28322217 3462. 75922217 3693. 31345703 2953. 07781528 2934678. 5099634 2557. 40480942 4457. 36409033 3246. 82609651 3909. 51829541 2895. 40942318 2839. 78738238 27218 2839. 78738238 27218 2. 98224145 3380. 38209671 2514. 85785607 2365. 21841972 2941. 80436097 3470. 12492676 4515. 0321851974 4515. 0321851974 2659. 2645638 2976. 54650081 3184. 4597124 4439. 67785669 2751. 491074692279. 15900854 4203. 51592741 3727. 24902539 2951. 28400113 2811. 7957286 2872. 68410491 2426. 0523400113 2872. 68410491 2426. 051534649 594 2884. 65725974 3286. 42364014 3556. 61905762 2395. 49148071 4146. 90240527 2874. 4843484 3965. 5024 3965. 502 25 3075. 12630176 4523. 85240527 3225. 66883659 2882. 05245894 2792. 77252876 3809. 20848584 3695. 59328 3695. 5110 31159 2789. 6221085 2276. 46002652 2659. 14468915 2641. 1087841]
این مقادیر پیش بینی شده را برای 314 روز معاملاتی آینده چاپ می کند. predict. shape = (314، 1)
6. معیارهای آماری و ارزیابی عملکرد
معیارهای آماری معیارهای خطا برای رگرسیون هستند و من از آنها برای محاسبه ریسک استفاده کردم. ارزیابی مدل حیاتی است و برای کاهش ریسک و افزایش عملکرد مدل نیاز به ارزیابی دارد.
میانگین خطای مربع ریشه (RMSE) انحراف استاندارد باقیمانده ها (خطاهای پیش بینی) است. باقیمانده ها اندازه گیری نقاط داده از خط رگرسیون را اندازه گیری می کنند. RMSE اندازه گیری از نحوه پخش این باقیمانده ها است. به عبارت دیگر ، این می گوید که چگونه داده ها در اطراف خط بهترین تناسب متمرکز شده اند. همچنین ، این ریشه مربع MSE است. هرچه مقدار RMSE کمتر باشد ، عملکرد بهتر می شود. این باید کم باشد زیرا خطاهای بیشتری نسبت به سایر معیارها اندازه گیری می کند. مقدار RMSE که بیشتر از 0. 5 است ، نشان دهنده توانایی ضعیف مدل در پیش بینی دقیق داده ها است. این مدل داده های دقیق تری را پیش بینی می کند که مقدار RMSE کمتر از 0. 5 و بیشتر از 0. 3 باشد.
میانگین خطای مطلق (MEA) میانگین بزرگی خطاها را در مجموعه ای از پیش بینی ها بدون در نظر گرفتن جهت آنها اندازه گیری می کند. این میانگین تفاوت مطلق بین پیش بینی و مشاهده واقعی است که در آن همه اختلافات فردی دارای وزن برابر است. مهمتر از همه ، فاصله بین مقدار واقعی و مقدار پیش بینی شده را اندازه گیری می کند. فرض کنید مقدار MEA 5 وجود دارد. مقدار واقعی 20 است و مقدار پیش بینی 25 است. با این حال ، MAE خطاها را در پیش بینی مجازات نمی کند. بنابراین ، اگر خطاها مورد بررسی قرار می گرفت ، باید میانگین خطای مربع یا خطای میانگین مربع ریشه باشد. مقادیر پایین تر ، بهتر.
میانگین خطای مربع (MSE) مقدار مطلق خطا را می گیرد. میانگین خطای مربع عملکرد مدل را نیز تعیین می کند. در این حالت ، خطاهای بزرگتر به خوبی مورد توجه قرار گرفته است ، بیش از موارد MAE. هرچه مقدار MSE پایین تر باشد ، دقت پیش بینی بیشتر می شود.
ارزیابی عملکرد در یادگیری ماشین برای دانستن اینکه پیش بینی و مدل چقدر خوب است بسیار مهم است. در این پروژه ، از مربع R و دقت برای ارزیابی مدل استفاده شد. مقدار خروجی بدست آمده از ارزیابی مدل تعیین می کند که آیا مدل نیاز به بهبود دارد یا خیر. این می تواند یک الگوریتم متفاوت را امتحان کنید ، پارامترها را بیش از حد تنظیم کنید ، داده های بیشتری اضافه کنید یا از مهندسی ویژگی استفاده کنید.
مربع R نشان می دهد که چگونه یک مدل به یک مجموعه داده خاص متناسب است. این نشان می دهد که خط رگرسیون چقدر نزدیک است ، یعنی مقادیر پیش بینی شده و واقعی. حداکثر مقدار 1. 0 است. بنابراین ، هرچه مقادیر بالاتر باشد ، متناسب با مدل بهتر می شود. خط رگرسیون متناسب با داده ها به خوبی است و عملکرد مدل خوب است وقتی مقادیر مربع R بین 0. 6-1. 0 باشد. مقادیر بالاتر از 65 ٪ خوب تلقی می شوند.
با افزایش داده ها در اندازه ، نمرات متریک خطا و مقادیر دقت افزایش می یابد.
چاپ ("میانگین خطای مطلق:" ، دور (metrics. mean_absolute_error (y_test ، پیش بینی) ، 4))چاپ ("میانگین خطای مربع:" ، دور (metrics. mean_squared_error (y_test ، پیش بینی) ، 4))چاپ ("خطای میانگین مربع ریشه:" ، دور (np. sqrt (metrics. mean_squared_error (y_test ، پیش بینی)) ، 4))چاپ ("(R^2) امتیاز:" ، دور (metrics. r2_score (y_test ، پیش بینی) ، 4))چاپ (نمره f'train:٪ و نمره آزمون:٪ با استفاده از رگرسیون درخت تصادفی.)خطاها = ABS (پیش بینی - y_test)mape = 100 * (خطاها / y_test)دقت = 100 - np. mean (mape)چاپ ("دقت:" ، دور (دقت ، 2) ، "٪.") نتیجه:
میانگین خطای مطلق: 2. 2478میانگین خطای مربع: 15. 9311خطای مربع میانگین ریشه: 3. 9914(R^2) امتیاز: 1. 0نمره قطار: 100. 00 ٪ و نمره آزمون: 100. 00 ٪ با استفاده از رگرسیون درخت تصادفی.دقت: 99. 93 ٪.
7. روزهای آینده را از مقادیر و طرح های پیش بینی شده جمع کنید
من فریم های داده را با مقادیر پیش بینی شده برای یک سال آینده ، یک ماه و پنج روز ایجاد کردم. 252 روز معاملات در سال ، 21 روز معاملات در یک ماه و 5 روز معاملات در 5 روز وجود دارد. من روزهای مورد نیاز آینده را از پیش بینی شده ، 341 روز معاملاتی که برگزار می شود ، استخراج کردم. تاریخ و قیمت این روزهای آینده به پرونده های CSV تبدیل می شود.
پیش بینی = pd. dataframe (، index = pd. date_range (start = df. index [-1] ، دوره = len (پیش بینی) ، freq = "d"))Predictions. to_csv ("پیش بینی قیمت-data. csv")#روزهای آینده را از مقادیر پیش بینی شده جمع می کندoneyear_df = pd. dataframe (پیش بینی ها [: 252])Oneyear_df. to_csv ("یک ساله-پیش بینی. csv")onemonth_df = pd. dataframe (پیش بینی ها [: 21])onmonth_df. to_csv ("یک ماه-پیش بینی. csv")fivedays_df = pd. dataframe (پیش بینی ها [: 5])fivedays_df. to_csv ("پنج روز-پیش بینی. csv")برای فهمیدن قیمت های خرید ، فروش و نگه داشتن ، سرمایه گذاران به دنبال سود با فروش با بالاترین قیمت ، خرید با کمترین قیمت و در صورت عدم وقوع قیمت هستند. مثلا؛یک سرمایه گذار سهام را در پایین ترین نقطه با 5 دلار خریداری می کند و پیش بینی شده است که در 21 روز ، قیمت به 20 دلار می رسد ، که سرمایه گذار سهام خود را تا روز بیست و یکم برای فروش به سود خود نگه می دارد. بنابراین ، حداکثر قیمت در این زمینه قیمت فروش است و حداقل قیمت خرید است.
پیش بینی یک ساله:
oneyear_df_pred = pd. read_csv ("یک ساله-پیش بینی. csv")oneyear_df_pred. set_index ("تاریخ" ، inplace = true)buy_price = min (oneyear_df_pred ["پیش بینی"])sell_price = max (oneyear_df_pred ["پیش بینی"])oneyear_buy = oneyear_df_pred. loc [oneyear_df_pred ["پیش بینی"] == buy_price]oneyear_sell = oneyear_df_pred. loc [oneyear_df_pred ["پیش بینی ها"] == sell_price]چاپ ("قیمت و تاریخ خرید")چاپ (OneyEar_buy)چاپ ("قیمت فروش و تاریخ")چاپ (OneyEar_sell)oneyear_df_pred ["پیش بینی"]. طرح (figsize = (10 ، 5) ، عنوان = "پیش بینی برای 1 سال آینده" ، Color = "Blue")plt. xlabel ("تاریخ")plt. ylabel ("قیمت")plt. legend ()plt. show ()نتیجه:
قیمت و تاریخ خرید2021-10-16 2269. 857505فروش قیمت و تاریخ2021-12-22 4523. 852405
پیش بینی یک ماه:
onmonth_df_pred = pd. read_csv ("یک ماه-پیش بینی. csv")onmonth_df_pred. set_index ("تاریخ" ، inplace = true)buy_price = min (onemonth_df_pred ["پیش بینی"])sell_price = max (onemonth_df_pred ["پیش بینی"])onemonth_buy = onemonth_df_pred. loc [onemonth_df_pred ["پیش بینی"] == buy_price]onemonth_sell = onemonth_df_pred. loc [onemonth_df_pred ["پیش بینی"] == sell_price]چاپ ("قیمت و تاریخ خرید")چاپ (onemonth_buy)چاپ ("قیمت فروش و تاریخ")چاپ (onemonth_sell)onemonth_df_pred ["پیش بینی ها"]. طرح (figsize = (10 ، 5) ، عنوان = "پیش بینی برای 1 ماه آینده" ، color = "آبی")plt. xlabel ("تاریخ")plt. ylabel ("قیمت")plt. legend ()plt. show ()نتیجه:
قیمت و تاریخ خرید2021-10-16 2269. 857505فروش قیمت و تاریخ2021-10-27 4471. 224372
پیش بینی پنج روز:
fivedays_df_pred = pd. read_csv ("پنج روز-پیش بینی. csv")fivedays_df_pred. set_index ("تاریخ" ، inplace = true)buy_price = min (fivedays_df_pred ["پیش بینی"]sell_price = max (fiveDays_df_pred ["پیش بینی"])fivedays_buy = fiveDays_df_pred. loc [fivedays_df_pred ["پیش بینی ها"] == buy_price]fivedays_sell = fiveDays_df_pred. loc [fivedays_df_pred ["پیش بینی ها"] == sell_price]چاپ ("قیمت و تاریخ خرید")چاپ (FiveDays_buy)چاپ ("قیمت فروش و تاریخ")چاپ (FiveDays_Sell)fivedays_df_pred ["پیش بینی"]. طرح (figsize = (10 ، 5) ، عنوان = "پیش بینی برای 5 روز آینده" ، color = "آبی")plt. xlabel ("تاریخ")plt. ylabel ("قیمت")plt. legend ()plt. show ()نتیجه:
قیمت و تاریخ خرید2021-10-16 2269. 857505فروش قیمت و تاریخ2021-10-15 2802. 860569
نتیجه
برای حل این مشکلات رویکردهای مختلفی وجود دارد. عملکرد آنها می تواند با تجزیه و تحلیل ریاضی برای پیش بینی به تجزیه و تحلیل احساسات ، مقالات خبری مالی و بررسی های متخصص متفاوت باشد. با این حال ، به دلیل اینکه بازار سهام چقدر ناخوشایند است ، هیچ سیستم پیش بینی کامل یا دقیقی وجود ندارد. این الگوریتم همچنین برای هر کسی که نیاز به تهیه یک مدل به سرعت دارد ، یک انتخاب عالی است. این نشانگر بسیار خوبی از اهمیتی است که به ویژگی های شما اختصاص می دهد. به طور کلی ، جنگل تصادفی عمدتا سریع ، ساده و انعطاف پذیر است ، اما بدون برخی محدودیت ها. آیا مدل من می تواند بهتر عمل کند؟بله می شود. آیا می توانم آن را بهبود ببخشم؟بله می توانم. این می تواند به اندازه کافی خوب باشد که آن را با پول واقعی پیاده سازی کنید.
فارکس به زبان ساده...
ما را در سایت فارکس به زبان ساده دنبال می کنید
برچسب :
نویسنده : طاهره ایرانی
بازدید : <-PostHit->
تاريخ : شنبه
21 مرداد
1402 ساعت: 12:15