一、前言
最近股市大动荡,不忍直视,比如中证500指数此时的市盈率PE和市净率PB分位值都到了最低,纷纷创出了历史上最低估值,胸腰部股票尚且如此,其他的就更一言难尽了。
幸好其他两个场子还坚挺,只要有波动就还有赚钱效应,不管多空,有趋势就能有价差,只怕一潭死水,不过也是越来越内卷。
行情不好,就要静心多学习,等到下一轮抓住机会。五一假期也要来了,闲暇之余,多翻翻多看看,说不定有啥好的idea(虽然打脸的比较多),期待还是要有的,万一实现了呢。
但是现在的量化书籍、课程、培训等相关资料也很多,让人眼花缭乱、目不暇接,多到就如同看到了当年罗胖贩卖的焦虑,前几天群里的小伙伴还私信问:做量化到底需要多高深的数学?
一开始我还没反应过来,怎么突然出现这种问题,细问之后才发现,原来这位兄dei最近想鼓捣一下量化,可能是看的资料比较“高大上”吧,说自己已经工作好几年了,学习没有以前学生时代那么旺盛和专注了,看到拉格朗日对偶、泰勒展开、奇异值分解那些就头疼,实在是看不下去了,想知道是不是学不好这些就做不好量化。
虽然我能看到的量化圈子可能比萌新们大一些,但也没有上帝视角,通览全局,无法回答“做量化到底需要多高深的数学?”这种问题,只能说自己的经历思考和一孔之见。
这和人生当中某些道理很相似,人容易焦虑,很大程度就是因为自己经常去看自己没有的东西,看不到已经拥有的东西。这位兄dei没有的东西是“高深的数学”,看不到自己拥有的东西是“浅显的数学”,如果“浅显的数学”就能帮他开发出好的量化策略,那这位兄dei应该就不会“焦虑”了吧。
那懂“浅显的数学”就能做好量化了吗?
我的回答:能也不能?
说“能”的原因是因为,我真的看过很多量化大神的实盘策略,涉及到的数学都没有超过高中范畴;说“不能”的原因是,成功的原因并不在数学本身,而在于宽客将数学理论与交易实际相结合的能力,也就是要把“数学”用到刀刃上。
打个比方,很多人都看过电影《三个白痴》,其中有个名场面,学长让男主角兰彻脱掉裤子(别想歪~原因请看原片),兰彻不从,躲进了宿舍,学长扬言再不出来就在门口嘘嘘,兰彻就把电线接在铁勺子上,把铁勺子夹在木尺上,接着开电闸,学长后来就直接嘘了上去,那酸爽~~~室友就评价道:盐水可以作为电的导体,初中生都知道,我们只学了课本,他却学以致用!
道理大家都懂(无论高深还是浅显),关键是要学以致用。今天就拿之前量化大神的两个策略出来溜溜,它们的共同点就是都涉及到一个基础的数学概念,高中就学习过的,那就是“导数”,看看大神是怎么把“导数”玩出花儿来。
二、日内波动极值策略
第一个要介绍的策略就是『日内波动极值策略』,它起源于广发金工在11年前发布的研报《基于日内波动极值的股指期货趋势跟随系统》,最初是用在股指期货的量化交易上。
对于交易者而言,有波动才有价差(无论是向上还是向下),有价差才有低买高卖,才有投资收益。正如原文中所言,投机人只有处于波动的市场中才有机会博取高额收益,平静无奇的市场只能是一潭死水,若市场波动很小,更极端一点,在一条近乎直线走势的市场中,无论何种策略、无论采用何种模型,都是无法赚钱的,神仙亦乏术。
那我们如何拥抱波动,抓取波段呢?其中一个方法就是利用日内波动极值的思想实现趋势跟随。
随着市场的单边趋势运行,价格波动极值会逐步被突破,而这种突破又是上下两个方向均可的。如果价格向上突破极值点,那么我们认为随后的价格波动继续向上的可能是偏大的,同理如果价格向下突破极值点,那么我们认为随后的价格波动继续向下的可能会偏大,从而形成趋势跟随策略。价格起伏就像波浪,后面的价格突破了前浪的高点,很可能孕育着一次比前浪更汹涌的后浪。
接着来定义和计算价格波动极值,原文中是基于日内行情的价格进行计算,具体来讲,日内某个时点的极值,就是自当日开盘以来截止至当前时点,市场创出的最高值或者最低值,前者称为日内极高值,后者称为日内极低值。
这就形成了一个很朴素的量化策略,首先选取某一信号观察频率周期(如5分钟K线),当价格向上穿越日内波动极高值时发出买入信号,当价格向下穿越极低值时发出卖出信号,关于“日内极值计算细节”、“开仓后如何来跟踪持有的头寸”、“何时平仓离场的问题”、“回测费率设置”等方面,请详见研报原文。研报发布时披露的回测交易资金曲线如下所示。
当时这个日内波动极值策略只是应用在了股指期货品种上,后来被某私募量化大神发现该策略的挖掘潜力,觉得极值的确定还可以利用高中数学课学过的“导数”,将改进后的策略分别移植到了商品期货和股票上,并有偿地进行了小范围的分享。
众所周知,若一元函数可导,则在极大值或极小值处,导数为0。使用求导的方式确定波动极值,进而衡量K线的形态和走势,还是利用之前的策略的大体思想进行策略构建,不过细节上有所变化。
百度百科中关于“极值求导”的说明:函数在其整个定义域内可能有许多极大值或极小值,而且某个极大值不一定大于某个极小值。函数的极值通过其一阶和二阶导数来确定。对于一元可微函数f(x),它在某点x0有极值的充分必要条件是f(x)在x0的某邻域上一阶可导,在x0处二阶可导,且f'(X0)=0,f"(x0)≠0,那么:
1)若f"(x0)<0,则f在x0取得极大值;
2)若f"(x0)>0,则f在x0取得极小值。
私募量化大神改进后的商品期货策略盈亏曲线:
私募量化大神改进后的股票策略盈亏曲线:
三、基于低阶多项式拟合的日内趋势策略
这第二个策略就是『基于低阶多项式拟合的日内趋势策略』,这个日内策略与第一个策略师出同门,它的策略思想出自于广发金工的另外一篇研报《基于低阶多项式拟合的股指期货趋势交易(LPTT)策略》
传统金融理论认为在高效率市场中,股票、期货等金融产品的价格变化服从马尔科夫随机过程,即具有无记忆特征,也就谈不上价格变动的趋势。但是在市场效率不高的情况下,由于信息流动存在不平衡性,股票或期货的价格变动常常会形成单边趋势,此时若能够顺势交易,则有可能获得有效的趋势价差收益。
那如何捕捉这个价格趋势呢?该研报中的交易策略采用的理论基础是离散数据的多项式拟合。
别被这么专业的名词唬住了,其实啊,只要高中数学课认真上过,我一说你就明白了。
研报标题中提到的“低阶多项式拟合”,其实指的就是一阶多项式拟合和二阶多项式拟合,一阶多项式拟合指的就是把离散的价格序列拟合成线性函数y1=a·x+b,二阶多项式拟合就是拟合成二次函数y2=a·x^2+b·x+c。看吧,高中数学课上都学过吧~
若对一阶线性函数求一阶导数,也就是平常所说的斜率,若导数dy/dt>0,说明价格正处于上升趋势;若导数dy/dt<0,则为下跌趋势。
若对二阶线性函数求二阶导数,若二阶导数d2y/dt2>0,价格曲线为凹(开口向上);若二阶导数d2y/dt2<0,价格曲线为凸(开口向下)。
做个类比,价格曲线就像汽车行走的距离轨迹,对距离(位移)求一阶导数就是速度,速度大于0说明朝正方向开,小于0说明朝反方向开。求二阶导数就是加速度,假设此时汽车为正向行驶,加速度大于0说明在汽车速度还在增加的状态当中,在不断加速,反之则是处在减速的过程当中。
因此,结合线性函数的一阶导数和二次函数的二阶导数,可以把价格序列划分为如下四种状态。
朴素的策略思想这就跟着来了,假设线性函数的一阶导数和二次函数的二阶导数分别为g1和g2,当g1*g2>0时,说明出现了加速上涨或加速下跌的情况,便可以根据价格方向顺势开仓。
当g1正负号发生改变时,说明价格趋势改变,该种情况需要进行平仓。
当g2正负号发生改变时,说明于上涨或下跌趋势由加速变为减速,趋势有结束迹象,该种情况也需要进行平仓。
还有就是在尾盘进行强制平仓,日内策略不持仓过夜。
在研报当中,交易标的是股指期货,回测的累计收益率曲线如下所示。
还是这位私募量化大神,将其研报中的策略精髓移植到商品期货和股票之上,实现了交易开拓者TB、文华财经、金字塔、MultiCharts和TradeStation多个版本的源码,移植到商品期货多品种上的回测累计收益率曲线如下所示。
四、总结
从上面介绍的两个量化策略看出,核心思路就是要抓到大价差和大波段,第一个策略关键是找到极值点,第二个策略关键是做一、二阶拟合,看上去手段形式不一样,实质上都可以用“导数”来解决。
“导数”只是高中数学当中的一个基础概念,不算高深,但策略能成功,靠的是宽客对数学概念学以致用的能力,以上两个策略例子只是给大伙儿做个启发,起到抛砖引玉的作用。据我路边社小道不靠谱消息透露,类似于“导数”用于量化策略的数学概念还有:偏度、峰度、协方差......
最后补充说明一下,本文不是说“高深的数学”就不需要了,而是鼓励萌新们从自身知识水平出发,日拱一卒,小步快进,把学习曲线从陡峭降为平坦,不再焦虑。
Be quant,have fun!
PS:本文『日内波动极值策略』和『基于低阶多项式拟合的日内趋势策略』源码已分享至『量化藏经阁』和『量化藏经阁Max』社群内,群友请在社群量化兵器库原路径中自取。
参考文献:
罗军,广发证券,2011,《基于日内波动极值的股指期货趋势跟随系统》
罗军,广发证券,2011,《基于低阶多项式拟合的股指期货趋势交易(LPTT)策略》
quantkoala,知乎,2021,《后浪“拍死”前浪的日内波动极值策略(盈亏比1.92)》
quantkoala,知乎,2021,《基于低阶多项式拟合的日内趋势策略》
END
如果对本文有疑惑,或是想聊聊
亦或是围观朋友圈当点赞之交
点我,让我们一路同行
吃瓜吐槽写代码
(微信号:iquantman)
添加好友后,私信『666』
送你一些量化小福利
继续阅读
阅读原文