چگونه می توان با استفاده از FINRL (کتابخانه یادگیری عمیق تقویت) بورس سهام را خودکار کرد؟

ساخت وبلاگ

ابتدا ، بیایید در مورد همه کلمات کلیدی بحث کنیم ، و سپس به قسمت اجرای آن حرکت خواهیم کرد که در آن یک پروژه استارت را در معاملات بازار سهام کد می کنیم.

یادگیری تقویت کننده

یادگیری تقویت یکی از سه الگوی اساسی یادگیری ماشین در کنار یادگیری تحت نظارت و بدون نظارت است. این امر به این موضوع مربوط می شود كه مأمورین باهوش به منظور حداکثر رساندن مفهوم و پاداش به خودی خود اقدام می كنند. این بیشتر شبیه یک آزمایش آزمایشی و خطا است.

reinforcement leaing in FInRL

این داده های دارای برچسب یا هرگونه اقدامات فرعی بهینه را صریحاً تصحیح نمی کند. در عوض ، آن را بر یافتن تعادل بین اکتشاف و بهره برداری متمرکز می کند.

AIM DAILY XO

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

یادگیری تقویت عمیق (RL/DLR عمیق)

یادگیری عمیق تقویت (Deep RL) زیرزمینی از AI و یادگیری ماشین است که ترکیبی از یادگیری تقویت کننده (RL) و یادگیری عمیق است. این یادگیری عمیق را در راه حل ادغام می کند و به عوامل این امکان را می دهد تا از داده های بدون ساختار تصمیم گیری کنند. به عنوان مثال - الگوریتم های Deep RL قادر به ارائه هر پیکسل از صفحه در یک بازی ویدیویی هستند و تصمیم می گیرند که برای حداکثر رساندن نمره بازی چه اقداماتی را انجام دهند.

دارایی کمی

امور مالی کمی به استفاده از مدلهای ریاضی و مجموعه داده های بسیار بزرگ برای تجزیه و تحلیل داده های بازار مالی و اوراق بهادار گفته می شود.

برنامه تلفن همراه ما را بارگیری کنید

Evaluation of quantitative finance

Deep RL/DRL به عنوان یکی از مؤثرترین رویکردهای مالی کمی شناخته شده است تا دریابید که چگونه می توان یک نماینده تجاری DRL عملی را آموزش داد که تصمیم می گیرد کجا تجارت کند ، چه قیمتی را برای تجارت و چه مقدار تجارت می کند.

با ضخامت

a14finance

FINRL یک کتابخانه یادگیری تقویت کننده عمیق (DRL) توسط AI4FINANCE-LLC (جامعه باز برای ارتقاء AI در امور مالی) است که مبتدیان را به انجام تجزیه و تحلیل مالی کمی و توسعه استراتژی های معاملات سهام سفارشی خود در معرض نمایش قرار می دهد. FINRL یک کتابخانه مبتدی با الگوریتم های DRL با تنظیم دقیق است ، و سه اصل اصلی در مقاله تحقیقاتی رسمی آن وجود دارد: "FINRL: یک کتابخانه یادگیری تقویت کننده عمیق برای

  1. کامل بودن: این کتابخانه تمام چارچوب اصلی DRL را به طور کامل پوشش می دهد.
  2. آموزش دستی: یک آموزش دقیق در کتابخانه ارائه می شود.
  3. تکرارپذیری: FINRL شفافیت را برای ارائه اعتماد به نفس به کاربران تضمین می کند.

معماری

کتابخانه FINRL از معماری سه لایه ای که محیط بورس اوراق بهادار (لایه برنامه) ، نماینده تجارت DRL و برنامه تجارت سهام (محیط بازار مالی) است ، پیروی می کند. لایه عامل با لایه محیط به صورت اکتشافی و بهره برداری در تعامل است ، چه تصمیم مکرر بگیرد یا برای پاداش بیشتر اقدام جدیدی انجام دهد.

لایه پایین API را برای لایه بالایی فراهم می کند ، که باعث می شود لایه پایین به لایه فوقانی شفاف شود.

