(二)回测报告分分钟检验模型好坏

对一个模型进行测试时,需要计算每一次历史交易的盈亏、回撤等进而得到收益率、最大回撤、胜率等我们关注的指标数据,这些数据如果全靠手动计算几乎是实现不了的。量化交易软件充分利用了计算机强大的运算能力,可瞬间出具含有众多参考项目的详细报告,分分钟就能检验模型好坏。

案例1:利用分析报告360度检测模型

下图是一个分析报告的一部分,图中①④指标是我们通常最关注的数据,很多人会认为收益率高,胜率高的模型就是好模型,真的是这样的么?让我们再来看看图中的②③⑤衡量指标。

报告显示该模型在这段交易过程中,最大回撤高达1211300,最大回撤比已达到71%,说明这并不是一个稳定的模型。如此大的回撤一方面会在实盘中带来权益的锐减,另一方面也会使交易者的心态受到严重的影响。再看⑤指标,空头交易的盈亏比率较低,说明该模型的空头交易绝大多数是亏损的,在实盘交易中该模型的做空操作很可能成为短板。

所以在衡量一个模型的好坏时,我们要充分利用软件提供的测算报告,根据各个测算指标全面考量模型。

案例2:效果测试结果的升级应用

回测报告中的各项统计数据也为我们拟合一些其他的经典理论提供了数据基础和计算依据,可以更深层次的挖掘模型的隐含特性,全方位剖析模型效果。

比如著名的凯利公式:f* =(b*p -(1-p))/b (其中f* 为开仓最佳资金比例、b为模型的盈亏比率、p 为胜率)。我们从回测报告中可以直接得到胜率和盈亏比的数值,将这些数据代入到公式中进而得到该交易系统的最优开仓比例,投资者可以根据自身交易系统所计算出的f* 值乘以心理承受损失的比例去控制最大仓位。

进行收益率测算的操作方法

如下图所示是如何进行模型的回测:

相关常见问题解答

1、如何修改回测时初始资金等相关参数?

:设定信号计算起止时间

:设置回测参数,如初始资金,开仓手数,保证金,手续费等

:装入到模组后台运行,将K线图上回测的合约和模型加载到模组中运行

:查看回测报告

:查看信号明细

2、赢智是否支持逐笔回测?

答:支持;模型中写入CHECKSIG或MULTSIG函数时,支持逐笔回测。

3、什么是杠杆倍数?

答:杠杆倍数 = 最大资金使用率 / 保证金。为什么看测试报告一定要看杠杆倍数?因为杠杆倍数直接影响收益率。
例如:同样的模型、初始资金、保证金比例,假设杠杆倍数为1时,收益率是20%。这时加一倍的仓,杠杆倍数变为2,那么收益率就会变成40%。会发现多出的盈利并不是量化策略带来的,是因为加大了资金使用率,但也同时扩大了风险。所以一个模型的收益率,必须是在一个合理的杠杆倍数下才有参考意义。

4、权益和损益有什么区别?

答:权益计算的是账户可用资金和持仓保证金,是包含了浮动盈亏的,但这些浮动盈亏在你没有平仓以前还没真的变现,最后实际平仓变现时候,金额可能会有变化;而损益计算的是每次持仓为0时,账户的可用资金,是不包括浮动盈亏的,所以一般损益回撤更能体现本金真实的回撤情况。

5、胜率和盈亏比哪个更重要?

答:评价一个模型,不能单只看收益率的,胜率和盈亏比是二个更重要的评价指标。
胜率和盈亏比就像一对兄弟,最理想的状态是高胜率的同时又能保证高盈亏比,遗憾的是这种情况只能是理想状态,实盘交易过程中是不存在这种情况的。
不同类型的交易策略对胜率和盈亏比的评价标准和倾向也不同。短线交易,高频、震荡回归策略,具有高胜率、低盈亏比的特点;而长线交易,常见的趋势跟踪策略,往往是低胜率、高盈亏比。理论上盈亏比和胜率的乘积大于0.6的模型就是可以盈利的,乘积越大代表模型越好。
低胜率也是可以盈利的。例如:10次交易,7次亏损3次盈利,胜率仅为30%,但是只要盈亏比超过2.4,相当于每次亏损1元、盈利2.4元,10次交易最终还是盈利的。
对于长线趋势策略而言,一个品种一年中出现明显趋势的次数并不多,模型能否成功的关键是抓住大的趋势波动,所以胜率是很难达到很高的水平的,这时想办法提高盈亏比,让利润充分奔跑,更容易获得较高的收益。

6、夏普比率是什么意思?

答:夏普比率代表了每承受一个单位的风险,会产生多少的超额收益。夏普比率大于1,代表收益高于风险。
期货交易中有个显著特点,预期收益越高,需要承担的交易风险也越大;预期收益较低,承担的交易风险也相对较低。而对于一个理性的交易者,追求的往往是在固定所能承受的风险下,追求最大的收益;或在固定的预期收益下,追求最低的风险。而夏普比率正是衡量风险收益比的指标,收益相同的两个模型,一般会选择夏普比率更高的模型,因为这个模型相对风险较低。

