量化 - 量化回测框架


一、框架介绍

基础回测框架

不适用

云端的框架

二、策略创建运行流程

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作为基准

6.2 风险指标

最大回撤

夏普比率