# 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股
策略盈利前提:存在所谓的趋势突破
示例:黄色为卖出点,橙色为买入点

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


二、我们是怎么做这个模型的
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
双均线策略的实现