architecture of FinRL

عوامل یادگیری تقویت عمیق

کتابخانه FINRL حاوی الگوریتم های DRL با تنظیم دقیق است ، یعنی: DQN ، DDPG DDPG چند عامل ، PPO ، SAC ، A2C و TD3. این کتابخانه همچنین به کاربران امکان می دهد الگوریتم های DRL سفارشی خود را با تطبیق این الگوریتم ها ، به عنوان مثال ، DDPG تطبیقی یا استفاده از روش های گروه ، طراحی کنند. مقایسه الگوریتم های DRL در شکل زیر نشان داده شده است.

different algorithm in deep reinforcement leaing agents

نصب و راه اندازی

می توانید کتابخانه FINRL را با استفاده از Git یا PIP به شرح زیر نصب کنید:

یا ، می توانید نسخه ناپایدار را با استفاده از PIP نصب کنید:

نصب وابستگی ها

pip instal l-r نیاز. txt

برای سایر وابستگی ها شماره یا پایه پایدار OpenAI (اجرای با کیفیت بالا الگوریتم های DLR) ، به اینجا بروید و برای کسب اطلاعات بیشتر در مورد بسته های پایه بازدید از اینجا اطلاعات کسب کنید

پیاده سازی

یادگیری عمیق برای تجارت سهام از ابتدا: معاملات سهام واحد

بیایید مثالی برای استفاده از کتابخانه FINRL با اجرای برنامه نویسی استفاده کنیم. ما قصد داریم از سهام شرکت Apple استفاده کنیم: AAPL - DataSet ، مشکل طراحی یک راه حل معاملاتی خودکار برای معاملات تک سهام است. اول ، ما فرایند معاملات سهام را به عنوان یک فرآیند تصمیم گیری Markov (MDP) الگوبرداری خواهیم کرد و سپس آن را به عنوان مشکل حداکثر رساندن خود تدوین خواهیم کرد.

چهار مؤلفه اصلی یک محیط یادگیری تقویت وجود دارد:

داده های سهام اپل از API مالی یاهو به دست می آید ، داده ها حاوی قیمت و حجم نزدیک نزدیک به پایین است. ما قصد داریم از Google Colab برای این تظاهرات استفاده کنیم زیرا GPU رایگان برای آموزش و ارزیابی ارائه می دهد و مرجع کد زیر از مخزن رسمی GitHub FINRL در اینجا گرفته شده است

بسته ها را نصب و وارد کنید

! pip install git+https://github. com/AI4Finance-LLC/FinRL-Library. git # import کنید و اگر ماژولی نصب نشد، آن را با استفاده از pandas import pip به عنوان pd import matplotlib. pyplot به عنوان plt import numpy به عنوان np نصب کنید. import matplotlib matplotlib. use('Agg') وارد کردن تاریخ زمان واردات سیستم عامل از finrl. config پیکربندی واردات از finrl. marketdata. yahoodownloader واردات YahooDownloader از finrl. preprocessing. preprocessors واردات FeatureEngineer از finrl. preprocessing. data از finrl. preprocessing. datafinending data. وارد کردن StockTradingEnv از finrl. model. models واردات DRLAgent از finrl. trade. backtest واردات BackTestStats، BaselineStats، BackTestPlot import sys. path. append("../FinRL-Library")

پوشه هایی برای داده ها، معیارهای نتایج و گزارش های تانسوربرد ایجاد کنید

اگر نه os. path. exists("./" + config. DATA_SAVE_DIR): os. makedirs("./" + config. DATA_SAVE_DIR) اگر نه os. path. exists("./" + config. TRAINED_MODEL_DIR): سیستم عامل. makedirs("./" + config. TRAINED_MODEL_DIR) اگر نه os. path. exists("./" + config. TENSORBOARD_LOG_DIR): os. makedirs("./" + config. TENSORBOARD_LOG_DIR) اگر نه os. path. exists("./" + config. RESULTS_DIR): os. makedirs("./" + config. RESULTS_DIR)

