数据科学在场景化数据资产建设中的应用与实践

在Fintech时代,以数据科学思维和方法对数据进行结构变换、提炼降维、数值计算和转化映射等工程化处理,使数据与业务场景更紧密地融合起来成为具有应用价值的资产,从而基于数据资产构建能有效解决业务痛点的算法模型,形成数据、算法协同驱动的人工智能科技产品及智能化的分析咨询服务,是当前金融科技公司提升业务创新能力、增强市场竞争力的重要路径。

对于数金公司这类提供金融信息服务的数字金融企业来说,打造自有、专属的数据资产更加具有重要的战略意义。作为数据资产建设的切入点,构建面向金融市场的动态因子库有助于夯实公司智能化产品的数据基础,增强公司数据资产的厚度。在此基础上通过不断积累与扩充,形成真正意义上不断滚动增值、持续更新、具有应用价值的数据资产将极大地提升公司金融信息服务的深度与广度。在智能金融时代,以场景数据的工程化作为着力点,把算法原理与数据科学紧密结合起来,推动数据资产建设工作,将有力地促进数金在金融科技领域的探索、创新与突破。

智能化动态因子库建设是算法金融实验室在人工智能选股领域进行探索、尝试过程中完成的一项数据资产建设工作,通过这项工作,我们积累形成了从零开始的建设数据资产的一套方法、体系和经验,为进一步研发各类基于机器学习思想构建算法产品树立了范例。本文以此项数据资产的建设为背景,重点介绍数据资产建设的架构设计、关键问题及解决方案等。

一、数据资产开发的重要性

在整个人工智能算法产品、服务的研发过程中,数据资产开发所涉及的数据导入、清洗占很大的工作量,之所以要投入那么大的人力资源在基础数据资产的开发是因为对于AI技术驱动的人工智能产品或者服务来说,如何从具体场景服务端切入,进行数据工程化处理及围绕场景变化进行数据的深加工,从而开发出高质量、适用性强的数据资产,往往是这类产品研发的基石。

基于特定场景的数据资产开发与在此基础上算法模型的智能优化是智能化算法产品研发的两个重要方面,这两者是相互作用、相互影响的,但相互影响、相互作用的过程有所不同。

在完全信息博弈的框架下,比如围棋这种确定性优化问题,算法模型的预研比数据资产开发本身显得更基础,重要,更优算法可以更快收敛,避免了全局搜索。

图1:全息博弈(如围棋)

但在不完全信息博弈框架下,比如金融市场投资、特别是智能化选股领域,数据资产的开发比算法模型的选择要显得更基础、更重要。金融市场充满不确定性,没有高质量的数据资产及精细的特征工程作支撑,精巧的算法模型效果也会大打折扣。

图2:不完全信息博弈(如证券投资)

正因为在金融市场投资领域数据资产的开发建设对建模效果至关重要,我们以动态因子库建设作为金融市场数据资产开发的切入点,构建并不断完善属于数金公司的因子库数据资产,为数金的智能化选股产品提供稳定、高质量的数据支持,使算法模型更大程度地发挥其在资产分析、预测上的精确性,持续优化产品的性能表现,提升对客户的服务质量。

表1:数据资产的字典截图示例(部分)

二、动态因子库数据资产建设的基本情况

对于数金公司来说,动态因子库这一数据资产的建设基本上是从零开始进行开发,其工作量十分巨大,建设过程中往往会遇到各类问题,可谓困难重重,不仅需要用到数据库编程技术,还涉及大量的金融市场业务逻辑及投资思维,更重要的是只有具备将这两者结合起来的解决问题的能力才能推进这项工作。

算法金融实验室的金融建模团队从零开始,本着精益求精、准确无误的精神,依据金融市场业务逻辑及投资思维,基于金融市场数据对各种算法进行训练,分析、比较不同方案下模型的表现效果,判断因子的动态有效性,不断构建并形成新的有价值因子,并编译成结构化的脚本经过持续试错调整,终于建成一套基本完整的智能化选股动态因子库体系。该项数据资产覆盖基础字段、个股行情、财务指标、技术指标、异常状态、指数行情、行业数据等维度,共有近百个因子,未来还在不断的迭代升级与持续的弹性扩容中。

