Financial - 东方证券EfficiencyRatio量化回测 + 夏普率,最大回撤,胜率,阿尔法贝塔收益率
总结--请介绍下你如何运用EfficiencyRatio策略
1.“EfficiencyRatio效率比值” 概念是美国交易员 Perry J. Kaufman 佩里·考夫曼 提出的,是一种趋势强度的衡量。它的计算公式是:
- ER = N期间内价格总变化 / N期间内个别价格变化的绝对值
- 取值范围为-1.0到1.0; -1.0代表最强烈的下跌趋势,1.0代表最强烈的上涨趋势, 0.0代表无方向性的波动
2. 在我们的项目中,使用ER策略对期货进行回测交易,参数因子池包含了5个参数,分别是:
- K线的长度M:也就是说选取M分钟(该策略是日内策略)的K线(就是下图的每个红色/绿色的K线:K线也分1分钟K线,5分钟K线,天K线,周K线,年K线,等)
- 回望周期N:就是指计算ER时使用了几根上一步的K线
- 追踪止损的比例L:止盈止损的比例,触发时会平掉持有的头寸
- 多仓ER阈值:当ER值到达多大的正值,开多仓
- 空仓ER阈值:当ER值到达多大的负值,开空仓
项目中,我们遍历60个交易日,选出最好的一组参数,给接下来的20个交易日使用。以此类推,动态获取最优参数。
3. 我的主要贡献:
- 代码的补充实现:以及bug fix - 策略收益一直从15年的某一刻(回测期2014.01-2016-12)开始持续异常下跌,原因是代码在特定条件下的开多开空逻辑颠倒
- 策略的完善:原本的参数池只有4个因子,开多仓和开空仓的阈值始终保持一致。之后,我就改为分开设置,多仓空仓的信号阈值不同。
- 原本的夏普率:1.42,年化收益率:18%,最大回撤:14.8%
- 修改后夏普率:1.29,年化收益率:21%,最大回撤:13.4%
- 结论:夏普率下降0.2个点,年化收益率上升2个点,最大回撤下降2个点
注意:该策略是日内策略,会在每个交易日的最后一条K时,强制平仓
一、EfficiencyRatio策略
1.1 策略描述
回测平台包含参数池 5 个参数:
- K 线频率(把1分钟,2分钟,5分钟,10分钟,20分钟的K线合并成一条K线)
- K 线数量(把上一步合并后的K线,选择2根,3根,5根,10根,20根)
- 止损比率
- 做多阈值(ER值)
- 做空阈值(ER值)
1.2 策略效果
过拟合定义:模型在训练集上的表现很好,但在测试集和新数据上的表现很差。详情请看:深度学习中“过拟合”的产生原因和解决方法
训练集上的表现 | 测试集上的表现 | 结论 |
不好 | 不好 | 欠拟合 |
好 | 不好 | 过拟合 |
好 | 好 | 适度拟合 |
图1
这里的回测基准,可能是“连续合约指数日线数据”
图2
回测显示策略平均夏普率达到 1.3,平均最大回撤达到 0.10 左右。
1.3 潜在风险
二、评断策略效果的参数
2.1 夏普率 SharpRatio
目的是计算投资组合每承受一单位总风险,会产生多少的超额报酬。夏普指数代表投资人每多承担一分风险,可以拿到几分超额报酬;若大于1,代表基金报酬率高过波动风险;若为小于1,代表基金操作风险大过于报酬率。
举例而言,假如国债的回报是3%,而您的投资组合预期回报是15%,您的投资组合的超额报酬率的标准差是6%,那么用15%-3%,可以得出12%(代表您超出无风险投资的回报),再用12%/6%=2,代表投资者风险每增长1%,换来的是2%的多余收益。
2.2 最大回撤 Max Drawdown
2.3 胜率
链接:原文地址
胜率就是目标周期内盈利的交易次数占总交易次数的比例,例如:一段时间内,一共交易了100次,盈利了70次,那么该周期的胜率为:70 / 100 * 100% = 70%
。前文讲到高胜率并不能产生高收益,甚至有可能会产生亏损,道理很简单,假如盈利的70次交易每次都盈利100美金,总盈利7000美金,但亏损的30次交易每次都亏损250美金,总亏损7500美金。如此,即使胜率达到了70%,也不能保证我们的交易系统是正向盈利的。
假如你的胜率是99%,上面举的例子每次开固定仓位,显然1笔亏损超过99笔的盈利有点难度,换个例子。初始净值10000美金,还是做了100次交易,前99次交易每次使用10%的仓位,每次盈利10%。最后1笔交易时,账户余额已经达到10000 * (1 + 0.1*0.1)^99 = 26780.33
美金了。你可能觉着交易了这么多次,每次都能盈利,因此决定在第100次交易的时候梭哈,大不了赢了会所嫩模,亏了工地干活。可惜最后1笔交易爆仓了,你血本无归。这里涉及一个仓位管理
的问题,将在后续的文章中讲到。
2.4 盈亏比
链接:原文地址
盈亏比就是平均盈利金额与平均亏损金额的比值。公式如下:
盈亏比 = 平均盈利 / 平均亏损 = (盈利总金额 / 盈利次数) / (亏损总金额 / 亏损次数)
以上面的例子,盈利次数70,盈利总金额7000,亏损次数 30,亏损总金额 7500,那么盈亏比 = (7000/70)/(7500/30) = 0.4
。 0.4的盈亏比是一个什么概念的呢?可以理解为盈利的时候只能盈利0.4,亏损的时候却要亏损1。0.4的盈亏比,如果要盈利,需要满足大于1 / (1+0.4) *100%= 71.423%
的胜率。
胜率和盈亏比有一个公式,可以计算胜率一定的情况下,至少需要多少的盈亏比,交易系统才能正向盈利,反之亦然。
- y = 1 / (1+x)
y表示胜率,x表示盈亏比。它的函数图像如下所示:由图像可以看出,盈亏比越大,需要的胜率越低。
2.5 阿尔法α收益 + 贝塔β收益
作者:后厂村名基
链接:https://www.zhihu.com/question/45437609/answer/707085428
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。