量化 - 量化回测框架
一、框架介绍
基础回测框架
不适用
云端的框架
二、策略创建运行流程
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 风险指标
最大回撤
夏普比率
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2021-04-20 ES - 什么是ElasticSearch?vs Solr vs Lucene
2020-04-20 算法 *-* 并查集Union-Find(连通性)