评价策略是否成功,不仅要看策略是否赚钱,还要看策略是否承担了过大的风险。这些都有一些专门的指标来评价,比如:夏普率、最大回撤、胜率等。 分析者对象Analyzer就是用来完成策略的绩效评价工作。
cerebro.addanalyzer(Kelly, _name='kelly') # Kelly为分析者类
注意:当分析者对象需要参数时,也是这里通过kv形式传入
每一个策略对象都会返回一组已添加的分析者对象数据(如:当使用策略参数优化optstrategy时,每一个参数组合都会生成一个策略对象,都会有一组对应的分析者数据)
这里举例只有一个策略对象的情况,data中 包含所有已添加的分析者对象数据
analyzer_data = cerebro.run()
data = analyzer_data[0]
当我们要获取其中一个分析者的数据时:可通 _name获取
kelly_data = data.analyzers.kelly.get_analysis()
还可以获取这个策略对象的 参数等
data.params.fast_length
分析者的数据是以 orderDict 的形式保存的,并且多层嵌套。使用上和dict一致。
for k, v in kelly.items():
print(k, v)
输出:
kellyRatio -0.35302043729697774
kellyPercent -35.30204372969777