2023年以来华为、谷歌等基于深度学习的天气预报大模型的出现,打破了人们对天气预报只能建立在复杂的物理、统计学基础的数值预报基础上的认知,而如今指导各行业和人们生活的数值天气预报更是经过上百年的系统性科学发展。虽然,目前这些天气大模型的基础数据还要部分依赖数值模型,但为深度学习能够产生精确天气预报已经做出了不小的贡献,并且模型已经投入到实际应用当中。举一反三,如果类似的模型架构也能应用到对银行间质押式回购资金面预测当中效果将会如何呢。
带着这种好奇和疑问,我找到了华为盘古天气(Pangu-Weather)发表在Nature上的论文—Accurate medium-range global weather forecasting with 3D neural networks并且以此为线索找到了论文的开源伪代码,在其论文和伪代码中,作者展示了模型的详细架构和工作原理。虽然开源的只是关于模型架构的简单代码,但在引用部分,作者详细指出其最基础的参考既是微软的Swin Tranformer——一种用于图像识别的移动窗口Transfromer模型。由于Swin模型同样是以论文的形式发表,且同样的,为了模型架构被大家理解,模型的所有基础代码作者全部做了开源。所以,我很顺利的集齐了这次举一反三所需要的所有跟模型架构有关的所有信息。(在这里要感谢下论文和开源这两大人类的精妙发明,简直就是在促进人类知识传播方面的天花板)
接下来就是对模型代码的逐行解析。简而言之,Swin模型通过对图片进行分块的多头注意力以及移动切割后再分块的多头自注意机智,已经使得其在图像识别领域有了不小的优势,同时节省了计算资源。因为Swin模型对像素块的切割处理以及通过移动窗口来构建切割块之间的联系的方式,盘古天气模型将这一特性应用到了以经纬度和高度为分割的3D地球气象模型中,并且通过继承Swin模型中的相对位置编码特性构建了在3D空间的相对位置编码,从而让模型在信息流中嵌入了不同经纬度的相对位置关系,以此将数据放入到encoder和decoder的流程中,并最终直接得到预报数值。
借鉴于此,对比银行间资金面相关的影响数据,如果将同业存单的不同信用等级和期限、市场行情的不同期限和不同行情指标(加权价格、当日最高最低价等)、央行公开市场操作的不同指标、分机构类型资金日内行情数据等一系列2D平面数据进行叠加,那么在初始状态即可得到一张能够描述银行间资金面影响因素的当日状态数据图,通过对此数据图应用Swin Transformer架构,对传入的各类型数据进行绝对位置编码以明确不同类型数据的不同位置信息,并改变最终返回的数据维度,最终得到我想要的预测银行间质押式回购R001-R1M这5个期限,最高成交、最低成交、加权平均价格、前加权平均价格这四个市场行情价格,组成的2D数据组。这个就是我这个模型的大致架构,我将其取名为IB Financial Liquidity Transformer(翻译成中文既是银行间资金面流动性模型),简称就是IBFL了。
下面是简要的模型结构图,涉及到参数和运算部分全部用的椭圆表示,有学习参数的部分用紫色进行了标注(其实一开始的想法是直接开源,无奈最终的结果太差,也就没有开源的必要了)
在采用近两年的数据将2D数据做96dim,同时encoder做2 layer,down sample之前做4 depth,之后做12 depth之后,(最后模型参数量为12,109,216个)。得到了对比真实世界数据差值最优的结果。如下表所示:
可以说如果用这样的结果来指导投资,不能说完全不能用,只能说用了可能就直接亏上天。虽然说一开始的想法是一次性把这个事情给做完,做到从0到1再到100,但是现在回想起来未免有点过于乐观。记得在吴恩达的深度学习课上,其所提出的一个评估深度学习最终模型效果的观点,就是模型最后的结果是否能达到人类所能达到的最好水平。如果以这个标准,在预测未来市场的加权平均价格方面,毕竟最智慧的人类也不能做到对第二天的市场加权价格手拿把掐,那么一个几乎是照搬过来的模型所得到的结果是这样的也不奇怪了。其次,模型无论是在数据量、各个指标的位置关系编码、不同指标在初始输入时embeding阶段的处理方面,我觉得都还有很大的改进空间。特别是受限于现在本身数据的不足,仔细甄别数据的有用程度便是提升模型本身训练可用数据的关键。所以,下一步的迭代,预计会从提取最优模型参数的自注意力权重,观察哪些权重占比更高从而改进数据输入开始。无论如何,感谢自己有毅力坚持从0做到了0.5,希望自己接下来能够继续保持求知欲,永远迭代!