上次提到了基于传统的趋势法构建一组基础信号的方法,并做了简单的交易测算。本次计划对方法和测算做一下Review,同时明确接下来基于ADBS(Step2)进行承接时需要计算的数据。
传统的趋势方法(SMA-LMA)采用“短线上升且突破长线买入”,以及“长线下降且短线下穿长线卖出”的方式构成一对买卖信号。
在我的实测中,这种方法效果非常差(不是不好,是很差)。我分析下来,主要的原因在于我使用分钟数据,而书上似乎用的是天数据。长时隙的数据显然噪声会更少一些,可能这个是造成差异的主要原因。但无论如何,在尝试使用不同的周期进行搭配时,基于信号的交易结果仍然差异很大,我觉得这个是不能接受的(不稳定)。
于是我做了一版方案改进。
改进的方案仍然基于短期-长期趋势的变化,但是使用“拟合斜率”作为一个关键计算。
计算:
一句话归纳:依据短线的趋势买入和卖出,只要长线不反对。
短线的K3
10.0 15294
-10.0 13627
-2.0 9497
-1.0 93800.0 93691.0 9184
-3.0 89202.0 8784
-4.0 83773.0 7665
-5.0 68894.0 6489
-6.0 61165.0 5888
-7.0 53886.0 48139.0 45947.0 45838.0 4577
-8.0 4571
-9.0 4268
长线K3
0.0 586041.0 38034
-1.0 35347
-2.0 103082.0 97493.0 1926
-3.0 1598
-4.0 399
-5.0 2604.0 160
-6.0 88
这些K3信号的分析非常关键, K3,我又称之为“冷静时间”。从噪声的角度上看,数据容易出现噪声,形象的可以理解为误报;单个的误报是常见的,连续的误报是少见的。所以统计若果若干个周期(冷静时间),当数据达到一定程度时,就不再认为是误报。如果从信心的角度看,也是类似的。单个的信号信心不足,频繁的发出信号时,信心就充足了。
短线的K3波动会更大,如果降低短线K3的冷静时间,那么订单的交易就会变多;同理,如果提高长线K3的冷静时间,那么订单就会变少。
基于上面的简单统计,我们可以在信号的参数条件与结果之间形成一种类似线性的效果,很容易理解。
以下是几种参数产生的结果。
短周期采取600, 长周期采取2400, 短线K3采取10,长线K3采取0,冷却时间240(一个交易日)。
产生的订单数不算少,在不考虑交易成本的情况下盈亏比达到了1.3。考虑了交易成本后,基本就是1左右。所以我突然在想,过去或许有更多人想研究量化,但是如果不考虑模型,到这一步就止步了:做了额外的劳动,但是不输不赢,感觉是白费劲啊。
当然叠加上模型之后,盈亏比一定会大幅改善(减少订单量,提高成功率),所以即使是这种情况,也是可以盈利的。

既然考虑手续费之后会大幅拉低盈利,那么在“多”与“精”之前,我们可以看看选则更好的交易周期。之前的LK3(长线K3)包含了很多中性空间(只要LK3>0),所以我们进行微调,增加长线信心的阈值为1。
可以看到,即使扣除了交易成本,我们仍然可以达到1.25的盈亏比(体量比上面略有减少,净利1200左右),年化11%(这种策略同时减少了资金占用,所以反而可以提高年化利率)。
考虑上模型增益,年化20%应该是可以达到的。
可以看出来,信号发生的机制只要进行合理的调整(人类逻辑容易理解的变化),就能进入盈利空间。之后就是找到一个合适的基准:既具有基础的赢率,同时又有足够的体量。模型有时候需要更多的候选订单,但是当信号集产生更多订单时又会拉低基础赢率,所以要找到一个(大约)合适的中间点。

当尝试降低SK3(短线信心)时,产生了更多的订单,但不出意外,这些订单的质量更差,在考虑了交易成本之后甚至会亏损。

即使增加LK3的约束,也仅仅是挽回败局。

总体上来说,认为必然盈利的推断过程如下:
模型可以进一步增强效果的推论如下:
还有一种更高阶的组合方法,可以几乎无损的增加投资的效益(有点像倍频)。
其依据是:
按之前的规划,Step2会输出买卖信号

具体来说,Step2要准备若干周期的K1,K2,K3,并且给出一些默认的买卖信号,这些可以在对参数进行进一步实验后给出。
所以分为两步走:
在结构上,Step2至少会使用两个任务通道,以适应多个版本的迭代。
新的ABDS叫apifunc_database_model_ABD_MyQuantBase_Step2Signals
快速建立ABDS的过程:
这几天正好在跌,我就看看这个信号

买入的质量虽然不咋地,但是卖出的时机还是很优秀,避过今天的大跌。

之前1-31逃的慢了点,但还是对的

这两张图体现了LK的作用,如果没有LK的限制,那么就会在3-6~3-9这段时间内买入(因为SK达到10,两次)

上一篇:【Go】cron时间格式