1. 首页
  2. 交易员分享 - Trader Contributions
  3. 如何使用TS开发出可长期盈利的量化趋势策略

如何使用TS开发出可长期盈利的量化趋势策略

安德烈亚斯 F. 克列诺的《趋势交易》里,讲了一个简单的趋势策略(突破类策略),并给出了该策略在过去20多年,包括2007年以后市场极端行情下,如何获取稳定盈利。作者使用该策略在股指期货,商品期货包括农产品期货,国债期货,外汇市场上以非常简单的法则进行配置(按照ATR倒数进行配置,后续咱们专门讲讲资产组合权重配置的不同方式),但20多年后,该策略获利不菲。

本文同样尝试做这样一件事,以简单的双均线策略,不做过多拟合,证明趋势策略在多品种上进行分散化以后,长期来看仍旧可以获得稳定收益。也可以将回测标的从期货主力合约改成各行业龙头股,或者行业ETF,各种指数等等,来验证其在股票市场上的可行性。此文章的目的是展示通过TS开发量化策略的简单流程,不确保该策略及参数在实际交易中能够获利。

1、 策略思想

对于存在明显趋势的品种,比如贵金属,铁矿石,股指期货等,长期来看,即使简单的双均线策略也可以获得显著盈利。以上涨为例,当中长期的上涨趋势开始时,短均线会上穿长均线,此时入场往往会获得较大收益。比如下图黄色框中的这笔交易,从底部开始做多,一直到顶部上涨停止才出场。基于此现象,我们希望在tradestation上开发合适的均线策略,并进行组合管理,来得到一个长期可以盈利的策略。然而,当价格处于震荡阶段,策略往往会频繁入场出场,且会开错方向,导致亏损,如下图的绿色框所示。这也是趋势策略亏损的主要来源。

image

为了解决该问题,最简单的思路是对入场和出场信号进行过滤。将短均线穿过长均线就开仓改成短均线穿过长均线且达到一定距离再开仓。

策略的逻辑如下,使用日级别数据:

  • 定义长均线MAL = 过去L个交易日收盘价平均值,
  • 定义短均线MAS = 过去S个交易日收盘价平均值。
  • 定义D= (MAS / MAL -1) * 100。

为了解决该问题,最简单的思路是对入场和出场信号进行过滤。将短均线穿过长均线就开仓改成短均线穿过长均线且达到一定距离再开仓。

策略的逻辑如下,使用日级别数据:

T日收盘时,计算D,如果D > Thd,T+1日开盘平空(如果有空头)做多;D < -Thd,T+1日开盘平多(如果有多头)做空。

策略总共三个参数,长短均线长度L,S,阈值Thd。策略的代码在附件。

2、 回测与优化

先创建一个工作区,然后创建一个图表分析,输入期货代码,这里我们输入沪银合约主连代码AG.SQ。接下来的展示也是在AG.SQ上的结果。根据策略的逻辑,设置bar的时间周期为“日”。时间框架选择“自定义”,回测该策略在ag上过去10年的表现,因此选择“10年前”。

image
image

接下来插入策略,选中策略后点击确认,设置策略属性。这里有两个细节需要注意。

image
image

Ⅰ. 通用属性里“引用的最大图条数量”这一项,需要根据策略参数进行设置,否则很容易报错。

image

Ⅱ. 要根据策略逻辑选择是否勾选“启动图条内交易”。鉴于此处我们的操作是发出交易信号后在下个bar以市价成交,因此此处不勾选。这一点不清楚也没关系,后续文章会有单独一个部分讲解这一点。

image

查看策略性能报告:

image
image

显然该结果比较糟糕。不过这可能是我们没有选择合适的参数。因此对其优化:

设置好后点击优化(鼠标单击需要优化的参数,然后点击优化,输入参数范围和步长,全都设置好后点击优化):

image
image

TS的参数优化功能非常强大且迅速。同样在“数据”中查看优化报告:

image
image

从中挑出我们感兴趣的参数组,看其结果。优化后所选参数组的结果看起来好了很多。

image

3、 组合管理

马科维茨认为,分散化是金融投资唯一免费的午餐。通过对不同期货品种收盘价的相关性做简单分析,可以发现处于同一产业链或性质相近的品种,走势相关性往往很高,而这些品种与其它类别的品种走势相关性非常低。比如:

1、贵金属类的黄金,白银期货,走势相关性相当高(相关系数在0.7 以上),但其与股指期货的走势相关性非常低(相关系数在-0.1~~0.1)。

2、与钢铁相关的铁矿石,焦炭,螺纹钢期货走势相关性非常高,但它们与贵金属,股指期货,农产品等的相关性很低。

将资金在不同类别的品种上进行配置,可以有效地降低净值曲线的波动。

让我们构建这样的一个简单投资组合,从两个大类的期货中,分别选出两个品种:

  • 贵金属中的黄金,白银期货。
  • 黑色系中的焦炭,铁矿期货;

组合中总共有4 个品种。每个品种进行等权配置,即每个品种的合约价值都相等。这里仅以2 个大类四个品种的等权配置来说明分散化带来的好处。实际操作中会选择更多的品种,比如加入股指期货,农产品,橡胶,镍等其它工业品。也会使用更精细的权重配置方式,比如波动率等权,风险平价。

我们为每个品种选择4 组参数:

  • 沪银期货:(15, 10, 0.6), (20, 10, 0)
  • 黄金期货:(15, 10, 0.6), (20, 10, 0)
  • 焦炭期货:(15, 10, 0.6), (20, 10, 0)
  • 铁矿石期货:(15, 10, 0.6), (20, 10, 0)

参数组格式是(L, S, diffrthd)。L, S 分别代表长均线,短均线的均线长度。Thd 代表阈值。

每个品种配置的总的合约价值相同。品种内部各个参数按照1:1 配置。简单起见,我们为每个品种每组参数配置的合约总价值100w,因此每个品种的合约总价值为200w,四个品种的合约总价值800w。

打开组合管理大师,为每一组参数都创建一个策略,总共2 个策略。为每个策略设置固定的买入金额100w,设置初始资金为1000w,设置回测起止时间是2010.1.1—2021.1.1。

关于“组合管理大师”中,该部分的设置见附件。

得到回测结果:

image

这里的夏普比率很低,因为我们的回测设置并没有使用杠杆,导致收益率偏低,从而夏普比率偏低。

我们还可以看两个策略(两组不同参数)的结果:

image

不同品种的结果:

image

由此结果可以看出,赚钱全靠黑色。

但我们设置的四个品种,参数都相同,这种设置方式合适吗?毕竟黑色系每天波动2个点以上非常正常,而黄金则很少超过1个点。

我们根据遍历筛选出参数,即使步长比较大,且我们选择的参数组也远非回测结果里最优的参数组,即使如此策略是否存在过拟合呢?

第一个问题,不同人有不同的看法。第二个问题,我们可以使用TS的另一个工具得到答案,下一篇我们谈论这个。

更新于 2021年7月20日

Article Attachments

这篇文章对您有帮助吗?

相关的话题

留言评论