داده های سهام اپل را با استفاده از Yahoo finance API دانلود کنید

نگران نباشید، FinRL با نام کلاس YahooDownloader ارائه می شود که راهی آسان برای دانلود داده های سهام از Yahoo Finance API است.

data_df = YahooDownloader(start_date = '2009-01-01', end_date = '2021-01-01', ticker_list = ['AAPL']). fetch_data() data_df. head()

پیش پردازش

بیایید مهندسی ویژگی و تمیز کردن داده ها را انجام دهیم، FinRL شامل کلاس هایی مانند FeatureEngineer (روش هایی برای پیش پردازش داده های قیمت سهام ارائه می کند) و شاخص های فنی است.

## بیایید نام ستون های نشانگر فنی را در config. py ذخیره کنیم tech_indicator_list=config. TECHNICAL_INDICATORS_LIST ## می توانید نشانگرهای فنی بیشتری اضافه کنید ## برای نام های مختلف به https://github. com/jealous/stockstats مراجعه کنید tech_indicator_list=tech_indicator_list+'['kdjk,'open_2_sma','boll','close_10. 0_le_5_c','wr_10','dma','trix'] print(tech_indicator_list) انتقال پارامتر به FeatureEngineer برای افزودن نشانگرهای فنی. fe = FeatureEngineer( use_technical_indicator=True, tech_indicator_list = tech_indicator_list, use_turbulence=False, user_defined_feature = False) data_df = fe. preprocess_data(data_df) data_df. head()

FinRL

ساختمان محیط بازرگانی

این محیط مبتنی بر چارچوب Gym OpenAI است که داده های بازار سهام زنده HTE را با داده های بازار واقعی شبیه سازی می کند. بیایید مجموعه داده ها را به قطار (2009-01-01 تا 2018-12-31) و تجارت (2019-01-01 تا 2020-09-30) تقسیم کنیم.

قطار = data_split (data_df ، start = '2009-01-01' ، end = '2019-01-01') تجارت = data_split (data_df ، start = '2019-01-01' ، end = '2021-01-01')

محیط شروع

stock_dimension = len (train. tic. unique ()) state_space = 1 + 2*stock_dimension + len (config. technical_indicators_list)*stock_dimension چاپ (f "ابعاد داده سهام: ، فضاهای دولتی:") env_kwargs =<"hmax": 100, "initial_amount": 100000, "transaction_cost_pct": 0.001, "state_space": state_space, "stock_dim": stock_dimension, "tech_indicator_list": config.TECHNICAL_INDICATORS_LIST, "action_space": stock_dimension, "reward_scaling": 1e-4>e_train_gym = StockTradingEnv (df = قطار ، ** env_kwargs) env_train ، _ = e_train_gym. get_sb_env () چاپ (نوع (env_train))

الگوریتم های DRL را پیاده سازی کنید

کتابخانه FINRL از الگوریتم های تنظیم شده دقیق مانند DQN ، DDPG ، DDPG چند عامل ، PPO ، SAC ، A2C و TD3 استفاده می کند. اجرای الگوریتم های DRL مبتنی بر خط مقدمات OpenAI و پایدار است

عامل = drlagent (env = env_train)

آموزش در 5 مدل مختلف

ما قصد داریم در 5 مدل مختلف ارائه شده توسط FINRL: A2C ، DDPG ، PPO ، TD3 و SAC ، پیاده سازی کنیم.

1. مدل: A2C

عامل = drlagent (env = env_train) a2c_params = model_a2c = عامل. get_model (model_name = "a2c" ، model_kwargs = a2c_params) treaved_a2c = عامل. train_model (model = model_a2c ، tb_log_name = 'a2mestr00' a2mests 'a2mests' a2mests 'a2 _log_name =' a2 _log_name)

2. مدل: DDPG

3. مدل: PPO

عامل = drlagent (env = env_train) ppo_params =

