These are the source codes for our paper titled "Dynamic Portfolio Rebalancing through Reinforcement Learning" published at Neural Computing and Application in 2022.
Welcome to cite our paper.
How to cite our paper:
Q. Y. E. Lim, Q. Cao, and C. Quek, "Dynamic portfolio rebalancing through reinforcement learning," Neural Computing and Applications, vol. 34, no. 9, pp. 7125-7139, 2022. (https://doi.org/10.1007/s00521-021-06853-3).
- choose_set_num: index of data_set where data_set = ['portfolio1', 'portfolio2', 'portfolio3']
- stocks: Stock tickers in order of risk (Desc)
- path: path to save, replace '/' with ','
- load: whether to load / train
- full_swing: whether to use full_swing / gradual approach
- train without LSTM prediction (gradual approach)
python3 train_wo_predict.py \
--choose_set_num=0 \
--stocks=WMT,AXP,MCD \
--path=data,rl,portfolio1,lagged
- load without LSTM prediction (gradual approach)
python3 train_wo_predict.py \
--choose_set_num=0 \
--stocks=WMT,AXP,MCD \
--path=data,rl,portfolio1,lagged \
--load
- train LSTM model. To run for all tickers
python3 lstm_pred.py --stock=WMT --stock_file=portfolio1
python3 lstm_pred.py --stock=AXP --stock_file=portfolio1
python3 lstm_pred.py --stock=MCD --stock_file=portfolio1
- train with LSTM prediction (gradual approach)
python3 train_wo_predict.py \
--choose_set_num=0 \
--stocks=WMT,AXP,MCD \
--path=data,rl,portfolio1,non_lagged
- load with LSTM prediction (gradual approach)
python3 train_wo_predict.py \
--choose_set_num=0 \
--stocks=WMT,AXP,MCD \
--path=data,rl,portfolio1,non_lagged \
--load
- train without LSTM prediction (full_swing approach)
python3 train_wo_predict.py \
--choose_set_num=0 \
--stocks=WMT,AXP,MCD \
--path=data,rl,portfolio1,fs_lagged \
--full_swing
- load without LSTM prediction (full_swing approach)
python3 train_wo_predict.py \
--choose_set_num=0 \
--stocks=WMT,AXP,MCD \
--path=data,rl,portfolio1,fs_lagged \
--load \
--full_swing
- train LSTM model. To run for all tickers
python3 lstm_pred.py --stock=WMT --stock_file=portfolio1
python3 lstm_pred.py --stock=AXP --stock_file=portfolio1
python3 lstm_pred.py --stock=MCD --stock_file=portfolio1
- train with LSTM prediction (full_swing approach)
python3 train_wo_predict.py \
--choose_set_num=0 \
--stocks=WMT,AXP,MCD \
--path=data,rl,portfolio1,fs_non_lagged \
--full_swing
- load with LSTM prediction (full_swing approach)
python3 train_wo_predict.py \
--choose_set_num=0 \
--stocks=WMT,AXP,MCD \
--path=data,rl,portfolio1,fs_non_lagged \
--load \
--full_swing
Use rl_visual.py. Change arguments in py script as necessary
Code tested in Python 3.7.3 64-bit, in Ubuntu 18.0.4