利用资金曲线选择策略加减仓时机

 

数量技术宅团队在CSDN学院推出了量化投资系列课程

欢迎有兴趣系统学习量化投资的同学,点击下方链接报名:

量化投资速成营(入门课程)

Python股票量化投资

Python期货量化投资

Python数字货币量化投资

C++语言CTP期货交易系统开发

数字货币JavaScript语言量化交易系统开发


每个策略都有其相适应的行情,如果某一段行情符合策略的逻辑,那么策略就会在这段行情大赚。但是,就如同硬币有正反面,策略在不适应的行情期,也会出现亏损的情况。优秀的策略,在不适应行情期能够做到小亏或者打平,而对于不太理想的策略,在不适应行情期有可能会大亏。第二类策略,是我们在测试过程中或是实盘交易过程中需要尽可能避免的,哪怕已经实盘,也需要在大幅度亏损后的第一时间停止交易,仔细分析交易逻辑。在这篇文章中,我们重点想要讨论的是,第一类策略的仓位选择时机。

回撤,所有策略逃不开的话题

纵使第一类策略很优秀,也有一定的概率遇到一段较长时间的不符合行情(历史没有出现,不代表未来不会出现),即使策略在不适应行情只是小亏,但是很多次小亏累积起来,也会逐步增加账户的亏损,从而对量化策略的执行者造成很大的心理压力,容易无法坚持执行策略。下图就是一个典型的例子,特别是在两段黄色框线的区域。

利用资金曲线选择策略加减仓时机_第1张图片

如果看到上图,你可能不会觉得黄色框线区域在执行上有多困难,但是假如策略刚开发完成时,资金曲线下图是这样的。你感觉策略很不错了,准备好资金,放上实盘开始交易。

利用资金曲线选择策略加减仓时机_第2张图片 

但是运气不太好,刚开始交易,就遇到了策略的困难时期,不适应的行情造成策略一直在亏损,磨损资金中,甚至破了此前策略的最大回撤(MDD),此时伴随而来的是对策略的怀疑:我是否在策略开发过程中过度拟合?是否策略已经在当前的市场失效?又是否我只是运气不好?随着回撤的时间增加、回撤的幅度增大,就越有可能在丧失信心后修改/停止策略。

利用资金曲线选择策略加减仓时机_第3张图片

就在我们修改/停止策略后,将策略丢弃在一旁,过了一段时间又想起了测试了一把,发现策略居然又创了新高。于是,这样一个优秀的策略,不仅在实盘中没有赚到钱,反而还亏损了。

利用资金曲线选择策略加减仓时机_第4张图片 

如果对策略仓位进行一定程度上正确的择时加减,可以减小这种压力和停止策略的遗憾。我们知道,策略表现的好坏,最直观的反应在策略的资金曲线上。以最典型的突破型趋势策略为例,这个大类的策略,一旦遇到震荡行情,资金曲线往往都会走平或者回撤。此时,可以加入一个简单的依据资金曲线择时的逻辑,即在资金曲线走坏时对策略进行减仓,而当资金曲线上升时加仓,或是恢复原本减仓的仓位。(当然也有例外,对于一些高夏普极其稳定的高频策略,如果对自己的策略很有信心,同时也有闲置资金的前提下,可以在回撤时进一步加码。)

资金曲线均线加减仓

本文重点讨论的,是当策略资金曲线走坏,而执行者又没有信心的情况,该如何去做?此时,应当对策略进行减仓,建仓后最直观的好处是:资金曲线的最大回撤比率会适当降低。那么,如何来量化策略的加仓、减仓时机呢,最简单的玩法,对资金曲线再拉一条移动平均线,当策略跌破均线,进行减仓,而当策略回到新高,进行加仓。

利用资金曲线选择策略加减仓时机_第5张图片 

如何在程序中加入此类对策略加减仓的逻辑,我们以multicharts(mc)为例,有两种方法:

方法一:使用entryprice,exitprice,计算出每次交易的利润,再根据利润数值计算均值,进行仓位的加减码计算。这个方法的优点是,计算出的净利润可以真实的反应策略原本固定仓位时的利润率,而不会受到仓位变动的影响,因此可以精确的计算出策略加仓、减仓的时机。而相应的缺点是,相对于原始策略逻辑,需要做较大的代码上的改动。

方法二:使用mc内置的netprofit变量,直接做均线运算。该方法的优点是程序实现比较简单,基本上不需要改动原先的主要策略逻辑,只需要加上过滤条件即可,而缺点就与方法一的优点相对应,netprofit幅度会直接受到此前策略加减仓位的影响,造成加减仓位的时机的延迟。

由于方法二的实现较为简便,我们使用方法二,对一个具体的策略进行加减仓,逻辑很简单:在该策略中计算netprofit变量的均线,当netprofit大于均线,仓位是2份,而当netprofit小于均线,仓位是1份。与此同时,我们还有一个对照组,即不论何时,仓位都是2份。一起来看一下两者的对比绩效。(图1减码、图2未减码)