model_ppo = Agent. get_model ("ppo" ، model_kwargs = ppo_params) trained_ppo = عامل. train_model (model = model_ppo ، tb_log_name = 'ppo "، total_timesteps = 80000)<"n_steps": 2048, "ent_coef": 0.005, "leaing_rate": 0.0001, "batch_size": 128,>4. مدل: TD3

FinRL

عامل = drlagent (env = env_train) td3_params = model_td3 = عامل. get_model ("td3" ، model_kwargs = td3_params) te_td3 = عامل . train_model (model = model_td3 ، tb_log_name = 'td3' td3 'td3'

5. مدل: کیسه

عامل = drlagent (env = env_train) sac_params =

model_sac = Agent. get_model ("sac" ، model_kwargs = sac_params) trained_sac = عامل. train_model (model = model_sac ، tb_log_name = 'sac' ، total_timesteps = 30000)<"batch_size": 128, "buffer_size": 100000, "leaing_rate": 0.0001, "leaing_starts": 100, "ent_coef": "auto_0.1",>تجارت

ما پنج مدل مختلف را در مجموعه داده های خود آموزش داده ایم و اکنون اجازه می دهیم با استفاده از کلاس محیطی که در بالا برای ایجاد محیط تجارت در آن قرار داشتیم ، تجارت کنیم ، فرض کنیم که شما در تاریخ 2019-01-01 100 کیلو دلار اولیه پول دارید. ما از مدل آموزش دیده TD3 برای تجارت AAPL استفاده خواهیم کرد.

Trade. head ()

پیش بینی کنید و تغییر ارزش حساب را دریافت کنید

trading stocks using deep reinforcement library finrl

= drlagent. drl_prediction (مدل = trained_td3 ، test_data = تجارت ، test_env = env_trade ، test_obs = obs_trade)

عملکرد پشتی

برای ارزیابی عملکرد مدل ما از یک استراتژی تجارت. یک ابزار خودکار پشتی به دلیل کاهش همه خطاهای انسانی ترجیح داده می شود. ما از بسته Quantopian Pyfolio استفاده خواهیم کرد تا استراتژی های معاملاتی خود را پشت سر بگذاریم.

صفحه پشتی

print("==============Results========== wp-block-image">result of training finrl 

٪ matplotlib inline backtestplot (حساب_ value = df_account_value ، پایه_ticker = 'aapl' ، basine_start = '2019-01-01' ، basine_end = '2021-01-01')

نتیجه

plotting apple stocks finrl data analysis of apple stock FinRL FinRL finrl plotting apple stocks data using finrl

ما در مورد تمام کتابخانه های FINRL که یک کتابخانه یادگیری عمیق (DRL) هستند که به طور خاص برای تجارت خودکار سهام طراحی شده اند ، بحث کرده ایم و برای اهداف آموزشی و تظاهرات منبع باز هستند. ما مدل های مختلف آموزشی و معیارها و توطئه های خروجی را مشاهده کرده ایم. اگر می خواهید از داده های سفارشی استفاده کنید ، فقط می توانید از داده های سفارشی استفاده کنید ، فقط می توانید از داده های سفارشی استفاده کنید و برای آموزش و ارزیابی خوب هستید.

حداکثر عملکرد در عملکرد FINRL تا حد زیادی به دلیل سقوط بازار Covid-19 بود. می توانید اثر پس از آن را در جدول 1 در مقاله تحقیقاتی رسمی در اینجا مشاهده کنید. در صفحه 8

برای کسب اطلاعات بیشتر در مورد FINRL ، در اینجا برخی از منابعی که می توانید دنبال کنید وجود دارد:

مقاله تحقیقاتی رسمی

  • مخزن رسمی GitHub
  • آموزش برای معاملات متعدد سهام
  • آموزش برای تخصیص نمونه کارها
  • نوت بوک Jupyter
  •  
استراتژی برای تجارت گزینه های...
ما را در سایت استراتژی برای تجارت گزینه های دنبال می کنید

برچسب : نویسنده : فریبا کامران بازدید : 27 تاريخ : پنجشنبه 16 شهريور 1402 ساعت: 11:33