5 Star 2 Fork 1

Serendipity / fintech-py

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

面向金融的Python量化回测大作业

项目成员

姓名 学号 分工
焦贤锋 2101210589 负责深度学习相关策略
刘子明 2101210610 负责代码框架与基本策略的实现
邵璟之 2101210624 负责计算回测过程中的相关数据
张堇然 2101210494 负责计算回测结束后的评判指标
张贤揆 2101210504 负责数据可视化

项目结构

  • backtester:存放了主要的回测执行函数trade_back_tester.py,用以执行用户指定的策略在指定的日期范围内进行回测。
  • data:存放了本项目中使用的数据(包括原始数据和处理过的训练集等数据)以及获取数据的方法。
  • model:存放了本项目中使用到的深度学习模型,包括gru, concare,其中concare为自己设计的深度学习模型。
  • strategy:存放了本项目中使用的策略,其中strategy_base为所有策略的基类,用户可以通过重写基类中的抽象方法buy_strategysell_strategy来实现自定义策略。
  • utils: 存放了本项目中使用到的一些工具类,比如计算策略的夏普比率和最大回撤率,以及天数相关的工具计算函数。

实现概述

策略实现

通过实现了一个策略模式来支持策略的添加,符合了开闭原则。通过定义虚基类策略,我们在新添加策略的时候只需新建一个覆盖了buy_strategysell_strategy方法的子类,并在使用时将子类传入回测执行函数中即可。

策略因子

策略至少能支持以下因子:

  1. 设置初始资金
  2. 设置调仓时间
  3. 设置最大持有股票数 其余的因子均可以通过策略实现小节中的方法动态的添加。

深度学习模型训练框架

  • 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

模型

可设置考虑多少因子,可设置预测目标(适应回归任务、分类任务、多标签分类任务)

GRU

alt text

多通道 GRU + self attention 模型

alt text

模型性能

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)

空文件

简介

暂无描述 展开 收起
Python 等 2 种语言
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/jiaoxianfeng/fintech-py.git
git@gitee.com:jiaoxianfeng/fintech-py.git
jiaoxianfeng
fintech-py
fintech-py
master

搜索帮助