动态因子库建设是一项硕大的工程,其中架构设计最为关键。我们的算法工程师和金融建模工程师一道经过大量试错,巧妙设计了多层次、模块化的架构,实现了全量与增量一体化的批量更新机制,有效解决了动态因子库这类数据资产在更新机制设计上的难题,具体更新架构及机制如图3所示:

图3:动态因子库数据资产的架构及更新机制

架构固然很重要,但是光有框架是远远不够的。确定更新架构之后,就是更新数据的读取,这一过程中同样面临诸多的挑战。在算法设计及模型开发初期,可以从量化API终端直接读取因子表结构数据,但这种方式无法满足人工智选股模型对大规模数据训练及基础数据资产建设的需求,因此我们决定采购底层数据库,打破读取数据的限制。然而由于关系型数据库通常采用压缩的存储方式,并非直接的表结构,需要通过解压缩来转变数据读取的方式。一般而言,压缩率越高,解压缩难度越大,比如个股行情表相对比较容易,而个股行业、ST状态、指数成分股等高压缩比的表格展开难度很大,需要编写高度定制化的表结构转换函数,同时还需兼顾增量更新的兼容性。

表2:ST状态表(解压前)

表3:ST状态表(解压后)

三、动态因子库数据资产建设中的关键问题及解决方案

因子库建设的源数据来自于外购数据库,其本身各种数据表内生逻辑的不一致也大大增加了数据处理的难度。

一是数据项含义存有差异的问题,比如涨跌停状态表包含大量非交易日,需要单独剔除,而上市/ST状态表和指数/行业成分股表的起止日期含义不同,其中上市/ST状态不包含结束日期,指数/行业成分股则包括结束日期,这些细节在数据库厂商提供的数据字典里没有备注,需要进行多表交叉验证后才能确认。另外由于指数成分股的数量通常是固定的,需要破例采用固定列的表结构,每一列包含当日成分股代码,考虑到某些交易日成分股退市会导致成分股个数少于总列数,这时需要引入缺失值填充的容错机制。

二是财务类数据表的数据更新方式的问题。基础数据库中财务表的内在逻辑最为复杂,往期的财报信息更正会将过去的存量数据覆盖,导致增量更新的结果和重新全量提取的数据集从根源上无法保持一致,需要编写智能算法在抓取最新数据的同时自动过滤掉往前更正的数据,最大程度消除存量数据中的窥视偏差,同时避免增量数据遗漏,提高整体数据的质量。

三是各类数据表表格式的批量转换问题。为了使因子库具有通用性和开源性,兼顾此后的跨语言、跨平台的多策略模型的研发便利度,需要对所有因子表进行批量格式转换,将原来带时间序列的table类型转成开源语言可读的矩阵类型。由于转换后丢失了时间信息,需要对起始日期不同的表进行统一缺失值补足,这些批处理是通过编写高级宏语言得到实现。

四、动态因子库数据资产的持续运维支持

为了使作为我司重要数据资产的动态因子库正常高效的更新运转,算法实验室金融建模工程师们经过大量的编译测试、日志分析和数据集严格匹对,已将因子库建设脚本中的bug全部修复,每日增量更新正常,补充新的因子不会影响原有的庞大存量数据;这也说明我们数据库脚本的兼容性已大大提高,在不同版本的mysql下均能正常运行且结果一致。

由于外部数据推送存在不稳定的可能性,且数据库服务器的性能也可能出现问题,我们编写了脚本对因子库进行持续监控,并做好突发问题的应急预案准备,一旦检测到数据推送中断立即采取补救措施,全力保证因子库正常更新运行,避免其对产品开发测试及线上运营的不利影响。

动态因子库数据资产的建设是一项不断持续的重点工程。未来我们会在因子维度上作进一步拓展,一方面补充高频财务数据和舆情非结构化文本;另一方面引入特征工程的算法来智能提取特征,通过GPU的算力自动构建海量因子并进行非线性因果关系检验,筛选生成动态有效因子。不断丰富的动态因子库能够为不同时期的不同算法模型提供更多有效的输入,提高各类机器学习模型(包括深度学习模型)对股票市场的灵敏度和自适应性。

 

作者:兴业数金算法金融实验室

分享到: