# python2021_backtesting **Repository Path**: financialfreedom-project/python2021_backtesting ## Basic Information - **Project Name**: python2021_backtesting - **Description**: 本项目为金融Python大作业量化交易回测系统。 本项目组成员为:贾雨涵、李悠、陈安宁、向屹峰、段嘉维 请各位老师同学批评指正! - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-03-06 - **Last Updated**: 2022-03-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #python2021_backtesting

介绍

  • 本项目为金融Python大作业量化交易回测系统。
  • 本项目组成员为:贾雨涵、李悠、陈安宁、向屹峰、段嘉维 请各位老师同学批评指正!

    一、我们的模型可以做什么

    1.数据

  • 股票数量:32只股票
  • 时间范围:2019.4.10-2021.11.26
  • 数据频率:每个交易日的股票数据均包含在内

    2.策略

  • 双均线模型:一条是长周期均线(自行设置周期), 一条是短周期均线(自行设置周期)。 短期均线从下往上穿越长周期均线时(交点为金叉), 进行买入;当短周期均线从上往下穿越长周期均线时(交点为死叉),进行卖出。
  • 策略具体实施:每次买入/卖出100股
  • 策略盈利前提:存在所谓的趋势突破 示例:黄色为卖出点,橙色为买入点 ![avatar](output/img.png)

    3.回测

    可以得到的指标:
  • 收益率:资产组合在选取的时间范围内的收益率(期末资产净值/期初资产净值-1)
  • 年化收益率:收益率/持续年
  • 夏普比率:超额收益率/标准差
  • 最大回撤率:max ((Di-Dj)/Di) , Di 与 Dj 为产品持续期间内任意两日的资产净值, i 与 j 代表对应的日期且 i 日发生在先
  • 最大回撤周期: i 日与 j 日之间的时间间隔

    4.效果展示

    ![avatar](output/final_results.png) ![avatar](output/equity_curve.png)

    二、我们是怎么做这个模型的

    1.datahandler.py

  • 从tushare中读取指定股票的历史数据
  • 用字典形式加载股票的历史数据
  • 根据历史数据生成bar用于回测

    2.event.py

  • MarketEvent:市场信号,表明有新的数据导入,需要新一轮回测
  • SignalEvent:策略对象使用这个事件来决定是买还是卖还是不做操作等,触发投资组合对象更具具体的动作计算策略的表现
  • OrderEvent:当一个投资组合对象收到SignalEvents时,它会在更广泛的环境中对其进行评估然后产生相应的order
  • FillEvent:当ExecutionHandler收到OrderEvent时,它必须处理订单。订单交易完成后,它会生成一个FillEvent,描述购买或销售的成本以及交易成本

    3.execution.py

  • 设置一个事件队列来存放产生的各种事件
  • 处理订单,将所有的OrderEvent转换成相应的FillEvent

    4.LSTM.py

  • 采用LSTM来预测股票未来的走势
  • 从32只股票中选取预测未来涨幅最高的5只股票加入股票池

    5.strategy.py

  • 根据bar来给特定股票产生相应的SignalEvent

    6.performance.py

  • 用于计算最大回撤和夏普比率

    7.portfolio.py

  • 根据股票池、起始资金、起止时间等参数建立相应的仓位
  • 根据FillEvent更新仓位和资产状况

    8.backtest.py

  • 根据相关参数进行股票回测并输出结果

    9.MovingAverageCrossStrategy.py

  • 双均线策略的实现