7、效果测试指标项说明:

注:对于盈利、亏损的计算,带有*的是都是以从开仓到持仓为0算一次交易计算盈亏,未标注*的是按照一开一平来计算盈亏。

测试天数 从回测数据开始到结束的自然日
测试周期数 从回测数据开始到结束的K线根数
信号个数 信号出现的总个数
执行信号个数 信号执行的总个数
信号消失次数 信号消失的总次数
初始资金 初始化的资金
初始资金使用率 手数*每手保证金率*第一个信号的开仓价*交易单位/初始资金
最大资金使用率 在持仓周期内(开仓保证金/当前权益)的最大值
平均资金使用率 ((开仓保证金/当前权益)求和)/持仓周期数
杠杆倍数 杠杆倍数 = 最大资金使用率 / 保证金率
回测期间最大权益 回测期间最大的权益
整个测试过程中每个周期已缴保证金+剩余可用资金+持仓浮盈所得结果中的最大值
回测期间最小权益 回测期间最小的权益
整个测试过程中每个周期已缴保证金+剩余可用资金+持仓浮盈所得结果中的最小值
最终权益 包括当前的可用资金和浮动盈亏
收益 总盈利-总亏损(已扣除手续费)
收益率 收益/初始资金
年化单利收益率 收益率/(测试天数/365)
月化单利收益率 收益率/(测试天数/30)
年化复利收益率 (最终权益/初始资金)^(365/测试天数)-1
月化复利收益率 (最终权益/初始资金)^(30/测试天数)-1
平均保证金收益率 (单次交易收益/开仓保证金)求和/交易次数=(Σ((每次交易盈利数值-手续费)/保证金))/交易次数
扣除最大盈利后收益率 (最终权益-最大盈利-初始资金)/初始资金
扣除最大亏损后收益率 (最终权益+最大亏损-初始资金)/初始资金
夏普比率 (年化单利收益率-无风险利率)/收益率的标准离差率
计算公式:夏普比率=[E(Rp)-Rf]/σp;
其中:
E(Rp):年化单利收益率
Rf:无风险利率(大约是1.5%)
σp:收益率的标准差率(年化标准差率)=标准差率/sqrt (测试天数/365)
标准差率=标准离差/初始资金
标准离差=√(SUM((每次盈亏-平均盈亏)^2,N)/ N)
索提诺比率 (年化单利收益率-无风险利率)/下行收益率标准差
其中:
年化单利收益率=收益率/(测试天数/365)
无风险利率=1.5%
下行收益率标准差=下行标准差率/sqrt(测试天数/365)
下行标准差率=下行标准离差/初始资金
下行标准离差=
n=交易次数
r=每次收益
=平均收益
if r<,f(t)=1
if r>=,f(t)=0
权益离散度 权益离散度=单次盈亏的平方和/交易次数,再开方
权益离散系数 权益离散系数=权益离散度/初始资金*100%
权益最大回撤 从回测开始到结束,动态权益计算出来的波段从高点到低点回撤的最大值
权益最大回撤时间 权益最大回撤出现的时间
权益最大回撤比率 (权益回撤/权益回撤时的权益)的最大值
权益最大回撤比率时间 权益最大回撤比率出现的时间
权益最长未创新高周期数 权益最长未创新高周期数
权益最长未创新高时间段 权益最长未创新高时间段
损益最大回撤 从回测开始到结束,动态损益计算出来的波段从高点到低点回撤的最大值(损益最大回撤是以持仓等于0时的资金为标准计算的)
损益最大回撤时间 损益最大回撤出现的时间
损益最大回撤比率 (损益回撤/损益回撤时的权益)的最大值
损益最大回撤比率时间 损益最大回撤比率出现的时间
损益最长未创新高周期数 损益最长未创新高周期数
损益最长未创新高时间段 损益最长未创新高时间段
本金风险率 (初始资金 - 回测期间最小权益)/初始资金
年化收益风险比率 年化单利收益率/本金风险率
胜率 (盈利次数+持平次数)/交易次数
*盈亏比率 盈利交易的平均每次盈利/亏损交易的平均每次亏损
平均每次盈利 = 总盈利/盈利交易次数
平均每次亏损 = 总亏损/亏损交易次数
*平均每次盈利 平均每次盈利交易的盈利=总盈利/总盈利次数(计算手续费)
*平均每次亏损 平均每次亏损交易的亏损=总亏损/总亏损次数(计算手续费)
*平均每次盈利/权益最大回撤 平均每次盈利/权益最大回撤
*平均每次盈利率/平均每次亏损率 平均每次盈利率/平均每次亏损率
平均每次盈利率 = SUM(单次盈利率) / 计算单次盈利率次数
平均每次亏损率 = SUM(单次亏损率)/ 计算单次亏损率次数
单次盈利率 = 上一次持仓为0到今次持仓为0期间的盈利占初始资金的百分比 (盈利/初始资金)
单次亏损率 = 上一次持仓为0到今次持仓为0期间的亏损占初始资金的百分比 (亏损/初始资金)
*平均每次收益/平均每次亏损 平均每次收益/平均每次亏损
平均每次收益 平均每笔交易的收益=(总盈利-总亏损)/ 交易笔数(总成交量的 1/2)
*最大每手盈利 每手盈利的最大值(每手盈利:对于每次交易,用该次交易的盈利值除以这次交易过程中的成交手数)
*最大每手亏损 每手亏损的最大值(每手亏损:对于每次交易,用该次交易的亏损值除以这次交易过程中的成交手数)
平均每手每次收益 平均每手每次交易的收益
总盈利/总亏损 总盈利/总亏损
总盈利 盈利的总和
总亏损 亏损的总和
*单次最大盈利 单次交易盈利的最大值
*单次最大亏损 单次交易亏损的最大值
单次最大盈利占比率 单次最大盈利/总盈利
单次最大亏损占比率 单次最大亏损/总亏损
收益/单次最大盈利 收益/单次最大盈利
收益/单次最大亏损 收益/单次最大亏损
*交易次数 发生交易的次数
*盈利次数 盈利的交易次数
*亏损次数 亏损的交易次数
*持平次数 持平的交易次数
*最大持续盈利次数 最大持续盈利的次数
*最大持续盈利次数出现时间 最大持续盈利的次数出现的时间
*最大持续亏损次数 最大持续亏损的次数
*最大持续亏损次数出现时间 最大持续亏损的次数出现的时间
空仓周期数 空仓的周期数
最长连续空仓周期数 最长连续空仓的周期数
*最长持仓周期数 持仓最长周期数
平均持仓周期数 平均多少根K线发生一笔交易=测试周期数/交易次数
*平均盈利持仓周期数 平均多少根K线发生一笔盈利的交易=测试周期数/盈利次数
*平均亏损持仓周期数 平均多少根K线发生一笔亏损的交易=测试周期数/亏损次数
平均持仓手数 每根K线的总持仓的累加 / 持仓周期数
最大持仓手数 在持仓周期内持仓手数最大值
平均资金使用金额 开仓保证金求和/持仓周期数
最大资金使用金额 在持仓周期内,开仓保证金额最大值
最大资金使用金额时间 在持仓周期内,最大资金使用金额的时间点
手续费 手续费合计
手续费/收益 手续费合计/收益
滑点损耗 滑点损耗合计
滑点损耗/收益 滑点损耗合计/收益
成交额 成交额合计
成交额=成交价*(开仓或者平仓手数)*交易单位
模型得分 根据盈利能力、稳定性、风险暴露、敏感度计算的综合得分