利用资金曲线选择策略加减仓时机_第6张图片 

利用资金曲线选择策略加减仓时机_第7张图片 

可以看到,两者方法的净利润相差很小,但是减仓绩效的亏大回撤,相比较不减码降低了,从原先的27万多,降低到了22万多,也证实了我们此前的猜想。

资金曲线高低点加减仓

除了均线加减仓法,我们还可以把资金曲线当作一个特殊的品种,同样采用顺势的操作:当资金曲线突破N周期高点时,开启策略或者对策略进行加仓;当资金曲线突破N周期低点时,关闭策略或者对策略进行减仓。当然,这个N周期的N参数不能太小,否则就会陷于不断加仓减仓,无故损耗手续费的不利境地中。

同样举一个例子:当资金曲线跌破最近50笔交易累积利润的最小值,则停止交易,而当资金曲线回到50笔交易累积利润的最大值(即资金曲线破前高),则开启交易。先来看资金曲线的对比。

利用资金曲线选择策略加减仓时机_第8张图片 

利用资金曲线选择策略加减仓时机_第9张图片 

图1是做了加减仓的资金曲线,图2是原始策略的资金曲线,图1的曲线很显著的在策略回撤期,停止了策略,并在策略利润回复时重新开启策略。

对比策略具体绩效参数,也可以看到,与均线加减仓类似,高低点加减仓,同样能够在不显著影响策略净利润的前提下,降低策略的最大回撤值。

利用资金曲线选择策略加减仓时机_第10张图片 

利用资金曲线选择策略加减仓时机_第11张图片 

写在最后

通过资金曲线对策略进行加减仓,在大多数情况下,是需要牺牲掉一些策略本身的利润,来换取策略最大回撤的降低,因为本质上和直接应用到金融资产的趋势策略信号一样,每次的进仓、出仓,都需要在确认趋势之后才能进行,会有一定的延后性。

在技术宅看来,尽管有减小利润的弊端,资金曲线加减仓,还是一个值得尝试的方法,因为它可以避免两种情况:

第一,对于优秀的策略,遇到文章开头出现暂时回撤的情况,哪怕使用减仓方式停止了策略,后续策略资金曲线创了新高,也会按照同样的方式加仓回来,这样我们就不会错过真正优秀的策略。

第二,对于回撤美如画,实盘战五渣的策略,我们也不怕,如果策略一直回撤,那我们也只会亏损开始一段的资金,随后只要策略不创新高,就不会承担后续的损失。

一句话总结:资金曲线加减码,相当于给策略加了一道保险。

   往期干货分享推荐阅读

数字货币中短线策略(数据+回测+实盘)

量化投资对于数据源、回测、实盘平台的选择

数字货币稳定币对网格做市策略

万物皆可秒——淘宝秒杀Python脚本,扫货618,备战双11!

数字货币资金费策略

数字货币无风险收益率又双叒叕扩大了!

分享一个年化15%以上的无风险套利机会

【数量技术宅|交易系统开发系列分享】网格交易系统开发

通过深度学习股价截面数据分析和预测股票价格

剖析一个数字货币高频策略

数字货币交易信号实时预警推送(含群聊)

Omega System Trading and Development Club内部分享策略Easylanguage源码

量化交易如何选择云服务器,如何在本地远程开发与调试云服务器程序

一个真实数据集的完整机器学习解决方案(下)

一个真实数据集的完整机器学习解决方案(上)

如何使用交易开拓者(TB)开发数字货币策略

股指期货高频数据机器学习预测

如何使用TradingView(TV)回测数字货币交易策略

如何投资股票型基金?什么时间买?买什么?

【数量技术宅|量化投资策略系列分享】基于指数移动平均的股指期货交易策略

AMA指标原作者Perry Kaufman 100+套交易策略源码分享

【 数量技术宅 | 期权系列分享】期权策略的“独孤九剑”

如何获取免费的数字货币历史数据

【数量技术宅|金融数据分析系列分享】套利策略的价差序列计算,恐怕没有你想的那么简单

【数量技术宅|量化投资策略系列分享】成熟交易者期货持仓跟随策略

【数量技术宅|量化投资策略系列分享】多周期共振交易策略

【数量技术宅|金融数据分析系列分享】为什么中证500(IC)是最适合长期做多的指数

  大宗商品现货数据不好拿?商品季节性难跟踪?技术宅带你Python爬虫一键解决没烦恼

【数量技术宅|金融数据分析系列分享】如何正确抄底商品期货、大宗商品

【数量技术宅|量化投资策略系列分享】股指期货IF分钟波动率统计策略

【数量技术宅 | Python爬虫系列分享】实时监控股市重大公告的Python爬虫

 

你可能感兴趣的:(量化交易,量化,人工智能)