1 Star 0 Fork 1

liq07lzucn / backtest_system

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

11组 量化回测系统

程序架构

总体由四个类组成,由类之间的交互实现整体功能。

还有一些其他的辅助函数,一共分别放在12个py文件中。

各类介绍

FileIO类

文件读写类,没啥好说的。

俩方法,read_file()write_file()分别实现pickle文件的读写操作。

本来读写操作不太多,不太想把读写操作单独成一个类,但是助教的pdf里面写了也就听他的了x

Trader类

交易者类的基类。

成员变量包括一些用于调整策略的参数,包括:

  • max_stock_num:最多同时持有的股票数
  • cash:当前手里剩下的钱
  • stock_shares:字典,存放当前手里各股票的份额
  • net_worth:当前手里所有股票+现金的总净值
  • tax_ratio:每次交易的手续费,单位百分比
  • stocks_info:股票的历史信息

方法包括:

  • get_worth():总计一下当前的总净值,参数是时间因为需要算当前的收盘价
  • buy():在xx天买入xx元的xx股票,买股票必须以手为单位,手上的钱不够买会报error
  • sell():在xx天卖出xx股的xx股票,买股票不需要整手但是要扣手续费,手里的股不够卖会直接卖完而不是报错
  • strategy():策略,基类的策略啥也不干,在子类里写策略

MLTrader类

写了个策略类的子类示范,用机器学习方法进行选股

主要对stratey()方法进行了重载,用前五年的股票历史信息训练xgboost模型,输入特征选取了35个因子中较为显著的12个因子,输出标签是30天后股票的涨跌情况,做一个二分类。具体的训练过程在machine_learning.py中实现,正确率在83%左右。

然后在策略里用模型对后五年的数据进行预测,每天都买入预测为涨的股票并卖出预测为跌的股票,同时注意处理一下max_stock_num 的限制。

可以仿照这个类写其他的策略进行扩展。

Log类

日志类,记录整个回测过程的详细请况

成员变量包括:

  • log:一个字典,按天保存每次交易的情况

方法有三个:

  • add_log():加一天的记录
  • calculate():计算一些统计量,包括alpha/beta/sharpe_ratio之类的。具体计算过程在evaluate_indicators.py中实现。
  • draw():用pyecharts包画个折线图,存放到line.html里。

BackTest类

回测类,利用当前的策略进行模拟回测

成员变量包括一些设置回测需要的参数:

  • initial_money:初始资金,单位(元)
  • adjust_period:调仓周期,单位(天)
  • start_time:开始日期
  • end_time:结束日期
  • benchmark_info:基准收益(上证指数)的历史信息
  • trader:当前使用的交易者
  • log:本次回测的日志
  • trade_days:可以交易的日期

方法就一个:

  • run():运行策略模拟买卖,计算收益和基准收益,保存日志

其他文件

benchmark_data.csv:存放了用于计算基准收益的上证指数和用于计算夏普比率的国债指数

corr.py:算了一下各个因子之间的相关性,助教pdf里面写的,但是最后没用到x

crawl.py:爬了一下各个股票的百度搜索指数作为因子,但是有的股票爬不到而且作为因子效果不太好,就也没有用到。

dayCalculation.py:放了几个用于日期操作的函数,比较简单就没包装成类

CMTrader.py:另一个传统的股票池择时策略

使用方法

main.py里设置一下各个参数和使用的trader然后直接运行就完事

打开line.html可以查看整体结果

空文件

简介

quantitative trading backtest system of group 11 展开 收起
Python
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/qiangge_666/backtest_system_group_11.git
git@gitee.com:qiangge_666/backtest_system_group_11.git
qiangge_666
backtest_system_group_11
backtest_system
master

搜索帮助