量化 - 量化回测框架
一、框架介绍
基础回测框架
不适用
云端的框架
二、策略创建运行流程
2.1 一个完整的策略,需要做的事情
2.2 策略初始设置介绍
2.3 策略主体运行流程分析
如果 回测频率 选的是每分钟,那么handle_bar就是每分钟判断一次。
三、数据获取接口
3.1 数据接口种类
(from 弹幕:get_fundamentals 目前改用get_factor)
3.2 获取行业
industry - 行业股票列表
这里,A01在每个量化云平台都是通用的
3.3 获取板块
sector - 板块股票列表
3.4 获取概念
3.5 获取指数成分股
index_components - 指数成分股
3.6 获取股票合约数据
history_bars - 某一合约历史数据
不能在init调用!!!
bar_count指的是,在策略运行当前,往前取几天的数据
bar_dict - 只能获取指定天的行情
但只能拿当天的信息!
3.7 获取财务数据
get_fundamentals - 查询财务数据
回测的时候,主要拿来去选股
不能在init中使用!!
如何构建get_fundamentals的参数 query
示例:
打印出A股所有股票的pe_ratio指标,返回类型是DataFrame
示例:把输出结果转置(行列颠倒)
在fund.T加一个大写的T,即可
过滤指标条件
filter示例:
order_by示例:
按照pe_ratio的升序排序。。如果需要降序,需要变成pe_ratio.desc()
limit示例:
fundamentals.stockcode.in_() 在制定的股票池中过滤
context.inex_list前文被赋值为沪深300的股票
3.8 scheduler定时器定时数据获取
必须都在init中使用!!
scheduler.run_daily - 每天运行
scheduler.run_weekly - 每周运行
scheduler.run_monthly - 每月运行
示例:
定时器中的函数,何时执行?
定时器中的函数,这里是get_data。在执行日,会插在before_trading()和handle_bar()之间。
四、回测交易接口
4.1 用于股票交易的函数
加粗的是常用的
order_shares - 指定股数交易(股票专用)
在handle_bar()中,使用order_shares()...
order_target_value - 目标价值下单(股票专用)
某个股票要买到一定的数额。
4.2 出现自动拒单的情景
4.3 撮合机制
例如,今天是1月2日:
- 当前收盘价,就是按照1月2日的收盘价进行买卖;
- 下一开盘价,就是以1月3日的开盘价进行1月2号的买卖 -- 不合理,因为不能未卜先知明天的价格,新版本米宽已经废弃
4.4 市价单 vs 限价单
4.5 滑点
真实交易,不需要设置滑点
滑点允许的范围为[0,1) -- 例如设置滑点0.1,如果原本买入成交价为10元,设置滑点之后将变成11元,即买的更贵。
五、投资组合
5.1 什么是投资组合
5.2 如何查看投资组合的信息
用stock_account 对象 查看 - 不常用
用 context.portfolio 对象 查看 - 常用
context.portfolio对象 具体细节
context.portfolio.positions对象 具体细节
六、策略评价指标
分为两大类:
- 收益指标
- 风险指标
6.1 收益指标
回测收益率
回测年化收益率 - 更重要
基准收益
一般默认选择沪深300作为基准