【Reference】
1. B站:清华计算机博士带你学-Python金融量化分析
2. Tushare 官网(作者ID:492952)
本博客所包含的项目代码基本参考Reference1,并对其中tushare API的更新做了对应的修改。全部代码已上传至作者的 github,下文中仅针对代码思路做一个知识梳理
1. 回测需求 & 效果展示
以中国平安(601318.SH)为买卖对象,检验双均线策略在 2020-05-10 至 2021-01-01 的收益情况。效果如下:
2. 代码框架
2.1 对象
(1) 存储账户信息、回测信息
账户信息:现金,所持股票
回测信息:
- 开始/结束日期
- 当前日期
- 基准:一般会以一只股票或一个指数为基准,用于比较策略优劣性
- 开始至结束之间所有交易日的信息
class Context:
def __init__(self, cash, start_date, end_date):
# 账户信息
self.cash = cash # 现金
self.positions = {
} # 持有的股票信息
# 回测信息
self.start_date = start_date
self.end_date = end_date
self.dt = start_date
self.benchmark = None
self.date_range = trade_cal[(trade_cal['is_open'] == '1') & \
(trade_cal['cal_date'] >= start_date) & \
(trade_cal['cal_date'] <= end_date)]['cal_date'].values
其中,trade_cal
存储了所有交易日的日期信息。可通过 tushare 包的 pro.trade_cal()
获取
(2) 存储其他全局变量
class G