qlib的流程走通之后,还有一些重要的知识点。
分析模块有两个部分:一是仓位分析,二是模型分析。
仓位分析包含以下几个模块:
report_graph
score_ic_graph
cumulative_return_graph
risk_analysis_graph
rank_label_graph
模型分析只有一个模块:模型性能分析。
model_performance_graph
源代码里路径是:import qlib.contrib.report as qcr
对回测结果进行分析:qcr.analysis_position.report_graph(report_normal_df)
回测结果的df数据如下:
return cost bench turnover date 2017-01-04 0.003421 0.000864 0.011693 0.576325 2017-01-05 0.000508 0.000447 0.000721 0.227882 2017-01-06 -0.003321 0.000212 -0.004322 0.102765 2017-01-09 0.006753 0.000212 0.006874 0.105864 2017-01-10 -0.000416 0.000440 -0.003350 0.208396
投资组合的收益率,成本 ,基准收益率,换手率。
这是最基础的投资组合收益率,最大回撤及成本分析。
所以有回测系统,都会对这个结果序列进行可视化,以便直观看到投资策略的运行结果。
qlib.contrib.report.analysis_position.score_ic.
score_ic_graph
from qlib.data import D from qlib.contrib.report import analysis_position pred_df_dates = pred_df.index.get_level_values(level='datetime') features_df = D.features(D.instruments('csi500'), ['Ref($close, -2)/Ref($close, -1)-1'], pred_df_dates.min(), pred_df_dates.max()) features_df.columns = ['label'] pred_label = pd.concat([features_df, pred], axis=1, sort=True).reindex(features_df.index) analysis_position.score_ic_graph(pred_label)
把模型预测的得分与label两个整合在一起,进行分析。
信息系数(Information Coefficient),因子值与下期收益率的截面相关系数,通过 IC 值可以判断因子值对下期收益率的预测能力。
instrument datetime score label SH600004 2017-12-11 -0.013502 -0.013502 2017-12-12 -0.072367 -0.072367 2017-12-13 -0.068605 -0.068605 2017-12-14 0.012440 0.012440 2017-12-15 -0.102778 -0.102778
还有好几个可视化的能力,具体可以看文档。
输入的数据都是pandas的datafame,这一点非常棒,不像pyalgotrade和backtrader都是自己定义了自己的格式,要兼容起来显略麻烦。
这里还有两个问题。
qlib默认是向ipython notebook绘图的,如果当前不是ipython notebook环境,直接返回的是plotly.graph_objs._figure.Figure对象。
可以把Figure直接显示到wxpython的框里。
另一个问题是关于交易细节。
比如某天买入或卖出了多少某支证券,这一块qlib似乎还没有实现。需要的话我们可以自己扩展实现。
由于github不太稳定,项目迁移到gitee。
欢迎大家fork 或 star。
https://gitee.com/ailabx/ailabx
星球在内测中,大家多支持。
当量化投资遇上机器学习,建立你的智能算法交易事业
Qlib入门到精通系列 #1
ETF数据从tushare下载导入Qlib | Qlib入门到精通 #2
一个典型机器学习量化策略的实现 | Qlib从入门到精通 #4