期货量化交易中量化交易系统程序是如何开发的
我在中简单介绍了一下期货量化交易的系统概念,在这一篇中我来说一下期货量化交易的系统程序的开发,有人说,做一个期货交易,还需要会程序开发吗?这个就太麻烦了吧,其实我们所说的系统开发,不是说我们一定要会软件编程,说的是我们在期货量化交易中的系统程序。这个系统不一定只是说软件系统化,这是一个泛指的概念。
策略思想的确定
一个成功的量化交易系统的开发流程一定要是适当的。如何寻找到一成成功的量化交易策略是构建量化交易系统的基础。
不论是基本面还是技术面,都可以使用量化的方法进行分析,进而得出量化交易策略。如,基本面上,国内生产总值增幅,货币发行量增幅等,都可以用量化方法进行分析和描述;在技术面上,移动平均线,指数平滑移动平均线都是理化策略思想来源。
传统经典理论
很多量化投资策略思想都来源于传统的经典投资理论,例如经典的商品期货技术分析主要内容有技术分析的理论基础、道氏理论、图表简介、趋势的基本概念、主要反转形态、持续形态、交易量和持仓兴趣、长期图表和商品指数、移动平均线、摆动指数和相反意见、日内点数图、三点转向和优化点数图、艾略特波浪理论、时间周期等。这些经典理论有的有具体指标和具体的应用理论,有的只有理论,需要根据理论生成具体应用指标,来完成策略的测试检验,所以经典投资理论可以通过量化的思路,将理论中的具体逻辑量化成指标或者事件形成交易信号,通过信号的优化测试来实现经典理论的投资理念,这个方式可以有效地实现经典理论,同时也能由原来的经典理论衍生出周边的投资方式,它是量化策略发展初期的主流模式。
逻辑推理
逻辑推理的策略思想大部分来自宏观基本面信息,其量化策略思路是通过对宏观信息的量化处理,整理出符合宏观基本面信息的量化模型。比较典型的量化策略例子有行业轮动量化策略、市场情绪轮动量化策略、上下游供需关系量化策略等。这类策略思路的来源非常广泛,数据一般没有标准化,比较难形成标准。现在许多对冲型基金都由类似的思路生成量化策略产品。
经验总结
经验总结是量化策略思想的另一个主要来源。在有量化策略交易之前,市场上已经存在了大批有经验的投资人士,其中不乏长期稳定收益的佼佼者,所以,他们对市场的看法和交易思路成了量化略开发人员的模仿对象,经验交易者也愿意把一些他们觉得相对固化下来、可获得稳定收益的交易策略通过量化的方式最后能利用机器自动交易,交易着只做好监控就行了。这样可大大减少交易时所耗的精力。在此前提下批和经验交易者合作的量化策略团队出现了。他们通过和经验丰富的交易者不断的沟通和讨论,将经验交易者丰富的经验以量化的思路整理到量化策略中。这类量化策略也得到了市场的普遍认可,不过这类量化策略有个缺陷,就是许多经验和盘面的整体感觉有关,很难将其量化下来,一般通过量化的其他方式来控制由于无法量化某个要素而带来的风险。
数据挖掘
数据挖掘技术,通过对高维度的数据进行分析整理,把量化思路提升到一个应用层次,将一些隐藏在高维度数据中的规律和信息挖掘出来,最终形成量化交易策略。大数据时代产生了很多数据挖掘技术,将数据挖掘技术应用在量化策略里面是顺理成章的事情。目前,应用的数据挖掘模型主要有分类模型、关联模型、顺序模型、类模型等,数据挖掘方法主要有神经网络、决策树、联机分析处理、数据可视化等分类模型的主要功能是根据数据的属性将数据分派到不同的组中。在实际应用过程中,分类模型可以分析分组中数据的各种属性,并找出数据的属性模型,确定哪些数据模型属于哪些组。这样就可以利用这些模型来分析已有的数据,并预测新数据将属于哪个组。分类模型在量化投资中应用的实例很多,例如,可以将上市公司的资产质量分为好、一般和较差三种类型,并以此分析这三种类型上市公司的各种属性,特别是行业地位、盈利能力、负债情况等属性,找岀决定它们分类的关键属性及相互关系,然后就可以根据这些关键属性对每一个预期的上市公司进行分析,以便决定预期该上市公司属于哪一种类型关联模型主要描述一组数据项目的密切度或关系,关系或规则是用些最小置信度级别来描述的,置信度级别度量了关联规则的强度。关联模型在量化投资中的一个典型例子是行业轮动分析,即通过挖掘数据派生关联规则,利用此规则可以了解投资者在股市投资的轮动行为。例如,当石油化工类商品出现上涨的时候,可能会同时拉动煤炭类商品上涨,因为这两类商品同属能源商品。如果石油价格上涨,则会使煤炭的价格跟随上涨,这说明这两类商品具有很强的关联度,存在同涨同跌的现象。因此,在投资活动中,如果发现石油化工类商品开始上涨,则根据关联模型,可以买入煤炭类商品。
顺序模型主要用于分析数据中的某类与时间相关的数据,并发现某化交易一时间段内数据的相关处理模型。例如,通过数据分析发现,如果某个股票的筹码在某段时间内持续集中,也就是说,股东人数在不断减少,则意味着股份有向大投资者集中的趋势,说明在未来一段时间,该股票可能出现上涨,或者有超越大盘的表现,那么,投资者就可以监控并跟踪这种类型的股票,进行相应的投资交易,以使在未来一段时间在获得绝对收益或者超额收益。顺序模型可以看成是一种特定的关联模型,它在关联模型中增加了时间属性聚类模型是按照某种相近程度的度量方法将用户数据分成互不相同的一些分组。聚类即由一系列相近数据组成的分组的集合,每一个分组中的数据相近,不同分组之间的数据相差较大。其核心就是将某些明显的相近程度测量方法转换成定量测试方法。当要分析的数据缺乏描述信息,或者是无法组成任何分类模式时,就可以采用聚类模型。采用此模型,系统可以根据部分数据发现规律,找出对全体数据的描述。例如,通过对相关期货合约(如同一品种不同到期月份)价格波动的统计,出合约不同价格偏离程度出现的概率,并根据这一概率进行交易(套利交易的策略思想之一);或者是通过寻找行情出现大幅波动前行情波动的共同规律,并在这一规律再现时参与交易(统计套利的策略思想之);或者是通过总结重大经济数据发布时行情的表现,在新的重大数据发布时,根据统计的规律进行交易(事件驱动策略的思想之一)。
机器学习
机器学习是研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构,使之不断改善自身的性能。机器学习系统通过利用提供的信息,修改已有的知识库,来提高学习系统的执行部分完成任务的效率,执行部分根据知识库完成分析任务,同时把获得的信息反馈给机器学习部分。在量化策略研究的应用中,环境、知识库和执行部分围绕的核心工作是量化策略硏究分析,将已有的筛选好的较优秀的量化策略库作为机器学习的基础知识库,从当前正在发生的金融环境信息中接受信息,由执行部分做出判断,给出策略操作信息,记录策略操作的效果,同时反馈给量化策略学习部分用来修改完善已有的策略基础知识库。通过一段时间的学习适应,可由机器给出策略操作信号、并完成策略操作。这个过程相当于用机器学习代替经验总结,由于这个过程对人来说相当于黑箱,大部分采用机器学习的量化团队,都只将其应用到量化策略分析中的局部分析模块,将来有可能会出随着大数据时代的到来,会有越来越多的量化策略思想被挖掘并现完全由机器学习来实现的量化策略应用。
所需数据的获取
量化交易策略的构建首先必须具备比较完备的数据库。这个数据库需要含有量化策略涉及的所有数据,主要包括基本面财务数据、交易数据,以及与行业、市场、板块相关的指标数据等。
量化数据库搭建的步骤如下
首先是收集数据,将收集到的数据进行数据清洗,确保数据的准确性和一致性。以行情数据为例,准确性是指收集到的数据需要进行反复对比确认,定期对收集到的数据进行对比检验,确保策略形成所需要的数据的淮确性。一致性是指策略测试和策略实现的数据需要同源,行情数据从交易所发出到各期货公司,因为期货公司接收服务器的本地时间设置以及接收延时,不同期货公司转发出来的行情数据或多或少会存在不一致的可能,所以在数据库搭建的过程当中就需要将数据的一致性考虑进来,用于策略历史测试和统计的数据最好和将来用于量化交易策略实现的数据保持一致,这样出来的量化策略测试才更可靠。其次是数据库架构的设计。在确保数据准确性和一致性的基础上第一步就需要可以灵活方便地调用整理好的数据,这是最基础的一步,其中涉及数据颗粒度的设计。比如,行情数据、不同周期的行情数据根据不同策略类型,从长周期量化策略需要的月、周、日为周期的行情数据,到短周期量化策略需要的小时、分钟、秒为周期的行情数据,甚至到高频量化策略需要的逐笔成交的行情数据,单从涉及的行情数据来说,量化策略所需要的数据的深度和广度都大大超过传统策略交易的数据范畴,同样,数据库的深度和广度决定了量化策略的丰富程度,调用的灵活方便性决定了量化策略的生产效率。最后是数据库需要集成一些算法函数。这些函数包括简单通用函数、数值分析、统计、数据访问以及金融证券相关等功能,更有些高端的数据库搭建集成了人工智能类算法,比如遗传算法、蚁群算法、支持向量机等,这一部分相对高端,对一般性的金融机构要求偏高。直接的集成到数据库是一个较大的算法工程,有些机构采用外部算法引擎的调用之后返回结果的方式来实现人工智能类算法,但是随着越来越多的数学、物理、计算机方面的人才进入量化策略研究中来,已经有很多机构的数据库集成了这类算法,将简单的数据库提升到量化策略的研究开发平台。
当然,很多并不复杂的量化策略可能只需要一个简单数据库的支持,能够直接读取策略所需数据,确保其准确性就能通过运算来测试量化策略的有效性,但是,随着量化策略的近十年的发展,已经出现了批成熟的第三方量化策略研究开发数据库,完成了上述量化数据库搭建的工作。但这并不意味着所有的量化团队都会直接采用第三方数据库,这与量化团队开发的量化策略的类型极度相关。比如偏向宏观研究的策略,由于其需要的数据类型通常很难标准化,基本上需要量化团队通过外部数据自己整理,再比如高频量化策略所需的高速运行的特性。因为第三方数据无法满足被高速调用的要求,所以就需要开发这类高频策略的团队自建合适的数据库。总之,量化策略数据库的搭建,是根据所开发的策略类型来决定其搭建的复杂程度的。数据库搭建的核心是围绕量化策略思想所需要的数据展开的,一般,随着量化策略的多样性发展需求,数据库需要的数据类型应日益丰富,调用方式也要灵活,还有复杂算法的运算效率都会随着量化策略的多样性而逐渐被提高,这些都是量化策略发展对数据库搭建要求的未来趋势。
量化交易的实现
量化交易的实现至少需要四个模块的支持:数据输入、策略实现、数据输入模块负责引入外部的任何可以作为决策依据的数据,并按交易处理和风险控制。照投资分析和决策的需要,按照固定的格式组织起来,构建成可以支持投资决策的数据集合(数据库)。数据内容包括但不限于场内交易数据、宏观经济数据、供求关系数据、估值数据、分析机构观点数据等。数据库可以来自收集整理、采购等多种渠道,形式也不固定,供需平衡表、K线序列等都是常用的数据库组织方式策略实现模块负责对数据库中数据的运算、判断,最终形成交易指令。这一模块是量化交易的核心,一般无法由第三方提供的服务替代。具体来说,策略实现模块内部又分为策略思想的确立、交易模型的构建、交易模型的检验、交易模型效果的历史回测与外延测试、交易模型上线交易、交易模型一致性评估与效果评估等步骤。在策略实现过程当中,需要特别注意在使用统计学方法时,是否满足了该方法对数据的要求,比如平稳性、样本量等,以免出现假阳性结果。交易处理模块负责交易的组织与交易结果的反馈。此模块的功能可以很简单,比如,交易员根据策略实现的结果使用经纪商提供的下单软件进行交易,又比如定时撤单、追单、价差锁定交易等。对交易处理模块而言,响应速度和准确度是首要要求,实现特异化功能是进阶要求。风险控制模块负责全部量化交易过程的监控和管理,而不是仅仅涉及交易处理模块。在数据输入过程中,风险控制模块需要监督确认数据的完整性和准确性;在策略实现过程中,风险控制模块需要监督确认策略开发的有效性(包括思想的可实现性、数学工具的前提条件是否满足等);在交易处理过程中,风险控制模块需要监督确认交易执行是否符合策略要求,同时是否符合账户层面的风险控制要求,还需要监控市场是否出现了影响策略有效性的重大变化,以及其他应急事件的处理,比如策略实现模块的计算机宕机,风险控制模块需要同步关闭交易处理模块并清空所有持仓。以上四个模块至少应保证风险控制模块是完全独立于其他三个模块运行的,要确保不出现同时失效的情况。每个模块都独立运行,可以提高整个系统的稳定性,但会牺牲一定的交易决策速度,这需要根据策駱实际情况进行权衡取舍。