如何寻找优质交易模型的核心方法

对于相对成熟的交易者来说,程序化交易的切入点往往会选择先把自己的现有系统客观化、程序化。而对于新手或现有系统难以量化的交易者,程序化的切入点则是从模仿一些简单而经典的模型入手。之后便是测试环节,那么测试什么?

几乎每个常见平台上都能看到参数优化相关的界面。在国内,“参数优化”可能是大家普遍关心且存在争议的问题。许多新人会对此困惑,因为不少程序化交易专家反对参数优化。最初听到的是过度拟合的弊端,这一道理容易接受——对某段时期拟合得越充分,在另一段时期背离的可能性也越大,因为总是只对某些特征进行拟合,注定不完全,所以未来背离是必然的。然而后来听到的是“反对参数优化”,这似乎有些狭隘。是反对软件上的这个按钮功能吗?既然那么多软件公司设置此功能,自然有其价值。是反对试图优化的思路吗?但如果不优化,参数如何确定?“靠常识”?常识从何而来?新人又能拥有多少常识?

举个例子,比如溴化N-乙基吡啶的性状,别说颜色、比重这些参数,就连室温下是固体还是液体都未必清楚。除非专门从事室温离子液体研究,否则很难知晓。程序化交易并非像吃喝拉撒那样人人都有经验,对新人而言是全新事物,对老手来说也仍有未解之处。因此,靠常识定参数违背了人脑的认知规律。新人脑袋空空,难以拍出常识。这未必有益于程序化交易,因为纵然对某段时期的过度拟合会在另一时期产生过大背离,但若接受这种背离,就一定能换来未来的优异结果吗?恐怕随意定出的参数,这段不拟合,那段也不拟合,尚未等到优异业绩,本金就已大打折扣,又如何让交易者拥有长期坚持的信念?关注某组参数的具体表现细节,理解其未来可能的含义,才是硬道理。

我认为,参数往往是系统的特征值,主要度量市场波动性。参数测试的核心目的是寻找有意义的特征值,衡量标准是参数的依附稳定性、历史稳定性,以及跨周期和跨品种普适性。举个实例说明这些抽象概念。理论前提是市场波动性是各种频率波的合成结果。有物理基础的人知道,合成波可通过分解为基波和谐波来描述,分别分析每个正弦波的频率、幅值和相位,便能重现原始合成波。这些频率、幅值、相位在程序化交易中体现为参数,若找到此类参数,自然具有高稳定性和普适性。分解波的来源多样复杂,甚至难以穷尽(因市场本质非线性),但仍可观察到部分线性特征对应的谐波。

比如工业品,需求通常稳步增长,且多样性意味着需求端多变,但供给端相对简单。在经济周期或政策周期下,常出现投资高峰,投资高峰在若干时间后变成投产高峰,导致一波下跌。从原油矿产这样的原材料到PTA这样的中间工业品,都很明显,且国内政府的宏观调控加剧了投资不均衡。许多品种天然存在淡旺季,如服装有春夏和秋冬两季。每年时装发布会后,大规模量产开始,布匹采购增加,向上游传导至纱和棉的采购。

另几个方向包括涤纶短纤、涤纶长丝、氨纶、腈纶、黏胶纤维等的采购增加,再向上是聚酯工厂采购PTA和MEG,PTA工厂采购冰醋酸和PX,芳烃工厂采购石脑油……这些采购时间不可能悬殊太大(受库存成本制约),也不可能完全均分每天(考虑物流规模经济),因此注定体现为一波波采购高峰。所有产业都存在采购周期,只是强弱不同。这些周期受物流效率、信息系统、管理方式影响。当前电子化网络化时代,通常为2个月;但在网络化之前(十年前),公路铁路覆盖不全,路况差,仓储采购周期更长,约3-6个月;再往前,两百年前马车帆船时代,一次越洋跨国贸易(如从南洋群岛运香料到鹿特丹)需一年以上,采购量可用两三年。

总之,这个周期由经济发展水平决定,是一个中期波,非线性特征较弱,较易发现和度量,变化缓慢,没有五年难以看出明显变化,且一旦变化便难回退。另一个常叠加的波是心理预期波动。采购方希望逢低采购,销售方期望囤积居奇待价而沽,因此采购方倾向于将相位提前,销售方则希望将波变成方波——高位时间越长越好。每年供求关系和宏观环境有差异,加上各方习惯以前两年节奏为参照,所以价格高点虽有一定范围,却必然不同。例如前一年铜高点出现在4月且只有明显高点,采购方会想3月底采购以更便宜,销售方看到询价增加便提价,结果3月形成高点,4月因提前采购而量缩下跌。

