CCI指标参数设置的量化研究

2024年3月6日 770点热度 0人点赞 0条评论

熟悉股票技术分析的朋友应该对CCI指标并不陌生,该指标通过衡量标的价格的常态波动范围指示其是否处于超买超卖,是一个比较适合波段操作的技术指标。本文运用该指标构建一套量化交易系统,并通过我自己写的回测工具对该指标参数的设置技巧进行研究,欢迎交流指正。

一、CCI指标的定义

1. 首先计算Typical Price:

Typical Price = (最高价 + 最低价 + 收盘价) / 3

2. 计算平均数:

Typical Price MA = 平均数(Typical Price, N)

3. 计算平均绝对偏差(MAD):

MAD = 平均数( |Typical Price - Typical Price MA|, N)

4. 计算CCI值:

CCI = (Typical Price - Typical Price MA) / (0.015 * MAD)

通过计算公式我们可以了解到CCI指标的内在含义:即通过三价平均值的乖离率与其乖离率均值的比值定义趋势的转向可能性。计算公式中的0.015是一个对计算结果的缩放系数。

二、构建基于CCI指标的交易系统

CCI指标最常用的使用方式是通过CCI指标判断超买超卖状态,通常情况下,CCI指标低于-100认为进入超卖区间,CCI指标高于100认为进入超买区间,基于此,我们可以构建一套波段交易系统,通过CCI指标捕捉阶段超买超卖进行交易,与通常的交易方法不同,我们使用两条CCI线进行交易,称之为a_cci,b_cci。由a_cci捕捉超卖买入信号,b_cci捕捉超买卖出信号,加入止损条件后的交易策略如下:

双CCI交易策略:
买入条件:    ACCI由-150以下回升至-150以上
卖出条件:    BCCI由 150以上下穿至150以下    最新收盘价 < 买入价格 * 0.95 (5个点止损)
策略参数:    a_cci: 买入CCI线周期    b_cci: 卖出CCI线周期

三、基于双CCI指标交易策略的回测

该交易系统的参数有两个,一个是监控买入信号的CCI指标周期,一个是监控卖出信号CCI指标的周期,我们将这两个参数的取值范围限定在5-120,通过蒙特卡洛模拟随机生成2000组参数组合,并应用在交易策略上,记录策略执行效果,本次回测我们选取上证指数ETF(510210)为交易标的,历史K线1000根,50000元为初始资金。回测结果如下(相关的投资图表在文末提供链接,方便观察):

以累计收益率降序排列,ACCI周期14,BCCI周期22取得了最佳回报47.21%,年化收益率10.61%,年化波动率13.71%,胜率64%,看起来还不错,我们看一下对应的图表表现是什么样的:

观察K线图上的买入及卖出信号标记可以看到,该参数组合在捕捉波段行情时确实发挥了作用,下面是资产收益率曲线:

资产峰值发生在2021年底,累计收益率58.35%,经历了3个月21.66%的回撤后,在2022年4月份开始稳步回升,总体波动相对平稳。下面是利润金额分布:

通过利润散点图分布可以观察到,因为设置了5个点的保护性止损,这套参数配置在胜率较高的同时,也具备一定水平的盈亏比优势。以下是相关统计表格:

四、系统参数与收益的相关性研究

通过上述图表,我们可以看到这套交易系统参数配置合理的话,可以取得相对不错的投资收益,那么CCI指标的参数如何设置是所谓的合理,是我们接下来研究的重点,我们看一下参数与收益的分布关系:

买入信号CCI参数与年化收益率分布
卖出信号CCI参数与年化收益率分布

上面的图表是策略参数与策略年化使用率之间的散点图,从中我们可以看到,策略的收益率较高的参数配置分布在买入信号CCI周期20以下,卖出信号CCI周期60以下这个区间内,相较于卖出CCI指标周期,策略收益率对买入CCI指标周期设置更为敏感。

那么是不是说我们按照这个参数配置方向进行交易策略的参数配置就一定能取得理想的投资收益呢?答案是否定的,因为未来的走势是未知的,这套参数拟合了历史走势,表现优秀,但并不能说明在未来也能取得同样的效果,我们进行策略研究的目的,是找到策略因子与行情结构的匹配关系,通过对未来趋势方向的预判进行相应的策略参数预先配置。

以整个样本期为一个整体观察,上证指数ETF样本期的走势结构处于一个较大的区间震荡,不是持续不断地创新低阴跌,这也是这套交易系统两个参数设置相差不多的原因。通过对多个标的的回测与观察,我对该交易系统的参数设置原则进行了总结如下。

五、CCI指标参数设置的最佳方案(基于参数与收益的整体分布情况):

  1. CCI指标的周期与交易信号触发的频率相关,周期设置越短,对近期价格越敏感,信号触发的越频繁。
  2. 对于处于中枢震荡形态的走势结构,买入与卖出CCI的指标周期相差不大,有时候甚至用同一个周期参数即可取得不错的信号效果。(比如上证指数ETF)
  3. 对于处于震荡下跌趋势中走势结构,买入CCI指标周期往往大于卖出CCI指标周期,可以取得不错的胜率与回报。(比如军工ETF,买入CCI周期设置在60-80这个区间,卖出CCI周期设置在7或者8,在过去四年中,可以取得73%的交易胜率,年化8%-9%的投资回报)
  4. 对于处于趋势上涨,健康回调的走势结构,卖出CCI指标周期往往大于买入CCI指标周期,可以取得不错的胜率与回报。(比如红利ETF,买入CCI周期设置在5,卖出CCI周期设置在25-40这个区间,过去四年中,竟然可以取得80%多的交易胜率与31%左右的年化回报!)

总体而言,CCI周期越长捕捉到的信号趋势越长,而设置多少周期的指标合理,并没有一个绝对标准,需要我们对历史数据进行大量的回测以捕捉特征,这也是做量化分析的优势所在。

六、相关图表

上证指数ETF 1000根K线 买入CCI周期14,卖出CCI周期22 ,年化收益率10.61%,交易胜率63.64% 图表(宽幅震荡):

https://qthinker.net/charts/strategy/doublecci/双CCI策略-上证指数ETF 回测图表.html

红利ETF 1000根K线 买入CCI周期5,卖出CCI周期35 ,年化收益率32.13%,交易胜率88.46% 图表(震荡抬升):

https://qthinker.net/charts/strategy/doublecci/双CCI策略-红利ETF 回测图表.html

军工ETF 1000根K线 买入CCI周期74,卖出CCI周期8 ,年化收益率9.55%,交易胜率72.73% 图表(请注意图表中的交易信号,集中在2022年初开始的震荡下跌走势中,捕捉下跌趋势中的反弹信号)

https://qthinker.net/charts/strategy/doublecci/双CCI策略-军工ETF 回测图表.html

QThinker

前地产从业者,假装是个程序员,热爱编程与交易 自研QThinker量化交易框架

文章评论