姓名 | 学号 | 分工 |
---|---|---|
焦贤锋 | 2101210589 | 负责深度学习相关策略 |
刘子明 | 2101210610 | 负责代码框架与基本策略的实现 |
邵璟之 | 2101210624 | 负责计算回测过程中的相关数据 |
张堇然 | 2101210494 | 负责计算回测结束后的评判指标 |
张贤揆 | 2101210504 | 负责数据可视化 |
backtester
:存放了主要的回测执行函数trade_back_tester.py
,用以执行用户指定的策略在指定的日期范围内进行回测。data
:存放了本项目中使用的数据(包括原始数据和处理过的训练集等数据)以及获取数据的方法。model
:存放了本项目中使用到的深度学习模型,包括gru
, concare
,其中concare
为自己设计的深度学习模型。strategy
:存放了本项目中使用的策略,其中strategy_base
为所有策略的基类,用户可以通过重写基类中的抽象方法buy_strategy
与sell_strategy
来实现自定义策略。utils
: 存放了本项目中使用到的一些工具类,比如计算策略的夏普比率和最大回撤率,以及天数相关的工具计算函数。通过实现了一个策略模式来支持策略的添加,符合了开闭原则。通过定义虚基类策略,我们在新添加策略的时候只需新建一个覆盖了buy_strategy
与sell_strategy
方法的子类,并在使用时将子类传入回测执行函数中即可。
策略至少能支持以下因子:
dataset
:存放训练、验证以及测试所需的数据,以及数据获取和处理的方法
文件夹中放入__init__.py
文件,做成包,方便导入:
from .data_interface import DInterface
在 data_interface
中建立一个 class DInterface(pl.LightningDataModule)
:用作所有数据集文件的接口。__init__()
函数中导入相应 Dataset
类,用 setup()
进行实例化,并加入所需要的 train_dataloader
, val_dataloader
, test_dataloader
函数。这些函数往往都是相似的,可以用几个输入 args
控制不同的部分。
model
: 存放模型代码
文件夹中放入__init__.py
文件,做成包,方便导入:
from .model_interface import MInterface
同理,在 model_interface
中建立 class MInterface(pl.LightningModule)
:类,作为模型的中间接口。__init__()
函数中导入相应模型类,然后加入configure_optimizers
, training_step
, validation_step
等函数,用一个接口类控制所有模型。不同部分使用输入参数控制。
checkpoints
: 负责存放训好的模型参数
main.py
: 负责定义 parser
,添加 parse
项。选好需要的 callback
函数们。实例化 MInterface
, DInterface
, Trainer
。
可设置考虑多少因子,可设置预测目标(适应回归任务、分类任务、多标签分类任务)
model | acc | auroc | auprc | minpse |
---|---|---|---|---|
GRU | 0.853(0.003) | 0.929(0.002) | 0.911(0.003) | 0.832(0.003) |
Multi-Channel GRU | 0.861(0.003) | 0.937(0.003) | 0.923(0.003) | 0.843(0.003) |
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。