【导语】没有后悔过的炒股生涯是不完整的。遗憾值是对过去行为序列的后悔程度的度量。遗憾值可以看做是我们从过去的行为发生的错误中学习到的经验。对某种行为的后悔程度越高,往往意味着我们在过去很少选择执行这种动作,与这种行为对应的是这种现象在过去的历史中发生的次数也较多。因此,我们可以根据这种遗憾值来制定未来的执行策略。
【来源】策略思路来自:广发证券研报《虚拟遗憾最小化应用于量化择时与交易》,本文使用了来自研报中的例子和公式方便说明。
【策略思路】
炒股怎么能没有后悔过?
虚拟遗憾是一种对于遗憾程度的量化衡量指标。举例来说,在玩剪刀石头布的游戏时,若甲出石头,乙出布,则甲的效用值显然为-1,乙的效用值为1。当游戏结束时,甲显然会后悔为什么自己没有出布,如果出了布,那么效用值为0,更加后悔为啥没有出剪刀,效用值为1。这个时候我们显然可以定义采取动作A和未采取动作B的遗憾值。
甲出石头,而没有出布的遗憾值=0-(-1)=1
甲出石头,而没有出剪刀的遗憾值=1-(-1)=2
甲出石头,而没有出石头的遗憾值=0-0=0
……
对上述算法进行扩展,就可以得到对应的概率分布的遗憾值,然后根据遗憾值来选择下一轮要选择的策略(出布or石头or剪刀)
最小化遗憾值的方法叫做遗憾匹配,假设此时我们进行了T轮游戏,每次游戏中,我们都可以按照上述算法得到三个动作的遗憾值,将所有T轮游戏中,三个动作的累计遗憾值分别相加,就可以得到每种动作的累计遗憾值。
那么,在第T+1轮,我们可以得到“剪刀”策略的概率为:
从上述的过程中我们可以看出,实际上,下一次的决策完全取决于之前所有轮游戏的“遗憾值”,某种程度上,这是一种模仿人类在进行相关游戏时的决策思路和过程。当然了,实际上这种模拟有点牵强,我想大多数人在玩剪刀石头布的游戏的时候都不会有那么多的“遗憾的感觉”。
现在,将思路转换到指数择时上。
对于日级指数,我们可以简单的将每日行情看做是一轮游戏,这个游戏里只会出现两种情况——涨、跌(对应到石头剪刀布里的石头、剪刀、布)。针对过去一段时间的历史行情,我们可以得到对应的涨跌幅序列(+0.5,-0.13,-0.23,+0.13,+0.69)。那么对应于这个序列,我们就可以分别得到对应于做多和做空的遗憾值。
【实现细节】描述一下本次回测的一些细节。方便各位大大进一步修改、优化。
1.初始化做多动作和做空动作的执行概率为0.45和0.55,研报中给出的初始化是0.5和0.5;设定做多阈值为0.55,当做多执行概率超过0.55时,则执行做多;选定跟踪标的为沪深300指数。
2.获取沪深300指数过去100日的收盘价格;
3.计算100日中每天的涨跌幅;
4.计算当天的虚拟价值,虚拟价值
5.计算当天没有执行做多动作的虚拟遗憾值、没有执行做空动作的虚拟遗憾值,其中v(hTlong)直接以Pt-Pt-1计算。
6.更新累计虚拟遗憾值,在这里,我们给予一个衰减因子k=0.9,作为对于过去的累计虚拟遗憾值的权重。
7.计算当天最新的做多和做空执行概率。
8.每天迭代上述2至8步。
【意义】利用最小遗憾值来进行指数择时,实际上为我们提供了另一种择时思路。首先,这种思路利用的是过去一段时间的历史数据,是包含历史的;其次,这种简单的思路实际上是在每一个决策点(每个交易日)回望过去一段时间做空和做多的发生概率,并考虑到了多空对应的强度。
【结果分析】从回测结果上来看,择时的效果并不是很好。这里必须要指出的是,可能对于研报中策略思想的理解不到位,也存在一些疑问。比如:遗憾值是否应该出现负值?初始化涨跌概率分别为0.5和0.5是不是会导致迭代过程无法有效更新。最小遗憾值总体来说理解起来不难,但是要生成出能够有效择时的策略涉及的细节问题还是相当多。
【优势】
最小遗憾值在每一个决策点选取基于历史得到的最优结果,实际上是使用了局部最优的思想,是一种类贪心的算法,具有内在的逻辑性。且它对择时提出了一种完全不同于其他方法的新思路。
【劣势】
由于最小遗憾值择时实际上依赖的还是过去一段时间的历史数据,因此也存在一定的滞后问题;另外,最小遗憾值在思路实现上其实并不容易完全把握到位,所以要能够精准地达到择时目的还需要很多进一步的研究工作。