8、深度分析各图表项说明

收益/风险: 点击展开

(1)损益曲线图:策略的累计盈亏曲线,反映一段时间内平仓盈亏累加值的波动,每完整的交易一次计算一次损益值

(2)权益曲线图:反映某一个时点的权益波动情况,每根K线都动态的统计一次权益数值

(3)损盈分布图:根据距离平均盈亏的离散程度分析交易的整体盈利情况

(4)损盈直方图:统计落入盈亏净值区间内的次数,对比盈利和亏损能力

(5)权益回撤直方图:统计落入某一回撤区间的次数,反映权益回撤的金额分布

(6)连续亏损次数:统计连续亏损的次数,投资者可结合自身对风险的承受能力综合考量策略的稳定性

浮动盈亏: 点击展开

(1)权益面积图:对比权益的高点位置和权益波动,直观的查看权益回撤的幅度

(2)浮盈面积图:对比权益面积图,分析浮盈波动情况

(3)浮亏面积图:对比权益面积图,分析浮亏波动变化

(4)浮盈分布图:根据距离平均浮盈的离散程度分析交易的浮盈极值和整体盈利状态

(5)浮亏分布图:根据距离平均浮动亏损值的离散程度分析浮亏的极值和整体亏损情况

(6)浮盈直方图:统计落在指定浮盈区间内的交易次数,分析策略的盈利能力

(7)浮亏直方图:统计落在固定浮亏区间内的交易次数,分析策略的亏损程度

阶段统计: 点击展开

(1)月度统计:统计当月交易的盈亏和成本大小

(2)日统计:统计当日的交易的盈亏和成本大小

效率分析: 点击展开

(1)总效率分布图:以做多为例,买在最低点卖在最高点视效率为100%,按交易价格折算每次交易的效率

(2)建仓效率分布图:以做多为例,买在最低点即为最佳入场点,效率为100%,再按实际入场点折算每次建仓的效率。

(3)平仓效率分布图:以做多为例,卖在最高点即为最佳出场点,效率为100%,再按实际出场点折算每次平仓的效率。

损盈分析: 点击展开

(1)胜率分析:统计不同盈利百分比下的胜率分布

(2)盈利分析:统计一定盈利范围内的盈利次数

(3)亏损分析:统计一定亏损范围内的亏损次数

(4)回撤分析:按回撤比例分析权益回撤幅度