若该品种当年紧缺,提前采购会导致提前用完,加上踏空需求,4月下跌后可能还有5月补库存的集中采购,春季便出现两个高点。这是心理预期起落对原始采购周期的叠加所致。心理预期有节奏,但易变且自反馈,非线性强。但这还不是最终行情节奏,因为还有许多大小因素导致的波动叠加,最后还有无时无刻的背景噪音……

以上例子说明,找到几个有稳定性和普适性的参数值是有可能的,值具有现实意义,但现实已被反复扭曲,直接观察现实猜想有意义的参数值难以实现。参数测试却可帮助找到这些值,通过稳定性和普适性检测确定,大体上与猜想的现实意义值同数量级。参数测试还能显示这些有意义的参数普适性和稳定性程度,如有些跨品种普适,但跨周期无等比例关系;有些历史稳定性尚可,却无法跨品种或周期;甚至有些历史稳定性不足,但历史反应与关联特征有单一联动规律。参数测试还能让我们知道哪些参数虽无确定现实意义,但依附于动态变量(如品种特异性、季节特异性),这成为自适应参数法和动态参数表的基础;即使坚持半自动道路,也为执行层面的主观筛选提供依据,避免不知从何入手或随手乱改的窘状。真正难琢磨的是那些稳定性差、普适性差、关联性无单一方向的参数,不过也没关系,打个折即可。

我们可以定性判断模型是否为正收益模型。若年化收益率30%,最大回撤20%,但内部两个参数无法找到现实意义和变化规律,则未来可能不赚钱,但毕竟有盈利历史,坚持下去有望保本。若可变成日内短线模型,风险可控,炒手续费也合适。即使不看重此点,也可作为平滑其他策略业绩波动的组合对象。也许有朝一日会发现参数的现实意义,然后更大胆使用。先留在策略原型库中。程序化交易者每天琢磨什么?很大程度上是研究这个。

除此之外,时间花在逻辑测试上。逻辑测试比参数测试更重要,改进效果更好。参数测试考验硬件,逻辑测试考验设计者对市场的理解和创造力,但两者不可分。有些参数取极值时,等于屏蔽某个逻辑。

逻辑测试的切入点是对行情微观结构分析和逻辑本身的微观结构分析,前者关键是捕捉,LMAX外汇平台后者是拆分。

捕捉有主动和被动之分,现有平台和数理知识难以做到主动捕捉。个人电脑配现有平台无法运行过于繁复的算法,否则会死机。举个例子说明主动捕捉:人机语音对话通过每个音节的声学规律主动捕捉识别特征完成词汇还原,波形分析的模式识别专家最适合。被动捕捉是笨办法,却未必走弯路,只是常让测试者觉得不可思议,结果不确定性时而令人崩溃时而惊喜。被动捕捉用逻辑和参数量取特征,逻辑和参数基本限定,行情微观结构确定,只有找到高数学期望的稳定值,才算成功量取到有现实意义的特征。好比闭眼拿杯子捞鱼,捞到一条是一条,没捞到不知杯中有何。

我身上有现成例子:有些品种常有多重顶底,但不规则,识别复杂K线组合形态不易,简单逻辑难以实现。一开始想放弃,但后来研究参数控制模型行为时,分拆优化后发现简单逻辑可实现部分捕捉,而这一参数最初引入源于无关思路。由此体会到世界的混沌性:试图精确设定达成精确结果往往失败,但模糊设定有别于盲目试错,对形态和逻辑的认识仍是前提,软件平台或外部工具(如Excel或MATLAB)的测试是获得认识的手段,“优化”测试只是设定收益或回撤等导向的数学期望测试。

逻辑拆分是原则,应在设计时尽可能让每个环节可单独测量,屏蔽其他参数与逻辑关联,仅在确定现实意义后使用,以便后续排列组合和跨逻辑组合。

逻辑测试方向包括查漏补缺和排列组合。查漏补缺着眼于极端行情处理,如停板、连续停板、巨大隔夜跳空,尤其分钟线策略。若非外汇,行情连续性常被周期性破坏,给短周期策略测试有效性带来考验。排列组合是对能理解和不能理解的逻辑反复尝试,无底。有许多似是而非或似非而是的东西。经验表明拍脑袋设计不可行,找到实战可用策略无捷径,只能不断尝试。本想程序化能解放人脑于信息海洋,结果却从基本面信息海洋扎进程序化逻辑海洋,也是体力活。