Skip to content

Commit

Permalink
update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
sunnyswag committed May 18, 2021
1 parent bf0b6da commit 8b1eb13
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 44 deletions.
72 changes: 32 additions & 40 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,67 +1,59 @@
# RL_in_Finance
使用强化学习,构建自动交易的金融交易系统,目的是减少回撤
# 强化学习交易股票
在A股市场上,对五个深度强化学习算法进行测试,找到比较合适的深度强化学习智能体

### 回测结果

回测结果展示(时间跨度为2019年1月1日至2021年1月1日)

![result_picture.png](./assets/result_picture.png)

回测结果分析表(时间跨度为2019年1月1日至2021年1月1日,baseline 为上证50指数)

| 性能评价指标 | 上证 50 指数 | A2C | DDPG | PPO | SAC | TD3 |
| :------------: | :----------: | :-----: | :-----: | :-----: | :-----: | :-----: |
| **累计收益率** | 58.98% | 108.49% | 121.26% | 110.85% | 120.61% | 120.14% |
| **最大回撤率** | -18.22% | -35.83% | -31.45% | -16.75% | -29.24% | -30.69% |
| **Omega比率** | 1.29 | 1.31 | 1.34 | 1.36 | 1.35 | 1.35 |
| **Sharpe比率** | 1.37 | 1.23 | 1.50 | 1.72 | 1.54 | 1.52 |
| **年化收益率** | 27.11% | 46.37% | 50.95% | 47.23% | 50.72% | 50.55% |
| **年化波动率** | 18.90% | 36.25% | 30.78% | 24.28% | 29.48% | 29.89% |

更加详细的回测结果可以查看 [./plot_traded_result.ipynb](./plot_traded_result.ipynb)

### 快速开始

方式一:
在终端中输入

```shell
# excute in shell
git clone https://github.com/sunnyswag/RL_in_Finance.git
git pip install -r requirements.txt
```

方式二:
进入 [./learn](./learn) 文件夹查看详细步骤

​ 打开 [RL_in_Finance_Test.ipynb](./RL_in_Finance_Test.ipynb) 并运行(推荐使用 colab)
### 环境设计思路

### 环境描述
**state_space 由三部分组成 :**

**state_space 五部分组成 :**
1. 当前的现金

1. 当前的资金量
3. 每只股票的持仓量

2. 每只股票当前的收盘价
4. 股票数 * 环境因素(总计15个)

3. 每只股票当前的持仓量

4. 股票数 * 技术指标数

5. 成交量

**reward 的计算方式:**

* reward 交易前的总资产-当天交易后的总资产 = 当天交易的手续费
* 累计收益率 - 当前回撤率

* TODO:待改进
![reward.png](./assets/reward.png)

**action_space 的空间:**

* actions ∈[-100, 100]

* 正数表示买入,负数表示卖出,0表示不进行买入卖出操作

* 绝对值表示买入卖出的数量

### TODO
* actions ∈ [-x, x]

- [x] 改进 reward 的计算机制
- [x] reset 在任意位置
- [x] 解决回测中的 0 值问题
- [x] 更换技术指标,在 state 中增加成交量这个状态
- [x] 解决为啥 finrl 在构建 Dockerfile 的时候使用的路径为 docker/ 而不是 .
- [x] 用 Docker 运行
- [x] 解决训练不充分时,会进行超买超卖导致预测时会 terminal 的情况
- [x] 重新设计 reward function,重新设计的 reward function 有两个重点:强调绝对收益和控制收益的回撤
- [ ] 重新调整 .gitignore 去除一些不需要的文件
- [ ] 进行模拟交易
- [ ] 对多个强化学习算法进行测试
* 正数表示买入,负数表示卖出,0 表示不进行买入卖出操作

### LOGO
1. n_cores = 24 and n_cores = 44 都未能运行成功
2. 得训练大概 100w num_timesteps 才差不多能学会, 训练 5w 大概 1个小时,训练 100 得 20 h
3. 是通过 logger 传数据到 model 的 replay_buffer 中吗?
4. 目测得跑 2 天了

### Reference

Expand Down
Binary file added assets/data_split.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/result_picture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/reward.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 6 additions & 4 deletions learn/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
python ./data.py
```

数据保存在 `./data_file`
数据保存在 `./data_file` 文件夹中

数据分为训练状态空间和测试状态空间,默认拆分方式为:![data_split.png](../assets/data_split.png)

## 训练

Expand All @@ -21,8 +23,8 @@ nohup python -u ./trainer.py -m 'a2c' -tts 200000 >./nohup/A2C.log 2>&1 &

* 若未下载数据,运行 `./trainer.py` 将自动下载
* 可运行 [./start_train.sh](./start_train.sh) 批量化操作
* 运行日志保存在 `./nohup`
* 运行完成后的模型保存在 `./train_file`
* 运行日志保存在 `./nohup` 文件夹中
* 运行完成后的模型保存在 `./train_file` 文件夹中

## 回测

Expand All @@ -35,5 +37,5 @@ python ./trader.py -m 'a2c'
**TIPS**

* 若未找到 `.model` 文件,可以在 [release]() 中进行下载
* 回测数据保存在 `./trade_file`
* 回测数据保存在 `./trade_file` 文件夹中

7 changes: 7 additions & 0 deletions plot_traded_result.ipynb
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
{
"cells": [
{
"source": [
"# 结果展示"
],
"cell_type": "markdown",
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 1,
Expand Down

0 comments on commit 8b1eb13

Please sign in to comment.